[ruby-core:118558] [Ruby master Feature#20625] Object#chain_of
From:
"zverok (Victor Shepelev) via ruby-core" <ruby-core@...>
Date:
2024-07-11 10:10:57 UTC
List:
ruby-core #118558
SXNzdWUgIzIwNjI1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgenZlcm9rIChWaWN0b3IgU2hlcGVsZXYp Lg0KDQoNCmBgYHJ1YnkNCmJyZWFkY3J1bWJzID0gRW51bWVyYXRvci5wcm9kdWNlKHBhcmVudCwg JjpwYXJlbnRfZGlyZWN0b3J5KS50YWtlX3doaWxlIHsgIV8xLm5pbD8gfQ0KaGllcmFyY2h5ID0g RW51bWVyYXRvci5wcm9kdWNlKGVtcGxveWVlLCAmOm1lbWJlcikudGFrZV93aGlsZSB7ICFfMS5u aWw/IH0NCmBgYA0KDQpNeSBpbml0aWFsIHByb3Bvc2FsIGZvciB3aGF0IGJlY2FtZSBgRW51bWVy YXRvci5wcm9kdWNlYCAoaXQgaXMgdGhlIG9wcG9zaXRlIG9mIGBFbnVtZXJhYmxlI3JlZHVjZWAs IGhlbmNlIHRoZSBuYW1lKSB3YXMgdG8gbWFrZSBpdCBhbiBPYmplY3TigJlzIG1ldGhvZC4gDQoN CkJ1dCBpdCB3YXMgZGVjaWRlZCB0aGF0IGluY3JlYXNpbmcgT2JqZWN04oCZcyBBUEkgaXMgdG9v IGJyZWFraW5nIGNoYW5nZSwgc28gaXQgYmVjYW1lIGEgc2VwYXJhdGUgYEVudW1lcmF0b3JgIG1l dGhvZC4uLiBXaGljaCwgdG8gdGhlIGJlc3Qgb2YgbXkgZXN0aW1hdGlvbiwgbm90IGEgbG90IG9m IHBlb3BsZSBhcmUgYXdhcmUgYWJvdXQgKGJlY2F1c2UgZXZlbiB3aGVuIHNvbWVib2R5IGxvb2tz IGZvciDigJxtZXRob2QgbGlrZSB0aGlz4oCdLCBpdCBpcyBub3Qgb2J2aW91cyB3aGVyZSB0byBs b29rIGZvciBpdCkuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CkZlYXR1cmUgIzIwNjI1OiBPYmplY3QjY2hhaW5fb2YNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcu b3JnL2lzc3Vlcy8yMDYyNSNjaGFuZ2UtMTA5MDgxDQoNCiogQXV0aG9yOiBtYXRoZXVzcmljaCAo TWF0aGV1cyBSaWNoYXJkKQ0KKiBTdGF0dXM6IE9wZW4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCiMjIE1vdGl2YXRpb24NCg0KSXQncyBvZnRlbiBjb21tb24gdG8g dHJhdmVyc2UgYSB0cmVlL2xpc3QtbGlrZSBzdHJ1Y3R1cmUgaW4gb3JkZXIgdG8gZ2V0IGEgY2hh aW4NCm9mIGVsZW1lbnRzLiBUaGlzIHByb3Bvc2FsIGlzIHRvIGFkZCBhIG1ldGhvZCB0byBgT2Jq ZWN0YCB0aGF0IGFsbG93cyBjb2xsZWN0aW5nDQphIGNoYWluIG9mIGVsZW1lbnRzIGJ5IGFwcGx5 aW5nIGEgYmxvY2sgdG8gZWFjaCBlbGVtZW50LiBJdCBkb2Vzbid0IHJlcXVpcmUgdGhlDQpyb290 IGVsZW1lbnQgdG8gYmUgYW4gaW5zdGFuY2Ugb2YgYSBzcGVjaWZpYyBjbGFzcyBvciByZXNwb25k IHRvIGEgc3BlY2lmaWMNCnByb3RvY29sLg0KDQpJIHRoaW5rIHRoaXMgbWV0aG9kIGNvdWxkIGJl IHVzZWZ1bCBpbiBtYW55IGNhc2VzLCBzaW5jZSBoaWVyYXJjaGllcyBsaWtlIHRoaXMNCmFyZSBj b21tb24gaW4gY29kZWJhc2VzIChlLmcuIGZpbGUgc3lzdGVtcywgb3JnYW5pemF0aW9ucyBzdHJ1 Y3R1cmVzLCBjb21taXQNCmhpc3RvcmllcywgYnJlYWRjcnVtYnMgaW4gd2ViIGFwcHMsIGNvbmZp Z3VyYXRpb24gaGllcmFyY2hpZXMsIGV0Yy4pLg0KDQpIZXJlIGFyZSBzb21lIGV4YW1wbGVzIGV4 dHJhY3RlZCBmcm9tIHJlYWwgY29kZWJhc2VzIChzaW1wbGlmaWVkIGZvciB0aGUgc2FrZSBvZg0K dGhlIGV4YW1wbGUvcHJpdmFjeSk6DQoNCmBgYHJiDQojIEdpdmVuIGEgZmlsZSBzeXN0ZW0gc3Ry dWN0dXJlLCBnZXQgdGhlIGJyZWFkY3J1bWJzIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkNCmRlZiBi cmVhZGNydW1icyhyb290KQ0KICBjcnVtYnMgPSBbXQ0KICBjdXJyZW50ID0gcm9vdA0KICANCiAg d2hpbGUgY3VycmVudA0KICAgIGNydW1icyA8PCBjdXJyZW50DQogICAgY3VycmVudCA9IGN1cnJl bnQucGFyZW50X2Rpcg0KICBlbmQNCg0KICBjcnVtYnMNCmVuZA0KDQojIEdpdmVuIGFuIGVtcGxv eWVlLCBnZXQgdGhlIGhpZXJhcmNoeSBvZiBtYW5hZ2Vycw0KZGVmIGhpZXJhcmNoeShlbXBsb3ll ZSkNCiAgaGllcmFyY2h5ID0gW10NCiAgY3VycmVudCA9IGVtcGxveWVlDQoNCiAgd2hpbGUgY3Vy cmVudA0KICAgIGhpZXJhcmNoeSA8PCBjdXJyZW50DQogICAgY3VycmVudCA9IGN1cnJlbnQubWFu YWdlcg0KICBlbmQNCg0KICBoaWVyYXJjaHkNCmVuZA0KYGBgDQoNCiMjIEltcGxlbWVudGF0aW9u DQoNClRoZSBpbXBsZW1lbnRhdGlvbiBpbiBSdWJ5IGNvdWxkIGxvb2sgbGlrZSB0aGlzOg0KDQpg YGByYg0KY2xhc3MgT2JqZWN0DQogIGRlZiBjaGFpbl9vZigmYmxvY2spDQogICAgY2hhaW4gPSBb XQ0KICAgIGN1cnJlbnQgPSBzZWxmDQoNCiAgICB3aGlsZSBjdXJyZW50DQogICAgICBjaGFpbiA8 PCBjdXJyZW50DQogICAgICBjdXJyZW50ID0gYmxvY2suY2FsbChjdXJyZW50KQ0KICAgIGVuZA0K DQogICAgY2hhaW4NCiAgZW5kDQplbmQNCmBgYA0KDQpIZXJlJ3MgYW4gZXhhbXBsZSB1c2U6DQoN CmBgYHJiDQpjbGFzcyBMaXN0Tm9kZQ0KICBhdHRyX2FjY2Vzc29yIDp2YWx1ZSwgOnBhcmVudA0K DQogIGRlZiBpbml0aWFsaXplKHZhbHVlLCBwYXJlbnQgPSBuaWwpDQogICAgQHZhbHVlID0gdmFs dWUNCiAgICBAcGFyZW50ID0gcGFyZW50DQogIGVuZA0KDQogIGRlZiBhbmNlc3RvcnMNCiAgICBj aGFpbl9vZigmOnBhcmVudCkuc2hpZnQNCiAgZW5kDQplbmQNCg0Kcm9vdCA9IExpc3ROb2RlLm5l dygicm9vdCIpDQpjaGlsZDEgPSBMaXN0Tm9kZS5uZXcoImNoaWxkMSIsIHJvb3QpDQpjaGlsZDIg PSBMaXN0Tm9kZS5uZXcoImNoaWxkMiIsIGNoaWxkMSkNCg0KcHV0cyBjaGlsZDIuYW5jZXN0b3Jz Lm1hcCgmOnZhbHVlKQ0KIyA9PiBbImNoaWxkMSIsICJyb290Il0NCmBgYA0KDQpUaGUgZXhhbXBs ZXMgZnJvbSB0aGUgbW90aXZhdGlvbiBzZWN0aW9uIGNvdWxkIGJlIHJld3JpdHRlbiBhczoNCg0K YGBgcmINCmJyZWFkY3J1bWJzID0gcm9vdC5jaGFpbl9vZigmOnBhcmVudF9kaXJlY3RvcnkpDQpo aWVyYXJjaHkgPSBlbXBsb3llZS5jaGFpbl9vZigmOm1hbmFnZXIpDQpgYGANCg0KIyMgQ29uc2lk ZXJhdGlvbnMNCg0KLSBXaGlsZSBJJ20gaW5jbHVkaW5nIHRoZSBvYmplY3QgYnkgZGVmYXVsdCBp biB0aGUgY2hhaW4sIGl0IGNvdWxkIGJlIG1vcmUNCmludHVpdGl2ZSB0byBleGNsdWRlIGl0LiBJ biBhbnkgY2FzZSwgaXQncyBlYXN5IHRvIHJlbW92ZSBvciBhZGQgaXQgd2l0aA0KYHNoaWZ0YC9g dW5zaGlmdGAuDQoNCi0gT24gYSBkaWZmZXJlbnQgbm90ZSwgdGhlIG1ldGhvZCBjb3VsZCBiZSBu YW1lZCBkaWZmZXJlbnRseSAoSSBkbyBsaWtlDQpgY2hhaW5fb2ZgLCB0aG91Z2gpLiBTb21lIGFs dGVybmF0aXZlcyBJJ3ZlIGNvbnNpZGVyZWQgYXJlIGBtYXBfY2hhaW5gLA0KYHRyYXZlcnNlYCwg YW5kIGB0cmFjZV9wYXRoYC4NCg0KLSBUaGUgbWV0aG9kIGFzc3VtZXMgdGhhdCB0aGUgdHJhdmVy c2FsIHdpbGwgZmluaXNoIGF0IHNvbWUgcG9pbnQuIElmIHRoZSB1c2VyDQpoYXMgYSBjeWNsaWMg c3RydWN0dXJlLCBpdCB3aWxsIGxvb3AgaW5kZWZpbml0ZWx5LiBXZSBjb3VsZCBzdG9wIGxvb3Bp bmcgaWYgd2UNCmZpbmQgdGhlIHNhbWUgZWxlbWVudCB0d2ljZS4gSSBkb24ndCB0aGluayBpdCdz IHdvcnRoIHRoZSBleHRyYSBjb21wbGV4aXR5Lg0KDQotIEknbSBub3Qgc3VyZSBgT2JqZWN0YCBp cyB0aGUgYmVzdCBwbGFjZSBmb3IgdGhpcyBtZXRob2QuIFdoaWxlIGl0J3MgdmVyeQ0KZ2VuZXJh bCwgSSB0aGluayBpdCBnaXZlcyBwb3dlciB0byB0aGUgdXNlciB0byBkZWNpZGUgaG93IHRvIHRy YXZlcnNlIGEgY2hhaW4NCmxpa2UgdGhpcyB3aXRob3V0IGhhdmluZyB0byByZWx5IG9uIGEgc3Bl Y2lmaWMgY2xhc3MuIE1heWJlIGEgbWl4aW4NCihgVHJhdmVyc2FibGVgL2BDaGFpbmFibGVgKSB3 b3VsZCBiZSBtb3JlIGFwcHJvcHJpYXRlPyBDb3VsZCB0aGlzIGZpdCBpbg0KYEVudW1lcmFibGVg LCBzb21laG93Pw0KDQpPZiBjb3Vyc2UsIEknbSBvcGVuIHRvIHN1Z2dlc3Rpb25zIGFuZCBmZWVk YmFjay4gVGhhbmtzIGZvciByZWFkaW5nIQ0KDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5 LWxhbmcub3JnLw0KIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcK IFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1Ynkt bGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWls bWFuMy9saXN0cy9ydWJ5LWNvcmUubWwucnVieS1sYW5nLm9yZy8=