[ruby-core:122533] [Ruby Feature#21435] Kernel#optional as a conditional #then
From:
"zverok (Victor Shepelev) via ruby-core" <ruby-core@...>
Date:
2025-06-14 14:39:07 UTC
List:
ruby-core #122533
SXNzdWUgIzIxNDM1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgenZlcm9rIChWaWN0b3IgU2hlcGVsZXYp Lg0KDQoNCkBBbGV4YW5kZXIuU2Vua28gSSBkb24ndCB0aGluayBteSBvcGluaW9uIHdlaWdodHMg bXVjaCBoZXJlLCBidXQgaGVyZSBpdCBpcywgbmV2ZXJ0aGVsZXNzLg0KDQpXaGVuIHdyaXRpbmcg aW4gImNoYWluaW5nIiBzdHlsZSAod2hpY2ggSSBrbm93IGlzIG5vdCBldmVyeWJvZHkncyBmYXZv cml0ZSksICJkbyB0aGlzIHRyYW5zZm9ybWF0aW9uL25leHQgc3RlcCBjb25kaXRpb25hbGx5IiBp cyBpbmRlZWQgYSBmcmVxdWVudCB0aGluZyB0aGF0IGNvbWVzIHRvIG1pbmQuDQoNClRoZXJlIGFy ZSB0d28gY2FzZXM6IGEpIHRoZSBjb25kaXRpb24gZGVwZW5kcyBvbiB0aGUgYHNlbGZgICh0aGUg Y3VycmVudCBzdGVwIG9mIHRoZSBjaGFpbikgYW5kIGIpIHRoZSBjb25kaXRpb24gZG9lc24ndCBk ZXBlbmQgb24gaXQuDQoNCkZvciB0aGUgbGF0dGVyLCBJIHdvdWxkJ3ZlIGxpa2VkICh0aG91Z2gg SSBkb24ndCBmZWVsIHN0cm9uZ2x5IGVub3VnaCB0byBwcm9wb3NlIGl0KSBzb21ldGhpbmcgbGlr ZSBgdGhlbl9pZmA6DQoNCmBgYHJ1YnkNCmRlZiBzYXZlKGRhdGEsIHBhdGgsIGNvbXByZXNzOiB0 cnVlKQ0KICBkYXRhDQogICAgLmRvX3NvbWV0aGluZw0KICAgIC5kb19zb21ldGhpbmdfZWxzZQ0K ICAgIC50b19qc29uDQogICAgLnRoZW5faWYoY29tcHJlc3MpIHsgQ29tcHJlc3Npb24uY2FsbChp dCkgfSAjIHNraXBwZWQganVzdCByZXR1cm5pbmcgc2VsZiBpZiBjb25kaXRpb24gaXMgZmFsc2UN CiAgICAudGhlbiB7IEZpbGUud3JpdGUocGF0aCwgaXQpIH0NCmVuZA0KYGBgDQoNCkZvciBhIGNh c2Ugd2hlbiB0aGUgc3RlcCBkZXBlbmRzIG9uIGBzZWxmYCBpbiB0aGF0IHN0ZXAsIEkgZG9uJ3Qg aGF2ZSBhbiBpZGVhIG9mIGEgZ29vZCBzeW50YXgsIFRCSC4gTWF5YmUgc29tZXRoaW5nIGxpa2Ug dGhpcyAodGhvdWdoIHB1cmVseSB0aGVvcmV0aWNhbCwgSSB3b3VsZG4ndCByZWFsbHkgd2FudCB0 byBhZGQgbW9yZSBsYW1iZGFzIHRvIHRoZSBjb2RlIHRoaXMgd2F5LCBib3RoIGZvciAidG9vIG11 Y2ggcHVuY3R1YXRpb24iIGFuZCBwZXJmb3JtYW5jZSBjb25jZXJucyk6DQoNCmBgYHJ1YnkNCiAg ZGF0YQ0KICAgIC5kb19zb21ldGhpbmcNCiAgICAuZG9fc29tZXRoaW5nX2Vsc2UNCiAgICAudG9f anNvbg0KICAgIC50aGVuX2lmKC0+IHsgaXQuc2l6ZSA+IExJTUlUIH0pIHsgQ29tcHJlc3Npb24u Y2FsbChpdCkgfQ0KICAgIC50aGVuIHsgRmlsZS53cml0ZShwYXRoLCBpdCkgfQ0KYGBgDQoNCkkg dW5kZXJzdGFuZCB3aGVyZSB0aGUgaWRlYSBvZiBgb3B0aW9uYWxgIGlzIGNvbWluZyBmcm9tLCBi dXQgZm9yIG1lLCBib3RoIHRoZSBuYW1lIGFuZCB0aGUgdXNhZ2Ugc2VlbSBraW5kYSBhbWJpZ3Vv dXMuIA0KDQpJbiBhbnkgY2FzZSwgSSByYXJlbHkgbWlzcyB0aGlzIG9wdGlvbiB0aGF0IG11Y2gs IGFuZCBuZXZlciBoYWQgYSBnb29kIGlkZWEgb2YgYSAicHJvcGVyIiBzeW50YXgvQVBJIHRvIGFs bG93IHRoYXQuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkZl YXR1cmUgIzIxNDM1OiBLZXJuZWwjb3B0aW9uYWwgYXMgYSBjb25kaXRpb25hbCAjdGhlbg0KaHR0 cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIxNDM1I2NoYW5nZS0xMTM3NTkNCg0KKiBB dXRob3I6IEFsZXhhbmRlci5TZW5rbyAoQWxleGFuZGVyIFNlbmtvKQ0KKiBTdGF0dXM6IE9wZW4N Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMjIFdoYXQNCg0KV2hl biBjaGFpbmluZywgSSBuZWVkIHNvbWV0aW1lcyB0byBhcHBseSBzb21lIGNoYW5nZXMgY29uZGl0 aW9uYWxseSwgbGlrZSB0aGlzOg0KYGBgcnVieQ0KQHJlY29yZCA9IFJlY29yZC5maW5kKHJlY29y ZF9pZCkNCiAgLnRoZW4geyBpdC5yZXNwb25kX3RvPyg6ZGVjb3JhdGUpID8gaXQuZGVjb3JhdGUg OiBpdCB9DQpgYGANCg0KSXQgd291bGQgYmUgZ3JlYXQgdG8gRFJZIGl0IGEgYml0Og0KYGBgcnVi eQ0KQHJlY29yZCA9IFJlY29yZC5maW5kKHJlY29yZF9pZCkNCiAgLm9wdGlvbmFsIHsgaXQuZGVj b3JhdGUgaWYgaXQucmVzcG9uZF90bz8gOmRlY29yYXRlIH0NCmBgYA0KDQpPciwgZXZlbiBzaG9y dGVyIGZvciBSYWlscyB1c2VyczoNCmBgYHJ1YnkNCkByZWNvcmQgPSBSZWNvcmQuZmluZChyZWNv cmRfaWQpDQogIC5vcHRpb25hbCB7IGl0LnRyeSA6ZGVjb3JhdGUgfQ0KYGBgDQoNCiMjIFdoeQ0K DQpUaGUgaW50ZW50IGlzIHRvICoqbWFrZSBpdCB2aXNpYmxlIGF0IGEgZ2xhbmNlIHRoYXQgYSBz dGF0ZW1lbnQgX21heV8gYWZmZWN0IHRoZSByZXN1bHQqKiwgYnV0IG5vdCBuZWNlc3NhcmlseSBk b2VzIHNvLiBXaXRob3V0IHRoZSBwcm9wb3NlZCBtZXRob2QsIG9uZSBuZWVkcyB0byByZWFkIGFu ZCBwYXJzZSB0aGUgd2hvbGUgYmxvY2sgdG8ga25vdyB0aGF0Lg0KDQpJdCBzaG91bGQgaGVscCB0 byByZWFkIGxvbmdlciBwcm9jZXNzaW5nIGNoYWlucywgZm9yIHRob3NlIHdobyBwcmVmZXIgY2hh aW5zIGFuZCBgI3RoZW5gIHRvIHBsYWluIG9sZCBpdGVyYXRpdmUgYXBwcm9hY2guDQoNCiMjIE5h bWluZw0KDQpJdCBpcyBkaXNjdXNzaWJsZS4gSSBoYXZlIGp1c3QgdHdvIGlkZWFzIHlldDoNCi0g YG9wdGlvbmFsYA0KLSBgbWF5YmVgDQoNCiMjIFJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbg0KDQpg YGBydWJ5DQojIFlpZWxkcyBzZWxmIHRvIHRoZSBibG9jayBhbmQgcmV0dXJucyB0aGUgcmVzdWx0 IG9mIHRoZSBibG9jayBpZiBpdOKAmXMNCiMgdHJ1dGh5LCBhbmQgc2VsZiBvdGhlcndpc2UuDQpk ZWYgb3B0aW9uYWwNCiAgdGFwIGRvDQogICAgcmVzdWx0ID0geWllbGQoc2VsZikgb3IgbmV4dA0K DQogICAgYnJlYWsgcmVzdWx0DQogIGVuZA0KZW5kDQpgYGANCg0KDQoNCi0tIA0KaHR0cHM6Ly9i dWdzLnJ1YnktbGFuZy5vcmcvDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxh bmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBt bC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5v cmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcvCg==