[ruby-core:110015] [Ruby master Feature#19015] Language extension by a heredoc
From:
"estum (Anton (estum))" <noreply@...>
Date:
2022-09-22 23:18:13 UTC
List:
ruby-core #110015
SXNzdWUgIzE5MDE1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgZXN0dW0gKEFudG9uIChlc3R1bSkpLg0K DQoNCldvdywgSSBhbSBub3QgdGhlIG9ubHkgc3VjaCBnZWVrICUpDQpNeSBzb2x1dGlvbiBvZiB0 aGUgc2ltaWxhciBnb2FsIGlzIDcgeW8gYW5kIGl0J2xsIGdvIHRvIHNjaG9vbCBzb29uLg0KDQpg YGANCiQgZ2l0IGxvZyBsaWIvb3Nhc2NyaXB0LnJiDQpjb21taXQgMWYzOWQxZDQyYjQ5OWQxNDI0 YWYxZmE1YTEwOWVjZDZhYjIxOTU2MyAoSEVBRCAtPiBtYXN0ZXIpDQpBdXRob3I6IEFudG9uDQpE YXRlOiAgIFRodSBKdW4gMTEgMDg6NDc6MTIgMjAxNSArMDMwMA0KYGBgDQoNCmBgYCBydWJ5DQoj IEBleGFtcGxlIFNpbXBsZQ0KIyAgIE9zYXNjcmlwdC5uZXcoPDx+U0NQVC5mcmVlemUpLigpDQoj ICAgICBhY3RpdmF0ZSBhcHBsaWNhdGlvbiAiRmluZGVyIg0KIyAgIFNDUFQNCiMNCiMgQGV4YW1w bGUgSlNDIHdpdGggYXJncw0KIyAgICMgVGhlIHNjcmlwdCB0YWtlcyAyIGFyZ3VtZW50czogZGly ZWN0b3J5IHBhdGggJiBpbWFnZSBwYXRoDQojICAgIyB0byBzZXQgYSBmb2xkZXIgaWNvbiB0byB0 aGUgZ2l2ZW4gZGlyZWN0b3J5Lg0KIyAgIHNjcmlwdCA9IE9zYXNjcmlwdC5uZXcoPDwtSlMuZnJl ZXplLCBsYW5nOiAnSmF2YVNjcmlwdCcpDQojICAgICBPYmpDLmltcG9ydCgiQ29jb2EiKTsNCiMg ICAgIGZ1bmN0aW9uIHJ1bihpbnB1dCkgew0KIyAgICAgICB2YXIgdGFyZ2V0X3BhdGggPSBpbnB1 dFswXS50b1N0cmluZygpOw0KIyAgICAgICB2YXIgc291cmNlX2ltYWdlID0gJC5OU0ltYWdlLmFs bG9jLmluaXRXaXRoQ29udGVudHNPZkZpbGUoaW5wdXRbMV0udG9TdHJpbmcoKSk7DQojICAgICAg IHZhciByZXN1bHQgPSAkLk5TV29ya3NwYWNlLnNoYXJlZFdvcmtzcGFjZS5zZXRJY29uRm9yRmls ZU9wdGlvbnMoc291cmNlX2ltYWdlLCB0YXJnZXRfcGF0aCwgMCk7DQojICAgICAgIHJldHVybiB0 YXJnZXRfcGF0aDsNCiMgICAgIH0NCiMgICBKUw0KIyAgIHNjcmlwdC4odGFyZ2V0X2RpciwgZm9s ZGVyX2ljb24pDQpjbGFzcyBPc2FzY3JpcHQNCiAgYXR0cl9hY2Nlc3NvciA6c2NyaXB0DQoNCiAg ZGVmIGluaXRpYWxpemUoc2NyaXB0ID0gbmlsLCBsYW5nOiAiQXBwbGVTY3JpcHQiKQ0KICAgIEBz Y3JpcHQgPSBibG9ja19naXZlbj8gPyB5aWVsZCA6IHNjcmlwdA0KICAgIEBsYW5nID0gbGFuZw0K ICBlbmQNCg0KICBkZWYgY2FsbCgqb3RoZXIpDQogICAgaGFuZGxlX2Vycm9ycyBkbw0KICAgICAg Y21kID0gWyIvdXNyL2Jpbi9lbnYiLCAib3Nhc2NyaXB0IiwgKnBhcmFtcygqb3RoZXIpXQ0KDQog ICAgICBJTy5wb3BlbiBjbWQsICJyKyIsIDIgPT4gJWkoY2hpbGQgb3V0KSBkbyB8aW98DQogICAg ICAgIGlvLndyaXRlIHNjcmlwdA0KICAgICAgICBpby5jbG9zZV93cml0ZQ0KICAgICAgICBpby5y ZWFkbGluZXMNCiAgICAgIGVuZA0KICAgIGVuZA0KICBlbmQNCg0KICBkZWYgcGFyYW1zKCphcmdz KQ0KICAgIFsiLWwiLCBAbGFuZ10udGFwIHsgfGV8IGUuY29uY2F0KGFyZ3MudW5zaGlmdCg/LSkp IHVubGVzcyBhcmdzLmVtcHR5PyB9DQogIGVuZA0KDQogIEVSUk9SX1BBVFRFUk4gPSAvKD88PWV4 ZWN1dGlvbiBlcnJvcjogKSguKz8pKD89JCkvDQogIFVTRVJfQ0FOQ0VMTEVEX1BBVFRFUk4gPSAv dXNlciBjYW5jZWxlZC9pDQogIE5MID0gIlxuIg0KDQogIHByaXZhdGUNCg0KICBkZWYgaGFuZGxl X2Vycm9ycw0KICAgIHlpZWxkKCkuZWFjaF93aXRoX29iamVjdChbXSkgZG8gfGxpbmUsIGJ1ZnwN CiAgICAgIGxpbmUubWF0Y2goRVJST1JfUEFUVEVSTikgeyB8bXwgcmFpc2UgZXJyb3JfZm9yKG1b MF0pLCBtWzBdLCBjYWxsZXIoNCkgfQ0KICAgICAgYnVmIDw8IGxpbmUuc3RyaXANCiAgICBlbmQu am9pbihOTCkNCiAgZW5kDQoNCiAgZGVmIGVycm9yX2Zvcihtc2cpDQogICAgVVNFUl9DQU5DRUxM RURfUEFUVEVSTi50ZXN0Pyhtc2cpID8gVXNlckNhbmNlbGVkIDogRXhlY3V0aW9uRXJyb3INCiAg ZW5kDQoNCiAgY2xhc3MgRXhlY3V0aW9uRXJyb3IgPCBSdW50aW1lRXJyb3INCiAgICBDQVBUVVJF X01TR19BTkRfQ09ERSA9IC8oLis/KSBcKCgtP1xkKz8pXCkkLw0KDQogICAgYXR0cl9yZWFkZXIg OmNvZGUNCg0KICAgIGRlZiBpbml0aWFsaXplKG1zZykNCiAgICAgIG1zZy5tYXRjaChDQVBUVVJF X01TR19BTkRfQ09ERSkgeyB8bXwgbXNnLCBAY29kZSwgKiA9IG0uY2FwdHVyZXMgfQ0KICAgICAg c3VwZXIobXNnKQ0KICAgIGVuZA0KICBlbmQNCg0KICBVc2VyQ2FuY2VsZWQgPSBDbGFzcy5uZXco RXhlY3V0aW9uRXJyb3IpDQplbmQNCmBgYA0KDQpJJ3ZlIHdyb3RlIGl0IHdoZW4gSSd2ZSBrbm93 biB0aGF0IGNvb2wgc3ludGF4IGhvb2sgYXQgdGhlIGZpcnN0IHRpbWUg4oCUIGFuIGFiaWxpdHkg dG8gcGFzcyBvbmx5IHRoZSBvcGVuaW5nIGhlcmVkb2Mgd29yZCBpbiBjbG9zZWQgcGFyZW50aGVz aXMgb24gc2luZ2xlIGxpbmUgYW5kIHlvdSBjYW4gZHVja3R5cGUgaXQgaW5maW5pdGVseS4NCg0K T2gsIGFuZCBJIGp1c3QgY2FsbGVkIGluIG1pbmQgb25lIG1vcmUgdGhpbmcgYWJvdXQgaGVyZWRv YzogdGhlcmUgaXMgc29tZSB0cmlja3kgaGVyZWRvYyBzeW50YXggaW4gY29yZSBzb3VyY2UgZmls ZSBgZm9yd2FyZGFibGUucmJgIHdoaWNoIGJyYWtlcyBteSBicmFpbiB3aGVuIEkgdHJ5IHRvIHVu ZGVyc3RhbmQgaXQ6DQoNCmBgYCBydWJ5DQogICAgaWYgX3ZhbGlkX21ldGhvZD8obWV0aG9kKQ0K ICAgICAgbG9jLCA9IGNhbGxlcl9sb2NhdGlvbnMoMiwxKQ0KICAgICAgcHJlID0gIl8gPSINCiAg ICAgIG1lc2cgPSAiI3tNb2R1bGUgPT09IG9iaiA/IG9iaiA6IG9iai5jbGFzc31cIyN7YWxpfSBh dCAje2xvYy5wYXRofToje2xvYy5saW5lbm99IGZvcndhcmRpbmcgdG8gcHJpdmF0ZSBtZXRob2Qg Ig0KICAgICAgbWV0aG9kX2NhbGwgPSAiI3s8PC0iYmVnaW47In1cbiN7PDwtImVuZDsiLmNob21w fSINCiAgICAgICAgYmVnaW47DQogICAgICAgICAgdW5sZXNzIGRlZmluZWQ/IF8uI3ttZXRob2R9 DQogICAgICAgICAgICA6Oktlcm5lbC53YXJuICN7bWVzZy5kdW1wfSJcI3tfLmNsYXNzfSInIyN7 bWV0aG9kfScsIHVwbGV2ZWw6IDENCiAgICAgICAgICAgIF8je21ldGhvZF9jYWxsfQ0KICAgICAg ICAgIGVsc2UNCiAgICAgICAgICAgIF8uI3ttZXRob2R9KCphcmdzLCAmYmxvY2spDQogICAgICAg ICAgZW5kDQogICAgICAgIGVuZDsNCiAgICBlbmQNCg0KICAgIF9jb21waWxlX21ldGhvZCgiI3s8 PC0iYmVnaW47In1cbiN7PDwtImVuZDsifSIsIF9fRklMRV9fLCBfX0xJTkVfXysxKQ0KICAgIGJl Z2luOw0KICAgICAgcHJvYyBkbw0KICAgICAgICBkZWYgI3thbGl9KCphcmdzLCAmYmxvY2spDQog ICAgICAgICAgI3twcmV9DQogICAgICAgICAgYmVnaW4NCiAgICAgICAgICAgICN7YWNjZXNzb3J9 DQogICAgICAgICAgZW5kI3ttZXRob2RfY2FsbH0NCiAgICAgICAgZW5kDQogICAgICBlbmQNCiAg ICBlbmQ7DQpgYGANCg0KUHJldHR5IGNyeXB0aWMsIGlzbid0IGl0Pw0KDQotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMxOTAxNTogTGFuZ3VhZ2UgZXh0 ZW5zaW9uIGJ5IGEgaGVyZWRvYw0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE5 MDE1I2NoYW5nZS05OTI2Ng0KDQoqIEF1dGhvcjoga28xIChLb2ljaGkgU2FzYWRhKQ0KKiBTdGF0 dXM6IE9wZW4NCiogUHJpb3JpdHk6IE5vcm1hbA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KVGhpcyBwcm9wb3NlIG5ldyBoZXJlZG9jIGV4dGVuc2lvbiB3aXRoIGA8 PCFMQU5HYCBsaWtlDQoNCmBgYHJ1YnkNCmRvYyA9IDw8IUxBTkcNCiAgIyBkZXNjcmlwdGlvbiB3 cml0dGVuIGluIGxhbmcgTEFORw0KICBmb28gYmFyDQpMQU5HDQpgYGANCg0KYW5kIGl0IGlzIHRy YW5zbGF0ZWQgdG86DQoNCmBgYHJ1YnkNCmRvYyA9IGhlcmVkb2NfZXh0ZW5zaW9uX0xBTkcoaGVy ZWRvY190ZXh0LCBiaW5kaW5nKQ0KYGBgDQoNCiMjIEV4YW1wbGUNCg0KYGBgcnVieQ0KcmVxdWly ZSAnZXJiJw0KDQpkZWYgaGVyZWRvY19leHRlbnNpb25fZXJiIHN0ciwgYg0KICBFUkIubmV3KHN0 cikucnVuKGIpDQplbmQNCg0KbmFtZSA9ICdrbzEnDQoNCmh0bWwgPSA8PCFlcmINCjxkaXY+SGVs bG8gPCU9IG5hbWUgJT48L2Rpdj4NCmVyYg0KDQpwdXRzIGh0bWwgIz0+IDxkaXY+SGVsbG8ga28x PC9kaXY+DQpgYGANCg0KIyMgQmFja2dyb3VuZCAvIGNvbnNpZGVyYXRpb25zDQoNCiogU29tZXRp bWVzIHdlIHdyaXRlIFJ1Ynkgc3ludGF4IHN0cmluZyB3aXRoIGA8PFJVQllgIGFuZCB0aGlzIHBy b3Bvc2FsIGluc3BpcmVkIGJ5IGl0Lg0KKiBpdCBpcyBzaW1pbGFyIHRvIHNoZWJhbmcgKGAjIUxB TkdgIGluIHNoZWxsKQ0KKiBbRWxpeGlyJ3MgY3VzdG9tIHNpZ2lsXShodHRwczovL2VsaXhpci1s YW5nLm9yZy9nZXR0aW5nLXN0YXJ0ZWQvc2lnaWxzLmh0bWwpIHRyYW5zbGF0ZXMgYH51KC4uLilg IHRyYW5zbGF0ZXMgdG8gYHNpZ2lsX3UoLi4uKWAuIFRoaXMgaXMgd2h5IGl0IHRyYW5zbGF0ZWQg dG8gYGhlcmVkb2NfZXh0ZW5zaW9uX0xBTkcoLi4uKWAgcHJpdmF0ZSBtZXRob2QgY2FsbC4NCiog SmF2YVNjcmlwdCBoYXMgSlNYIGJ1dCBJIGRvbid0IHRoaW5rIGl0IGlzIGZpdCB0byB0aGUgUnVi eSBsYW5ndWFnZS4NCiogSGVyZWRvYyBpcyBSdWJ5J3MgY2hhb3MgcGFydCBhbmQgYWxyZWFkeSBj b25mdXNpbmcgYSBsb3QuIEFkZGl0aW9uYWwgY2hhb3MgZG9lc24ndCBtYXR0ZXIuDQoqIGA8PCFm b29gIGlzIHZhbGlkIHN5bnRheCBidXQgbm93IEkgZG9uJ3QgdGhpbmsgaXQgaXMgbm90IHVzZWQu IGdlbSBjb2Rlc2VhcmNoIGRvZXNuJ3QgZmluZCB0aGUgdXNhZ2UuDQoqIFNvcnJ5IEkgY291bGRu J3Qgd2FpdCAxc3QvQXByLg0KDQojIyBJbXBsZW1lbnRhdGlvbg0KDQpJIGF0dGFjaGVkIHRoZSBl eHBlcmltZW50YWwgaW1wbGVtZW50YXRpb24gd2hpY2ggb25seSBzdXBwb3J0cyBgZXJiYCAoYmVj YXVzZSBJIGNvdWxkbid0IGZpbmQgaG93IHRvIGdldCBkZWxpbWl0ZXIgdG8gZGV0ZXJtaW5lIGEg bWV0aG9kIG5hbWUgOnApLg0KDQoNCi0tLUZpbGVzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCmhlcmVkb2NfZXh0ZW5zaW9uLnBhdGNoICgyLjcgS0IpDQoNCg0KLS0gDQpodHRwczov L2J1Z3MucnVieS1sYW5nLm9yZy8NCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVx dWVzdEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVi eS1sYW5nLm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==