[ruby-core:109505] [Ruby master Feature#18368] Range#step semantics for non-Numeric ranges
From:
"Dan0042 (Daniel DeLorme)" <noreply@...>
Date:
2022-08-16 17:34:07 UTC
List:
ruby-core #109505
SXNzdWUgIzE4MzY4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRGFuMDA0MiAoRGFuaWVsIERlTG9ybWUp LgoKCkkgYWxzbyB0aGluayAyKSBpcyB0aGUgYmVzdAp3aGlsZSByZWl0ZXJhdGluZyB0aGF0IHdl IGNhbiBhbmQgc2hvdWxkIGtlZXAgdGhlIGJlaGF2aW9yIG9mIGAoImEiLi4ieiIpLnN0ZXAobnVt KWAgZm9yIGxlZ2FjeSBwdXJwb3Nlcy4KUHJvczogUmFuZ2Ujc3RlcCBiZWhhdmlvciBpcyBlbnJp Y2hlZCB3aGlsZSBwcmVzZXJ2aW5nIGZ1bGwgYmFja3dhcmQgY29tcGF0aWJpbGl0eQoKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGZWF0dXJlICMxODM2ODogUmFuZ2Uj c3RlcCBzZW1hbnRpY3MgZm9yIG5vbi1OdW1lcmljIHJhbmdlcwpodHRwczovL2J1Z3MucnVieS1s YW5nLm9yZy9pc3N1ZXMvMTgzNjgjY2hhbmdlLTk4Njc0CgoqIEF1dGhvcjogenZlcm9rIChWaWN0 b3IgU2hlcGVsZXYpCiogU3RhdHVzOiBPcGVuCiogUHJpb3JpdHk6IE5vcm1hbAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkkgYW0gc29ycnkgaWYgdGhlIHF1ZXN0aW9u IGhhZCBhbHJlYWR5IGJlZW4gZGlzY3Vzc2VkLCBjYW4ndCBmaW5kIHRoZSByZWxldmFudCB0b3Bp Yy4KCiJJbnR1aXRpdmVseSIsIHRoaXMgbG9va3MgKGZvciBtZSkgbGlrZSBhIG1lYW5pbmdmdWwg c3RhdGVtZW50OgoKYGBgcnVieQooVGltZS5wYXJzZSgnMjAyMS0xMi0wMScpLi5UaW1lLnBhcnNl KCcyMDIxLTEyLTI0JykpLnN0ZXAoMS5kYXkpLnRvX2EKIyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eIG9yIGp1c3QgMjQqNjAqNjAK YGBgClVuZm9ydHVuYXRlbHksIGl0IGRvZXNuJ3Qgd29yayB3aXRoICJUeXBlRXJyb3IgKGNhbid0 IGl0ZXJhdGUgZnJvbSBUaW1lKSIuCkluaXRpYWxseSBpdCBsb29rZWQgbGlrZSBhIGJ1ZyBmb3Ig bWUsIGJ1dCBhZnRlciBkaWdnaW5nIGEgYml0IGludG8gY29kZS9kb2NzLCBJIHVuZGVyc3Rvb2Qg dGhhdCBgUmFuZ2Ujc3RlcGAgaGFzIGFuIG9kZCBzZW1hbnRpY3Mgb2YgImFkdmFuY2UgdGhlIGJl Z2luIE4gdGltZXMgd2l0aCBgI3N1Y2NgLCBhbmQgeWllbGQgdGhlIHJlc3VsdCIsIHdpdGggTiBi ZWluZyBhbHdheXMgaW50ZWdlcjoKYGBgcnVieQooJ2EnLi4neicpLnN0ZXAoMykuZmlyc3QoNSkK IyA9PiBbImEiLCAiZCIsICJnIiwgImoiLCAibSJdCmBgYAoKVGhlIGZhY3QgdGhhdCBzZW1hbnRp YyBpcyAib2RkIiBpcyBjb25maXJtZWQgYnkgdGhlIGZhY3QgdGhhdCBmb3IgRmxvYXQgaXQgaXMg cmVkZWZpbmVkIHRvIGRvIHdoYXQgSSAiaW50dWl0aXZlbHkiIGV4cGVjdGVkOgpgYGBydWJ5Cigx LjAuLjcuMCkuc3RlcCgwLjMpLmZpcnN0KDUpCiMgPT4gWzEuMCwgMS4zLCAxLjYsIDEuOSwgMi4y XSAKYGBgCihMaWtlIHdpdGggW2BSYW5nZSM9PT1gIHNvbWUgdGltZSBhZ29dKGh0dHBzOi8vYnVn cy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xNDU3NSksIEkgYmVsaWV2ZSB0aGF0IHRvIGJlIGEgc3Ry b25nIHByb29mIG9mIHRoZSB3cm9uZyBnZW5lcmljIHNlbWFudGljcywgaWYgZm9yIG51bWJlcnMg dGhlIHNlbWFudGljcyBuZWVkZWQgdG8gYmUgcmVkZWZpbmVkIGNvbXBsZXRlbHkuKQoKQW5vdGhl ciB0aGluZyB0byBub3RlIGlzIHRoYXQgInNraXAgTiBlbGVtZW50cyIgc2VlbSB0byBiZSByYXRo ZXIgImdlbmVyaWNhbGx5IEVudW1lcmFibGUtcmVsYXRlZCIgeWV0IGl0IGlzbid0IGRlZmluZWQg b24gYEVudW1lcmFibGVgIChiZWNhdXNlIG5vYm9keSBuZWVkcyB0aGlzIHNlbWFudGljcywgdHlw aWNhbGx5ISkKCkhlbmNlLCB0d28gcXVlc3Rpb25zOgoqIENhbiB3ZSByZWRlZmluZSBnZW5lcmlj IGBSYW5nZSNzdGVwYCB0byBuZXcgc2VtYW50aWNzIChvZiB1c2luZyBgYmVnaW4gKyBzdGVwYCBp dGVyYXRpdmVseSk/IEl0IGlzIGhhcmQgdG8gaW1hZ2luZSB0aGUgYW1vdW50IG9mIGFjdHVhbCB1 c2FnZSBvZiB0aGUgb2xkIGJlaGF2aW9yICh3aXRoIFN0cmluZz8uLiB0byB3aGF0IGVuZD8pIGlu IHRoZSB3aWxkCiogSWYgdGhlIGFuc3dlciBpcyAibm8iLCBjYW4gd2UgZGVmaW5lIGEgbmV3IG1l dGhvZCB3aXRoIG5ldyBzZW1hbnRpY3MsIGxpa2UsIElESywgYFJhbmdlI292ZXIoc3BhbilgPwoK KipVUEQ6KiogTW9yZSBleGFtcGxlcyBvZiB1c2VmdWwgYmVoYXZpb3IgKGl0IGlzIE5PVCBvbmx5 IGFib3V0IGNvcmUgYFRpbWVgIGNsYXNzKToKCmBgYHJ1YnkKcmVxdWlyZSAnYWN0aXZlX3N1cHBv cnQvYWxsJwoKKDEubWludXRlLi4yMC5taW51dGVzKS5zdGVwKDIubWludXRlcykudG9fYQojPT4g WzEgbWludXRlLCAzIG1pbnV0ZXMsIDUgbWludXRlcywgNyBtaW51dGVzLCA5IG1pbnV0ZXMsIDEx IG1pbnV0ZXMsIDEzIG1pbnV0ZXMsIDE1IG1pbnV0ZXMsIDE3IG1pbnV0ZXMsIDE5IG1pbnV0ZXNd CgpyZXF1aXJlICd0b2QnCgooVG9kOjpUaW1lT2ZEYXkucGFyc2UoIjhhbSIpLi5Ub2Q6OlRpbWVP ZkRheS5wYXJzZSgiMTBhbSIpKS5zdGVwKDMwLm1pbnV0ZXMpLnRvX2EgCiM9PiBbIzxUb2Q6OlRp bWVPZkRheSAwODowMDowMD4sICM8VG9kOjpUaW1lT2ZEYXkgMDg6MzA6MDA+LCAjPFRvZDo6VGlt ZU9mRGF5IDA5OjAwOjAwPiwgIzxUb2Q6OlRpbWVPZkRheSAwOTozMDowMD4sICM8VG9kOjpUaW1l T2ZEYXkgMTA6MDA6MDA+XQoKCnJlcXVpcmUgJ21hdHJpeCcKKFZlY3RvclsxLCAyLCAzXS4uKS5z dGVwKFZlY3RvclsxLCAxLCAxXSkudGFrZSgzKQojPT4gW1ZlY3RvclsxLCAyLCAzXSwgVmVjdG9y WzIsIDMsIDRdLCBWZWN0b3JbMywgNCwgNV1dCgpyZXF1aXJlICd1bml0d2lzZScKKFVuaXR3aXNl KDAsICdrbScpLi5Vbml0d2lzZSgxLCAna20nKSkuc3RlcChVbml0d2lzZSgxMDAsICdtJykpLm1h cCgmOnRvX3MpCiM9PiBbIjAga20iLCAiMS8xMCBrbSIsICIxLzUga20iLCAiMy8xMCBrbSIsICIy LzUga20iLCAiMC41IGttIiwgIjMvNSBrbSIsICI3LzEwIGttIiwgIjQvNSBrbSIsICI5LzEwIGtt IiwgIjEga20iXQpgYGAKCgoqKlVQRDoqKiBSZXNwb25kaW5nIHRvIGRpc2N1c3Npb24gcG9pbnRz OgoKKipROioqIE1hdHogaXMgY29uY2VybmVkIHRoYXQgdGhlIHByb3Bvc2VkIHNpbXBsZSBkZWZp bml0aW9uIHdpbGwgYmUgY29uZnVzaW5nIHdpdGggdGhlIGNsYXNzZXMgd2hlcmUgYCtgIGlzIHJl ZGVmaW5lZCBhcyBjb25jYXRlbmF0aW9uLgoKKipBOioqIEkgYmVsaWV2ZSB0aGF0IHNpbXBsaWNp dHkgb2Ygc2VtYW50aWNzIGFuZCBlYXNlIG9mIGV4cGxhaW5pbmcgKCJpdCBqdXN0IHVzZXMgYCtg IHVuZGVybmVhdGgsIHdoYXRldmVyIGArYCBkb2VzLCB3aWxsIGJlIHBlcmZvcm1lZCIpIHdpbGwg bWFrZSB0aGUgY29uZnVzaW9uIG1pbmltYWwuCgoqKlE6KiogV2h5IG5vdCBpbnRyb2R1Y2UgbmV3 IEFQSSByZXF1aXJlbWVudCAobGlrZSAiY2xhc3Mgb2YgcmFuZ2UncyBgYmVnaW5gIHNob3VsZCBp bXBsZW1lbnQgYGluY3JlbWVudGAgbWV0aG9kLCBhbmQgdGhlbiBpdCB3aWxsIGJlIHVzZWQgaW4g YHN0ZXBgKQoKKipBOioqIHJlcXVpcmUgKmV2ZXJ5KiBnZW0gYXV0aG9yIHRvIGNoYW5nZSAqZXZl cnkqIG9mIHRoZWlyIG9iamVjdHMnIGJlaGF2aW9yLiBGb3IgdGhhdCwgdGhleSBzaG91bGQgYmUg YXdhcmUgb2YgdGhlIGNoYW5nZSwgY29uc2lkZXIgaXQgaW1wb3J0YW50IGVub3VnaCB0byBjYXJl LCBjbGVhcmx5IHVuZGVyc3RhbmQgdGhlIG5lY2Vzc2FyeSBzZW1hbnRpY3Mgb2YgaW1wbGVtZW50 YXRpb24sIGhhdmUgYSByZXNvdXJjZSB0byByZWxlYXNlIGEgbmV3IHZlcnNpb24uLi4gVGhlbiBh bGwgdXNlcnMgb2YgYWxsIHN1Y2ggZ2VtcyB3b3VsZCBiZSByZXF1aXJlZCB0byB1cGdyYWRlLiBU aGUgZmVhdHVyZSB3b3VsZCBiZSBET0EgKGRlYWQtb24tYXJyaXZhbCkuCgpUaGUgdHdvIGFsdGVy bmF0aXZlIHdheXMgSSBhbSBzdWdnZXN0aW5nOiBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIGAjc3Rl cGAgb3IgaW50cm9kdWNlIGEgbmV3IG1ldGhvZCB3aXRoIGRlc2lyZWQgYmVoYXZpb3I6CjEuIEVh c3kgdG8gZXhwbGFpbiBhbmQgYW5ub3VuY2UKMi4gUmVxdWlyZSBubyBvdGhlciBjb2RlIGNoYW5n ZXMgdG8gaW1tZWRpYXRlbHkgYmVjb21lIHVzZWZ1bAozLiBXaXRoIHNvbWV0aGluZyBsaWtlIFti YWNrcG9ydHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjYW5kcmUvYmFja3BvcnRzKSBvciBbcnVi eS1uZXh0XShodHRwczovL2dpdGh1Yi5jb20vcnVieS1uZXh0L3J1YnktbmV4dCkgZWFzeSB0byBz dGFydCB1c2luZyBldmVuIGluIG9sZGVyIFJ1YnkgdmVyc2lvbiwgbWFraW5nIHRoZSBjb2RlIG1v cmUgZXhwcmVzc2l2ZSBldmVuIGJlZm9yZSBpdCB3b3VsZCBiZSBwb3NzaWJsZSBmb3Igc29tZSBw YXJ0aWN1bGFyIGFwcC9jb21wbnkgdG8gdXBncmFkZSB0byAoc2F5KSAzLjIKCkFsbCBleGFtcGxl cyBvZiBiZWhhdmlvciBmcm9tIHRoZSBjb2RlIGFib3ZlIGFyZSByZWFsIGBpcmJgIG91dHB1dCB3 aXRoIG1vbmtleS1wYXRjaGVkIGBSYW5nZSNzdGVwYCwgZGVtb25zdHJhdGluZyBob3cgbGl0dGxl IGNoYW5nZSB3aWxsIGJlIG5lZWRlZCB0byBjb2RlIG91dHNpZGUgb2YgdGhlIGBSYW5nZWAuCgoK Ci0tIApodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1 YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6 Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K