[ruby-core:118913] [Ruby master Feature#18368] Range#step semantics for non-Numeric ranges
From:
"knu (Akinori MUSHA) via ruby-core" <ruby-core@...>
Date:
2024-08-22 02:44:28 UTC
List:
ruby-core #118913
SXNzdWUgIzE4MzY4IGhhcyBiZWVuIHVwZGF0ZWQgYnkga251IChBa2lub3JpIE1VU0hBKS4NCg0K DQpXZSBoYXZlIGxpdHRsZSBjaG9pY2UgYnV0IHRvIHNwZWNpYWxpemUgaXQgZm9yIHN0cmluZ3Mg YXMgd2UgZG9uJ3Qgd2FudCB0byBhZGQgc3VwcG9ydCBmb3IgYCJhIiArIDNgIHRoYXQgd2lsbCBt b3N0IGNlcnRhaW5seSBicmluZyBkaXNhc3Rlci4g8J+roA0KDQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMxODM2ODogUmFuZ2Ujc3RlcCBzZW1hbnRp Y3MgZm9yIG5vbi1OdW1lcmljIHJhbmdlcw0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNz dWVzLzE4MzY4I2NoYW5nZS0xMDk0ODMNCg0KKiBBdXRob3I6IHp2ZXJvayAoVmljdG9yIFNoZXBl bGV2KQ0KKiBTdGF0dXM6IE9wZW4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCkkgYW0gc29ycnkgaWYgdGhlIHF1ZXN0aW9uIGhhZCBhbHJlYWR5IGJlZW4gZGlzY3Vz c2VkLCBjYW4ndCBmaW5kIHRoZSByZWxldmFudCB0b3BpYy4NCg0KIkludHVpdGl2ZWx5IiwgdGhp cyBsb29rcyAoZm9yIG1lKSBsaWtlIGEgbWVhbmluZ2Z1bCBzdGF0ZW1lbnQ6DQoNCmBgYHJ1YnkN CihUaW1lLnBhcnNlKCcyMDIxLTEyLTAxJykuLlRpbWUucGFyc2UoJzIwMjEtMTItMjQnKSkuc3Rl cCgxLmRheSkudG9fYQ0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF5eXl5eIG9yIGp1c3QgMjQqNjAqNjANCmBgYA0KVW5mb3J0dW5hdGVs eSwgaXQgZG9lc24ndCB3b3JrIHdpdGggIlR5cGVFcnJvciAoY2FuJ3QgaXRlcmF0ZSBmcm9tIFRp bWUpIi4NCkluaXRpYWxseSBpdCBsb29rZWQgbGlrZSBhIGJ1ZyBmb3IgbWUsIGJ1dCBhZnRlciBk aWdnaW5nIGEgYml0IGludG8gY29kZS9kb2NzLCBJIHVuZGVyc3Rvb2QgdGhhdCBgUmFuZ2Ujc3Rl cGAgaGFzIGFuIG9kZCBzZW1hbnRpY3Mgb2YgImFkdmFuY2UgdGhlIGJlZ2luIE4gdGltZXMgd2l0 aCBgI3N1Y2NgLCBhbmQgeWllbGQgdGhlIHJlc3VsdCIsIHdpdGggTiBiZWluZyBhbHdheXMgaW50 ZWdlcjoNCmBgYHJ1YnkNCignYScuLid6Jykuc3RlcCgzKS5maXJzdCg1KQ0KIyA9PiBbImEiLCAi ZCIsICJnIiwgImoiLCAibSJdDQpgYGANCg0KVGhlIGZhY3QgdGhhdCBzZW1hbnRpYyBpcyAib2Rk IiBpcyBjb25maXJtZWQgYnkgdGhlIGZhY3QgdGhhdCBmb3IgRmxvYXQgaXQgaXMgcmVkZWZpbmVk IHRvIGRvIHdoYXQgSSAiaW50dWl0aXZlbHkiIGV4cGVjdGVkOg0KYGBgcnVieQ0KKDEuMC4uNy4w KS5zdGVwKDAuMykuZmlyc3QoNSkNCiMgPT4gWzEuMCwgMS4zLCAxLjYsIDEuOSwgMi4yXSANCmBg YA0KKExpa2Ugd2l0aCBbYFJhbmdlIz09PWAgc29tZSB0aW1lIGFnb10oaHR0cHM6Ly9idWdzLnJ1 YnktbGFuZy5vcmcvaXNzdWVzLzE0NTc1KSwgSSBiZWxpZXZlIHRoYXQgdG8gYmUgYSBzdHJvbmcg cHJvb2Ygb2YgdGhlIHdyb25nIGdlbmVyaWMgc2VtYW50aWNzLCBpZiBmb3IgbnVtYmVycyB0aGUg c2VtYW50aWNzIG5lZWRlZCB0byBiZSByZWRlZmluZWQgY29tcGxldGVseS4pDQoNCkFub3RoZXIg dGhpbmcgdG8gbm90ZSBpcyB0aGF0ICJza2lwIE4gZWxlbWVudHMiIHNlZW0gdG8gYmUgcmF0aGVy ICJnZW5lcmljYWxseSBFbnVtZXJhYmxlLXJlbGF0ZWQiIHlldCBpdCBpc24ndCBkZWZpbmVkIG9u IGBFbnVtZXJhYmxlYCAoYmVjYXVzZSBub2JvZHkgbmVlZHMgdGhpcyBzZW1hbnRpY3MsIHR5cGlj YWxseSEpDQoNCkhlbmNlLCB0d28gcXVlc3Rpb25zOg0KKiBDYW4gd2UgcmVkZWZpbmUgZ2VuZXJp YyBgUmFuZ2Ujc3RlcGAgdG8gbmV3IHNlbWFudGljcyAob2YgdXNpbmcgYGJlZ2luICsgc3RlcGAg aXRlcmF0aXZlbHkpPyBJdCBpcyBoYXJkIHRvIGltYWdpbmUgdGhlIGFtb3VudCBvZiBhY3R1YWwg dXNhZ2Ugb2YgdGhlIG9sZCBiZWhhdmlvciAod2l0aCBTdHJpbmc/Li4gdG8gd2hhdCBlbmQ/KSBp biB0aGUgd2lsZA0KKiBJZiB0aGUgYW5zd2VyIGlzICJubyIsIGNhbiB3ZSBkZWZpbmUgYSBuZXcg bWV0aG9kIHdpdGggbmV3IHNlbWFudGljcywgbGlrZSwgSURLLCBgUmFuZ2Ujb3ZlcihzcGFuKWA/ DQoNCioqVVBEOioqIE1vcmUgZXhhbXBsZXMgb2YgdXNlZnVsIGJlaGF2aW9yIChpdCBpcyBOT1Qg b25seSBhYm91dCBjb3JlIGBUaW1lYCBjbGFzcyk6DQoNCmBgYHJ1YnkNCnJlcXVpcmUgJ2FjdGl2 ZV9zdXBwb3J0L2FsbCcNCg0KKDEubWludXRlLi4yMC5taW51dGVzKS5zdGVwKDIubWludXRlcyku dG9fYQ0KIz0+IFsxIG1pbnV0ZSwgMyBtaW51dGVzLCA1IG1pbnV0ZXMsIDcgbWludXRlcywgOSBt aW51dGVzLCAxMSBtaW51dGVzLCAxMyBtaW51dGVzLCAxNSBtaW51dGVzLCAxNyBtaW51dGVzLCAx OSBtaW51dGVzXQ0KDQpyZXF1aXJlICd0b2QnDQoNCihUb2Q6OlRpbWVPZkRheS5wYXJzZSgiOGFt IikuLlRvZDo6VGltZU9mRGF5LnBhcnNlKCIxMGFtIikpLnN0ZXAoMzAubWludXRlcykudG9fYSAN CiM9PiBbIzxUb2Q6OlRpbWVPZkRheSAwODowMDowMD4sICM8VG9kOjpUaW1lT2ZEYXkgMDg6MzA6 MDA+LCAjPFRvZDo6VGltZU9mRGF5IDA5OjAwOjAwPiwgIzxUb2Q6OlRpbWVPZkRheSAwOTozMDow MD4sICM8VG9kOjpUaW1lT2ZEYXkgMTA6MDA6MDA+XQ0KDQoNCnJlcXVpcmUgJ21hdHJpeCcNCihW ZWN0b3JbMSwgMiwgM10uLikuc3RlcChWZWN0b3JbMSwgMSwgMV0pLnRha2UoMykNCiM9PiBbVmVj dG9yWzEsIDIsIDNdLCBWZWN0b3JbMiwgMywgNF0sIFZlY3RvclszLCA0LCA1XV0NCg0KcmVxdWly ZSAndW5pdHdpc2UnDQooVW5pdHdpc2UoMCwgJ2ttJykuLlVuaXR3aXNlKDEsICdrbScpKS5zdGVw KFVuaXR3aXNlKDEwMCwgJ20nKSkubWFwKCY6dG9fcykNCiM9PiBbIjAga20iLCAiMS8xMCBrbSIs ICIxLzUga20iLCAiMy8xMCBrbSIsICIyLzUga20iLCAiMC41IGttIiwgIjMvNSBrbSIsICI3LzEw IGttIiwgIjQvNSBrbSIsICI5LzEwIGttIiwgIjEga20iXQ0KYGBgDQoNCg0KKipVUEQ6KiogUmVz cG9uZGluZyB0byBkaXNjdXNzaW9uIHBvaW50czoNCg0KKipROioqIE1hdHogaXMgY29uY2VybmVk IHRoYXQgdGhlIHByb3Bvc2VkIHNpbXBsZSBkZWZpbml0aW9uIHdpbGwgYmUgY29uZnVzaW5nIHdp dGggdGhlIGNsYXNzZXMgd2hlcmUgYCtgIGlzIHJlZGVmaW5lZCBhcyBjb25jYXRlbmF0aW9uLg0K DQoqKkE6KiogSSBiZWxpZXZlIHRoYXQgc2ltcGxpY2l0eSBvZiBzZW1hbnRpY3MgYW5kIGVhc2Ug b2YgZXhwbGFpbmluZyAoIml0IGp1c3QgdXNlcyBgK2AgdW5kZXJuZWF0aCwgd2hhdGV2ZXIgYCtg IGRvZXMsIHdpbGwgYmUgcGVyZm9ybWVkIikgd2lsbCBtYWtlIHRoZSBjb25mdXNpb24gbWluaW1h bC4NCg0KKipROioqIFdoeSBub3QgaW50cm9kdWNlIG5ldyBBUEkgcmVxdWlyZW1lbnQgKGxpa2Ug ImNsYXNzIG9mIHJhbmdlJ3MgYGJlZ2luYCBzaG91bGQgaW1wbGVtZW50IGBpbmNyZW1lbnRgIG1l dGhvZCwgYW5kIHRoZW4gaXQgd2lsbCBiZSB1c2VkIGluIGBzdGVwYCkNCg0KKipBOioqIHJlcXVp cmUgKmV2ZXJ5KiBnZW0gYXV0aG9yIHRvIGNoYW5nZSAqZXZlcnkqIG9mIHRoZWlyIG9iamVjdHMn IGJlaGF2aW9yLiBGb3IgdGhhdCwgdGhleSBzaG91bGQgYmUgYXdhcmUgb2YgdGhlIGNoYW5nZSwg Y29uc2lkZXIgaXQgaW1wb3J0YW50IGVub3VnaCB0byBjYXJlLCBjbGVhcmx5IHVuZGVyc3RhbmQg dGhlIG5lY2Vzc2FyeSBzZW1hbnRpY3Mgb2YgaW1wbGVtZW50YXRpb24sIGhhdmUgYSByZXNvdXJj ZSB0byByZWxlYXNlIGEgbmV3IHZlcnNpb24uLi4gVGhlbiBhbGwgdXNlcnMgb2YgYWxsIHN1Y2gg Z2VtcyB3b3VsZCBiZSByZXF1aXJlZCB0byB1cGdyYWRlLiBUaGUgZmVhdHVyZSB3b3VsZCBiZSBE T0EgKGRlYWQtb24tYXJyaXZhbCkuDQoNClRoZSB0d28gYWx0ZXJuYXRpdmUgd2F5cyBJIGFtIHN1 Z2dlc3Rpbmc6IGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgYCNzdGVwYCBvciBpbnRyb2R1Y2UgYSBu ZXcgbWV0aG9kIHdpdGggZGVzaXJlZCBiZWhhdmlvcjoNCjEuIEVhc3kgdG8gZXhwbGFpbiBhbmQg YW5ub3VuY2UNCjIuIFJlcXVpcmUgbm8gb3RoZXIgY29kZSBjaGFuZ2VzIHRvIGltbWVkaWF0ZWx5 IGJlY29tZSB1c2VmdWwNCjMuIFdpdGggc29tZXRoaW5nIGxpa2UgW2JhY2twb3J0c10oaHR0cHM6 Ly9naXRodWIuY29tL21hcmNhbmRyZS9iYWNrcG9ydHMpIG9yIFtydWJ5LW5leHRdKGh0dHBzOi8v Z2l0aHViLmNvbS9ydWJ5LW5leHQvcnVieS1uZXh0KSBlYXN5IHRvIHN0YXJ0IHVzaW5nIGV2ZW4g aW4gb2xkZXIgUnVieSB2ZXJzaW9uLCBtYWtpbmcgdGhlIGNvZGUgbW9yZSBleHByZXNzaXZlIGV2 ZW4gYmVmb3JlIGl0IHdvdWxkIGJlIHBvc3NpYmxlIGZvciBzb21lIHBhcnRpY3VsYXIgYXBwL2Nv bXBueSB0byB1cGdyYWRlIHRvIChzYXkpIDMuMg0KDQpBbGwgZXhhbXBsZXMgb2YgYmVoYXZpb3Ig ZnJvbSB0aGUgY29kZSBhYm92ZSBhcmUgcmVhbCBgaXJiYCBvdXRwdXQgd2l0aCBtb25rZXktcGF0 Y2hlZCBgUmFuZ2Ujc3RlcGAsIGRlbW9uc3RyYXRpbmcgaG93IGxpdHRsZSBjaGFuZ2Ugd2lsbCBi ZSBuZWVkZWQgdG8gY29kZSBvdXRzaWRlIG9mIHRoZSBgUmFuZ2VgLg0KDQoNCg0KLS0gDQpodHRw czovL2J1Z3MucnVieS1sYW5nLm9yZy8NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5y dWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1s ZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1Ynkt bGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv