[ruby-core:81914] [Ruby trunk Feature#13712] String#start_with? with regexp

From: eregontp@...
Date: 2017-07-05 09:35:58 UTC
List: ruby-core #81914
SXNzdWUgIzEzNzEyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4K
Cgpub2J1IChOb2J1eW9zaGkgTmFrYWRhKSB3cm90ZToKPiBXaWxsIHlvdSBuZWVkIGAkfmAgYWZ0
ZXIgYHN0YXJ0X3dpdGg/KHJlKWA/CgpJdCBtaWdodCBiZSBxdWl0ZSB1c2VmdWwgd2hlbiBwYXJz
aW5nLCB0byBhdm9pZCBkb2luZyBhIHNlY29uZCBtYXRjaCBqdXN0IHRvIGdldCBjYXB0dXJlcy4K
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRmVhdHVyZSAjMTM3MTI6
IFN0cmluZyNzdGFydF93aXRoPyB3aXRoIHJlZ2V4cApodHRwczovL2J1Z3MucnVieS1sYW5nLm9y
Zy9pc3N1ZXMvMTM3MTIjY2hhbmdlLTY1NjQyCgoqIEF1dGhvcjogbmFydXNlIChZdWkgTkFSVVNF
KQoqIFN0YXR1czogT3BlbgoqIFByaW9yaXR5OiBOb3JtYWwKKiBBc3NpZ25lZTogCiogVGFyZ2V0
IHZlcnNpb246IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN0cmlu
ZyNzdGFydF93aXRoPyBzaG91bGQgcmVjZWl2ZSByZWdleHAuCgpXaGVuIEkgd3JpdGUgYSBwYXJz
ZXIsIEkgd2FudCB0byBjaGVjayBhIHN0cmluZyBpcyBzdGFydCB3aXRoIGEgcGF0dGVybiBvciBu
b3QuCkl0J3MganVzdCB0aGUgc2FtZSB0aGluZyB3aXRoIFtTdHJpbmdTY2FubmVyI21hdGNoXSho
dHRwczovL3J1YnktZG9jLm9yZy9zdGRsaWItMi40LjAvbGliZG9jL3N0cnNjYW4vcmRvYy9TdHJp
bmdTY2FubmVyLmh0bWwjbWV0aG9kLWktbWF0Y2gtM0YpCgpJZiBJIHdhbnQgdG8gZG8gdGhlIHNh
bWUgdGhpbmcgd2l0aCBub3JtYWwgc3RyaW5nIG1ldGhvZCwgaXQgbmVlZHMgdG8gd3JpdGUgbGlr
ZSBgL1xBI3tyZX0vLm1hdGNoKOKApilgLgpCdXQgaWYgcmUgaXMgYXJndW1lbnQsIGl0IG5lZWRz
IHRvIGNyZWF0ZSBhIG5ldyB0ZW1wb3JhcnkgcmVnZXhwIGV2ZXJ5IHRpbWUuCgpUaG91Z2ggd2Ug
aGF2ZSBhIHdvcmthcm91bmQgYXMgZm9sbG93cyBidXQgaXQncyBiaXQgdHJpY2t5LgoKYGBgcnVi
eQoiZm9vICIucmluZGV4KC9mbysuLywgMCkKYGBgCgpBIHBhdGNoIGlzIGZvbGxvd2luZzoKCmBg
YGRpZmYKZGlmZiAtLWdpdCBhL3JlLmMgYi9yZS5jCmluZGV4IGQwYWEyYTc5MmUuLmY2NzJiYTc1
ZWMgMTAwNjQ0Ci0tLSBhL3JlLmMKKysrIGIvcmUuYwpAQCAtMTU4OCw2ICsxNTg4LDg0IEBAIHJi
X3JlZ19zZWFyY2goVkFMVUUgcmUsIFZBTFVFIHN0ciwgbG9uZyBwb3MsIGludCByZXZlcnNlKQog
ICAgIHJldHVybiByYl9yZWdfc2VhcmNoMChyZSwgc3RyLCBwb3MsIHJldmVyc2UsIDEpOwogfQog
Citib29sCityYl9yZWdfc3RhcnRfd2l0aF9wKFZBTFVFIHJlLCBWQUxVRSBzdHIpCit7CisgICAg
bG9uZyBwb3MgPSAwOworICAgIGxvbmcgcmVzdWx0OworICAgIFZBTFVFIG1hdGNoOworICAgIHN0
cnVjdCByZV9yZWdpc3RlcnMgcmVnaSwgKnJlZ3MgPSAmcmVnaTsKKyAgICByZWdleF90ICpyZWc7
CisgICAgaW50IHRtcHJlZzsKKyAgICBvbmlnX2Vycm1zZ19idWZmZXIgZXJyID0gIiI7CisKKyAg
ICByZWcgPSByYl9yZWdfcHJlcGFyZV9yZTAocmUsIHN0ciwgZXJyKTsKKyAgICB0bXByZWcgPSBy
ZWcgIT0gUlJFR0VYUF9QVFIocmUpOworICAgIGlmICghdG1wcmVnKSBSUkVHRVhQKHJlKS0+dXNl
Y250Kys7CisKKyAgICBtYXRjaCA9IHJiX2JhY2tyZWZfZ2V0KCk7CisgICAgaWYgKCFOSUxfUCht
YXRjaCkpIHsKKwlpZiAoRkxfVEVTVChtYXRjaCwgTUFUQ0hfQlVTWSkpIHsKKwkgICAgbWF0Y2gg
PSBRbmlsOworCX0KKwllbHNlIHsKKwkgICAgcmVncyA9IFJNQVRDSF9SRUdTKG1hdGNoKTsKKwl9
CisgICAgfQorICAgIGlmIChOSUxfUChtYXRjaCkpIHsKKwlNRU1aRVJPKHJlZ3MsIHN0cnVjdCBy
ZV9yZWdpc3RlcnMsIDEpOworICAgIH0KKyAgICByZXN1bHQgPSBvbmlnX21hdGNoKHJlZywKKwkJ
CSAoVUNoYXIqKShSU1RSSU5HX1BUUihzdHIpKSwKKwkJCSAoKFVDaGFyKikoUlNUUklOR19QVFIo
c3RyKSkgKyBSU1RSSU5HX0xFTihzdHIpKSwKKwkJCSAoVUNoYXIqKShSU1RSSU5HX1BUUihzdHIp
KSwKKwkJCSByZWdzLCBPTklHX09QVElPTl9OT05FKTsKKyAgICBpZiAoIXRtcHJlZykgUlJFR0VY
UChyZSktPnVzZWNudC0tOworICAgIGlmICh0bXByZWcpIHsKKwlpZiAoUlJFR0VYUChyZSktPnVz
ZWNudCkgeworCSAgICBvbmlnX2ZyZWUocmVnKTsKKwl9CisJZWxzZSB7CisJICAgIG9uaWdfZnJl
ZShSUkVHRVhQX1BUUihyZSkpOworCSAgICBSUkVHRVhQX1BUUihyZSkgPSByZWc7CisJfQorICAg
IH0KKyAgICBpZiAocmVzdWx0IDwgMCkgeworCWlmIChyZWdzID09ICZyZWdpKQorCSAgICBvbmln
X3JlZ2lvbl9mcmVlKHJlZ3MsIDApOworCWlmIChyZXN1bHQgPT0gT05JR19NSVNNQVRDSCkgewor
CSAgICByYl9iYWNrcmVmX3NldChRbmlsKTsKKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKwllbHNl
IHsKKwkgICAgb25pZ19lcnJvcl9jb2RlX3RvX3N0cigoVUNoYXIqKWVyciwgKGludClyZXN1bHQp
OworCSAgICByYl9yZWdfcmFpc2UoUlJFR0VYUF9TUkNfUFRSKHJlKSwgUlJFR0VYUF9TUkNfTEVO
KHJlKSwgZXJyLCByZSk7CisJfQorICAgIH0KKworICAgIGlmIChOSUxfUChtYXRjaCkpIHsKKwlp
bnQgZXJyOworCW1hdGNoID0gbWF0Y2hfYWxsb2MocmJfY01hdGNoKTsKKwllcnIgPSByYl9yZWdf
cmVnaW9uX2NvcHkoUk1BVENIX1JFR1MobWF0Y2gpLCByZWdzKTsKKwlvbmlnX3JlZ2lvbl9mcmVl
KHJlZ3MsIDApOworCWlmIChlcnIpIHJiX21lbWVycm9yKCk7CisgICAgfQorICAgIGVsc2Ugewor
CUZMX1VOU0VUKG1hdGNoLCBGTF9UQUlOVCk7CisgICAgfQorCisgICAgUk1BVENIKG1hdGNoKS0+
c3RyID0gcmJfc3RyX25ldzQoc3RyKTsKKyAgICBPQkpfSU5GRUNUKG1hdGNoLCBzdHIpOworCisg
ICAgUk1BVENIKG1hdGNoKS0+cmVnZXhwID0gcmU7CisgICAgUk1BVENIKG1hdGNoKS0+cm1hdGNo
LT5jaGFyX29mZnNldF91cGRhdGVkID0gMDsKKyAgICByYl9iYWNrcmVmX3NldChtYXRjaCk7CisK
KyAgICBPQkpfSU5GRUNUKG1hdGNoLCByZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogVkFM
VUUKIHJiX3JlZ19udGhfZGVmaW5lZChpbnQgbnRoLCBWQUxVRSBtYXRjaCkKIHsKZGlmZiAtLWdp
dCBhL3N0cmluZy5jIGIvc3RyaW5nLmMKaW5kZXggMDcyZjEzMjllZS4uNjU0MmE0YWNiMSAxMDA2
NDQKLS0tIGEvc3RyaW5nLmMKKysrIGIvc3RyaW5nLmMKQEAgLTkxMjYsNiArOTEyNiw3IEBAIHJi
X3N0cl9ycGFydGl0aW9uKFZBTFVFIHN0ciwgVkFMVUUgc2VwKQogCQkJCQlSU1RSSU5HX0xFTihz
dHIpLXBvcy1SU1RSSU5HX0xFTihzZXApKSk7CiB9CiAKK2V4dGVybiBib29sIHJiX3JlZ19zdGFy
dF93aXRoX3AoVkFMVUUgcmUsIFZBTFVFIHN0cik7CiAvKgogICogIGNhbGwtc2VxOgogICogICAg
IHN0ci5zdGFydF93aXRoPyhbcHJlZml4ZXNdKykgICAtPiB0cnVlIG9yIGZhbHNlCkBAIC05MTQ2
LDExICs5MTQ3LDIwIEBAIHJiX3N0cl9zdGFydF93aXRoKGludCBhcmdjLCBWQUxVRSAqYXJndiwg
VkFMVUUgc3RyKQogCiAgICAgZm9yIChpPTA7IGk8YXJnYzsgaSsrKSB7CiAJVkFMVUUgdG1wID0g
YXJndltpXTsKLQlTdHJpbmdWYWx1ZSh0bXApOwotCXJiX2VuY19jaGVjayhzdHIsIHRtcCk7Ci0J
aWYgKFJTVFJJTkdfTEVOKHN0cikgPCBSU1RSSU5HX0xFTih0bXApKSBjb250aW51ZTsKLQlpZiAo
bWVtY21wKFJTVFJJTkdfUFRSKHN0ciksIFJTVFJJTkdfUFRSKHRtcCksIFJTVFJJTkdfTEVOKHRt
cCkpID09IDApCi0JICAgIHJldHVybiBRdHJ1ZTsKKwlzd2l0Y2ggKEJVSUxUSU5fVFlQRSh0bXAp
KSB7CisJICBjYXNlIFRfUkVHRVhQOgorCSAgICB7CisJCWJvb2wgciA9IHJiX3JlZ19zdGFydF93
aXRoX3AodG1wLCBzdHIpOworCQlpZiAocikgcmV0dXJuIFF0cnVlOworCSAgICB9CisJICAgIGJy
ZWFrOworCSAgZGVmYXVsdDoKKwkgICAgU3RyaW5nVmFsdWUodG1wKTsKKwkgICAgcmJfZW5jX2No
ZWNrKHN0ciwgdG1wKTsKKwkgICAgaWYgKFJTVFJJTkdfTEVOKHN0cikgPCBSU1RSSU5HX0xFTih0
bXApKSBjb250aW51ZTsKKwkgICAgaWYgKG1lbWNtcChSU1RSSU5HX1BUUihzdHIpLCBSU1RSSU5H
X1BUUih0bXApLCBSU1RSSU5HX0xFTih0bXApKSA9PSAwKQorCQlyZXR1cm4gUXRydWU7CisJfQog
ICAgIH0KICAgICByZXR1cm4gUWZhbHNlOwogfQpgYGAKCgoKLS0gCmh0dHBzOi8vYnVncy5ydWJ5
LWxhbmcub3JnLwoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3JlLXJlcXVlc3RAcnVieS1s
YW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3RzLnJ1YnktbGFuZy5vcmcv
Y2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=

In This Thread

Prev Next