[ruby-core:88728] [Ruby trunk Feature#14975] String#append without changing receiver's encoding

From: duerst@...
Date: 2018-08-29 10:16:09 UTC
List: ruby-core #88728
SXNzdWUgIzE0OTc1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgZHVlcnN0IChNYXJ0aW4gRMO8cnN0KS4K
CgpBcyBtZW50aW9uZWQsIHRoZSBnZW5lcmFsIGlkZWEgb2YgUnVieSBtMTduIGlzIHRoYXQgc3Ry
aW5ncyB0aGF0IG9ubHkgY29udGFpbiBBU0NJSSBieXRlcyAoOHRoIGJpdHMgYXJlIGFsbCAwKSBh
cmUgdHJlYXRlZCBhcyBVUy1BU0NJSSBhbmQgY2FuIGJlIGNvbWJpbmVkIHdpdGggYW55IEFTQ0lJ
LWNvbXBhdGlibGUgZW5jb2RpbmcgKHRha2luZyBvbiB0aGF0IGVuY29kaW5nIGFzIGEgcmVzdWx0
KS4KClRoZSBwcm9ibGVtIHdpdGggdGhpcyBpcyB0aGF0IHRoZSBlbmNvZGluZyBvZiB0aGUgZmly
c3QgdHJ1bHkgbm9uLUFTQ0lJIHN0cmluZyB3aW5zLCBhbmQgdGhlIHNlY29uZCBzdWNoIHN0cmlu
ZyAoYXNzdW1pbmcgaXQncyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZykgcHJvZHVjZXMgYW4gZXJy
b3IuIEknbSBub3QgZXhhY3RseSBzdXJlIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBoaWdo
ZXItbGV2ZWwgcG9saWN5IG9mIGZhaWxpbmcgZWFybHkgaW4gY2FzZSBvZiBlbmNvZGluZyBtaXhl
cywgYnV0IEkgdGhpbmsgaXQgbWF5IGJlIGRpZmZpY3VsdCB0byBjaGFuZ2UuCgpJbiBhbnkgd2F5
LCB3aGVuIGFkZGluZyBzdHVmZiB0byBhIChCSU5BUlkpIGJ1ZmZlciwgdGhlIHJpZ2h0IHRoaW5n
IGNvbmNlcHR1YWxseSBpcyB0byBjaGFuZ2UgYWxsIHRoZSBwaWVjZXMgdG8gQklOQVJZLCBub3Qg
dG8gcmVseSBvbiBzb21lIG9mIHRoZSBwaWVjZXMgKGJlIGl0IHRoZSBmaXJzdCBvciBhbm90aGVy
KSB0byBiZSBCSU5BUlkuCgpUaGUgcHJvYmxlbSB3aXRoIHRoYXQgaXMgdGhhdCBpdCBlaXRoZXIg
Y2hhbmdlcyB0aGUgYXBwZW5kZWQgc3RyaW5nJ3MgZW5jb2RpbmcgKHdpdGggYC5mb3JjZV9lbmNv
ZGluZyAnQklOQVJZJ2ApIG9yIG5lZWRzIGFub3RoZXIgY29weSAod2l0aCBgLmJgKS4gV2hhdCBJ
IGFsd2F5cyB3aXNoZWQgd2UgaGFkIGlzIGEgbWV0aG9kIHRoYXQgZm9yY2VzIHRoZSBlbmNvZGlu
ZyBvZiBhIHN0cmluZyBvbmx5IGxvY2FsbHksIHdpdGhvdXQgbGVha2luZy4KCk9uZSB3YXkgdG8g
cmVhbGl6ZSB0aGlzIG1pZ2h0IGJlIHRoZSBmb2xsb3dpbmcgKFJ1YnkgYXMgcHNldWRvY29kZSk6
CgpgYGBydWJ5CmNsYXNzIFN0cmluZwogIGFsaWFzIDpvbGRfZm9yY2VfZW5jb2RpbmcgOmZvcmNl
X2VuY29kaW5nCgogIGRlZiBmb3JjZV9lbmNvZGluZyAoZW5jb2RpbmcpCiAgICBpZiBibG9ja19n
aXZlbj8KICAgICAgZW5jID0gZW5jb2RpbmcgICAgICAgICAjIHJlbWVtYmVyIGN1cnJlbnQgZW5j
b2RpbmcKICAgICAgb2xkX2ZvcmNlX2VuY29kaW5nIGVuY29kaW5nCiAgICAgIHlpZWxkCiAgICAg
IG9sZF9mb3JjZV9lbmNvZGluZyBlbmMgIyBzZXQgZW5jb2RpbmcgYmFjawogICAgZWxzZQogICAg
ICBvbGRfZm9yY2VfZW5jb2RpbmcgZW5jb2RpbmcKICAgIGVuZAogIGVuZAplbmQKYGBgCgpUaGlz
IHRoZW4gd291bGQgYmUgdXNlZCBlLmcuIGFzIGZvbGxvd3M6CgpgYGBydWJ5CmIgPSAnYScuZm9y
Y2VfZW5jb2RpbmcoJ0JJTkFSWScpCnUgPSAiXHUwMGZmIi5mb3JjZV9lbmNvZGluZygnVVRGLTgn
KSAgICMgYXNpZGU6IGZvcmNlX2VuY29kaW5nIGhlcmUgaXMgYSBuby1vcCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIFx1IGF1dG9tYXRpY2FsbHkgcHJv
ZHVjZXMgVVRGLTgKdS5mb3JjZV9lbmNvZGluZygnQklOQVJZJykgZG8KICBiIDw8IHUKZW5kCmBg
YAoKVGhhdCBpbiBteSBvcGluaW9uIHdvdWxkIGJlIHRoZSBjb25jZXB0dWFsbHkgcmlnaHQgd2F5
IHRvIGRvIHRoaW5ncy4KCldoYXQgcmVtYWlucyBpcyB0aGF0IGA8PGAgZm9yIGJ1ZmZlcnMgaXMg
aW4gbWFueSBjYXNlcyBub3QgdmVyeSBlZmZpY2llbnQ7IGl0IGNhbiBiZSB3YXkgbW9yZSBlZmZp
Y2llbnQgdG8gY29sbGVjdCB0aGUgYFN0cmluZ2BzIHRvIGJlIGFwcGVuZGVkIGluIGFuIGFycmF5
IGFuZCB0aGVuIGRvIGEgam9pbi4gU28gd2Ugc2hvdWxkIG5vdCBvbmx5IHRoaW5rIGFib3V0IHRo
aXMgaXNzdWUgZm9yIGA8PGAvYGNvbmNhdGAvYGFwcGVuZGAsIGJ1dCBhbHNvIGZvciBtb3JlIHdo
b2xlc2FsZSBtZXRob2RzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpGZWF0dXJlICMxNDk3NTogU3RyaW5nI2FwcGVuZCB3aXRob3V0IGNoYW5naW5nIHJlY2VpdmVy
J3MgZW5jb2RpbmcKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE0OTc1I2NoYW5n
ZS03Mzc4NAoKKiBBdXRob3I6IGlvcXVhdGl4IChTYW11ZWwgV2lsbGlhbXMpCiogU3RhdHVzOiBP
cGVuCiogUHJpb3JpdHk6IE5vcm1hbAoqIEFzc2lnbmVlOiAKKiBUYXJnZXQgdmVyc2lvbjogCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSSdtIG5vdCBzdXJlIHdoZXJl
IHRoaXMgZml0cyBpbiwgYnV0IGluIG9yZGVyIHRvIGF2b2lkIGdhcmJhZ2UgYW5kIHN1cGVyZmx1
b3VzIGZ1bmN0aW9uIGNhbGxzLCBpcyBpdCBwb3NzaWJsZSB0aGF0IGBTdHJpbmcjPDxgLCBgU3Ry
aW5nI2NvbmNhdGAgb3IgdGhlIChwcm9wb3NlZCkgYFN0cmluZyNhcHBlbmRgIGNhbiBhdm9pZCBj
aGFuZ2luZyB0aGUgZW5jb2Rpbmcgb2YgdGhlIHJlY2VpdmVyPwoKUmlnaHQgbm93IGl0J3MgdmVy
eSB0cmlja3kgdG8gZG8gdGhpcyBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgcmVxdWlyZSBleHRyYSBh
bGxvY2F0aW9ucy4gSGVyZSBpcyB3aGF0IEkgZG86CgpgYGBydWJ5CmNsYXNzIEJ1ZmZlciA8IFN0
cmluZwoJQklOQVJZID0gRW5jb2Rpbmc6OkJJTkFSWQoJCglkZWYgaW5pdGlhbGl6ZQoJCXN1cGVy
CgkJCgkJZm9yY2VfZW5jb2RpbmcoQklOQVJZKQoJZW5kCgkKCWRlZiA8PCBzdHJpbmcKCQlpZiBz
dHJpbmcuZW5jb2RpbmcgPT0gQklOQVJZCgkJCXN1cGVyKHN0cmluZykKCQllbHNlCgkJCXN1cGVy
KHN0cmluZy5iKSAjIFJlcXVpcmVzIGV4dHJhIGFsbG9jYXRpb24uCgkJZW5kCgkJCgkJcmV0dXJu
IHNlbGYKCWVuZAoJCglhbGlhcyBjb25jYXQgPDwKZW5kCmBgYAoKV2hlbiB0aGUgcmVjZWl2ZXIg
aXMgYmluYXJ5LCBidXQgY29udGFpbnMgYnl0ZSBzZXF1ZW5jZXMsIGFwcGVuZGluZyBVVEZfOCBj
YW4gZmFpbDoKCmBgYAoiRm9vYmFyIi5iIDw8ICJGw7jDuGJhciIKPT4gIkZvb2JhckbDuMO4YmFy
IgoKPiAiRsO4w7hiYXIiLmIgPDwgIkbDuMO4YmFyIgpFbmNvZGluZzo6Q29tcGF0aWJpbGl0eUVy
cm9yOiBpbmNvbXBhdGlibGUgY2hhcmFjdGVyIGVuY29kaW5nczogQVNDSUktOEJJVCBhbmQgVVRG
LTgKYGBgCgpTbywgaXQncyBub3QgcG9zc2libGUgdG8gYXBwZW5kIGRhdGEsIGdlbmVyYWxseSwg
YW5kIHRoZW4gY2FsbCBgZm9yY2VfZW5jb2RpbmcoRW5jb2Rpbmc6OkJJTkFSWSlgLiBPbmUgbXVz
dCBlbnN1cmUgdGhlIHN0cmluZyBpcyBiaW5hcnkgYmVmb3JlIGFwcGVuZGluZyBpdC4KCkl0IHdv
dWxkIGJlIG5pY2UgaWYgdGhlcmUgd2FzIGEgc29sdXRpb24gd2hpY2ggZGlkbid0IHJlcXVpcmUg
YWRkaXRpb25hbCBhbGxvY2F0aW9ucy9jb3BpZXMvbGluZWFyIHNjYW5zIGZvciB3aGF0IHNob3Vs
ZCBiYXNpY2FsbHkgYmUgYSBgbWVtY3B5YC4KClNlZSBhbHNvOiBodHRwczovL2J1Z3MucnVieS1s
YW5nLm9yZy9pc3N1ZXMvMTQwMzMgYW5kIGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vl
cy8xMzYyNiNub3RlLTMKClRoZXJlIGFyZSB0d28gb3B0aW9ucyB0byBmaXggdGhpczoKCjEvIERv
bid0IGNoYW5nZSByZWNlaXZlciBlbmNvZGluZyBpbiBhbnkgY2FzZS4KMi8gQXBwbHkgMSwgYnV0
IG9ubHkgd2hlbiByZWNlaXZlciBpcyB1c2luZyBgRW5jb2Rpbmc6OkJJTkFSWWAKCgoKCi0tIApo
dHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29y
ZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0
cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K

In This Thread

Prev Next