[ruby-core:78219] [Ruby trunk Feature#12960] [psych] new visitor class to generate custom object instead of Hash

From: duerst@...
Date: 2016-11-19 09:51:14 UTC
List: ruby-core #78219
SXNzdWUgIzEyOTYwIGhhcyBiZWVuIHVwZGF0ZWQgYnkgTWFydGluIETDvHJzdC4KCgptYWtvdG8g
a3V3YXRhIHdyb3RlOgoKPiAoSSBjYW4ndCBmaW5kIGFueSBidXR0b24gdG8gY2xvc2UgdGhpcyBp
c3N1ZS4gUGxlYXNlIGNsb3NlIHRoaXMuKQoKVGhlIHN0YXR1cyBpcyBhbHJlYWR5ICJUaGlyZCBQ
YXJ0eSdzIElzc3VlIi4gWW91IGNhbiB0aGluayBhYm91dCB0aGlzIGFzIGEgc3ViY2F0ZWdvcnkg
b2YgIkNsb3NlZCIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZl
YXR1cmUgIzEyOTYwOiBbcHN5Y2hdIG5ldyB2aXNpdG9yIGNsYXNzIHRvIGdlbmVyYXRlIGN1c3Rv
bSBvYmplY3QgaW5zdGVhZCBvZiBIYXNoCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vl
cy8xMjk2MCNjaGFuZ2UtNjE1ODQKCiogQXV0aG9yOiBtYWtvdG8ga3V3YXRhCiogU3RhdHVzOiBU
aGlyZCBQYXJ0eSdzIElzc3VlCiogUHJpb3JpdHk6IE5vcm1hbAoqIEFzc2lnbmVlOiAKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJIGNyZWF0ZSBhIHBhdGNoIHRvIGRl
ZmluZSBuZXcgdXNlZnVsIHZpc2l0b3IgY2xhc3MgZm9yIFBzeWNoLgpJdCBnZW5lcmF0ZXMgY3Vz
dG9tIG9iamVjdCBhcyBtYXBwaW5nIGRhdGEgaW5zdGVhZCBvZiBIYXNoLgoKTm9ybWFsbHksIHlv
dSBtdXN0IGFjY2VzcyBZQU1MIGRvY3VtZW50IGRhdGEgbGlrZSBgeWRvY1siZm9vIl1bImJhciJd
WyJiYXoiXWAuClVzaW5nIHRoaXMgY2xhc3MsIHlvdSBjYW4gYWNjZXNzIGRhdGEgbGlrZSBgeWRv
Yy5mb28uYmFyLmJhemAuCgpFeGFtcGxlMTogY3JlYXRlIGN1c3RvbSBvYmplY3QgaW5zdGVhZCBv
ZiBIYXNoIGFjY29yZGluZyB0byBjb250ZXh0Cgp+fn4gcnVieQogICAgIyMgZGVmaW5lIGN1c3Rv
bSBjbGFzc2VzCiAgICBUZWFtICAgPSBTdHJ1Y3QubmV3KCdUZWFtJywgJ25hbWUnLCAnbWVtYmVy
cycpCiAgICBNZW1iZXIgPSBTdHJ1Y3QubmV3KCdNZW1iZXInLCAnbmFtZScsICdnZW5kZXInKQog
ICAgIyMgY3JlYXRlIHZpc2l0b3Igb2JqZWN0CiAgICByZXF1aXJlICdwc3ljaCcKICAgIHJlcXVp
cmUgJ3BzeWNoL3Zpc2l0b3JzL2N1c3RvbV9jbGFzcycKICAgIGNsYXNzbWFwID0gewogICAgICAi
dGVhbXMiICAgPT4gVGVhbSwKICAgICAgIm1lbWJlcnMiID0+IE1lbWJlciwKICAgIH0KICAgIHZp
c2l0b3IgPSBQc3ljaDo6VmlzaXRvcnM6OkN1c3RvbUNsYXNzVmlzaXRvci5jcmVhdGUoY2xhc3Nt
YXApCiAgICAjIyBleGFtcGxlIFlBTUwgc3RyaW5nCiAgICBpbnB1dCA9IDw8LSdFTkQnCiAgICB0
ZWFtczoKICAgICAgLSBuYW1lOiBTT1MgQnJpZ2FkZQogICAgICAgIG1lbWJlcnM6CiAgICAgICAg
ICAtIHtuYW1lOiBIYXJ1aGksIGdlbmRlcjogRn0KICAgICAgICAgIC0ge25hbWU6IEt5b24sICAg
Z2VuZGVyOiBNfQogICAgICAgICAgLSB7bmFtZTogTWlrdXJ1LCBnZW5kZXI6IEZ9CiAgICAgICAg
ICAtIHtuYW1lOiBJdHN1a2ksIGdlbmRlcjogTX0KICAgICAgICAgIC0ge25hbWU6IFl1a2ksICAg
Z2VuZGVyOiBGfQogICAgRU5ECiAgICAjIyBwYXJzZSBZQU1MIHN0cmluZyB3aXRoIGNyZWF0aW5n
IFRlYW0gb3IgTWVtYmVyIG9iamVjdHMgYWNjb3JkaW5nIHRvIGNvbnRleHQKICAgIHRyZWUgPSBQ
c3ljaC5wYXJzZShpbnB1dCkKICAgIHlkb2MgPSB2aXNpdG9yLmFjY2VwdCh0cmVlKQogICAgcCB5
ZG9jWyd0ZWFtcyddWzBdLmNsYXNzICAgICAgICAgICAgICAgICM9PiBTdHJ1Y3Q6OlRlYW0KICAg
IHAgeWRvY1sndGVhbXMnXVswXVsnbWVtYmVycyddWzBdLmNsYXNzICAjPT4gU3RydWN0OjpNZW1i
ZXIKICAgIHRlYW0gPSB5ZG9jWyd0ZWFtcyddWzBdCiAgICBwIHRlYW0ubmFtZSAgICAgICAgICAg
ICAgICAjPT4gIlNPUyBCcmlnYWRlIgogICAgcCB0ZWFtLm1lbWJlcnNbMF0ubmFtZSAgICAgIz0+
ICJIYXJ1aGkiCiAgICBwIHRlYW0ubWVtYmVyc1swXS5nZW5kZXIgICAjPT4gIkYiCn5+fgoKRXhh
bXBsZTI6IGNyZWF0ZSBjdXN0b20gaGFzaCBvYmplY3QKCn5+fiBydWJ5CiAgICAjIyBhbGxvd3Mg
YGhhc2guZm9vYCBpbnN0ZWFkIG9mIGBoYXNoWyJmb28iXWAKICAgIGNsYXNzIE1hZ2ljSGFzaCA8
IEhhc2gKICAgICAgZGVmIG1ldGhvZF9taXNzaW5nKG1ldGhvZCwgKmFyZ3MpCiAgICAgICAgcmV0
dXJuIHN1cGVyIHVubGVzcyBhcmdzLmVtcHR5PwogICAgICAgIHJldHVybiBzZWxmW21ldGhvZC50
b19zXQogICAgICBlbmQKICAgIGVuZAogICAgIyMgY3JlYXRlIHZpc2l0b3Igd2l0aCBNYWdpY0hh
c2gKICAgIHJlcXVpcmUgJ3BzeWNoJwogICAgcmVxdWlyZSAncHN5Y2gvdmlzaXRvcnMvY3VzdG9t
X2NsYXNzJwogICAgY2xhc3NtYXAgPSB7JyonID0+IE1hZ2ljSGFzaH0gICAjICcqJyBtZWFucyBk
ZWZhdWx0IGNsYXNzCiAgICB2aXNpdG9yID0gUHN5Y2g6OlZpc2l0b3JzOjpDdXN0b21DbGFzc1Zp
c2l0b3IuY3JlYXRlKGNsYXNzbWFwKQogICAgIyMgZXhhbXBsZSBZQU1MIGRvY3VtZW50CiAgICBp
bnB1dCA9IDw8LSdFTkQnCiAgICB0ZWFtczoKICAgICAgLSBuYW1lOiBTT1MgQnJpZ2FkZQogICAg
ICAgIG1lbWJlcnM6CiAgICAgICAgICAtIHtuYW1lOiBIYXJ1aGksIGdlbmRlcjogRn0KICAgICAg
ICAgIC0ge25hbWU6IEt5b24sICAgZ2VuZGVyOiBNfQogICAgICAgICAgLSB7bmFtZTogTWlrdXJ1
LCBnZW5kZXI6IEZ9CiAgICAgICAgICAtIHtuYW1lOiBJdHN1a2ksIGdlbmRlcjogTX0KICAgICAg
ICAgIC0ge25hbWU6IFl1a2ksICAgZ2VuZGVyOiBGfQogICAgRU5ECiAgICAjIyBwYXJzZSBZQU1M
IHN0cmluZyB3aXRoIGNyZWF0aW5nIGN1c3RvbSBoYXNoIG9iamVjdCBpbnN0ZWFkIG9mIEhhc2gK
ICAgIHRyZWUgPSBQc3ljaC5wYXJzZShpbnB1dCkKICAgIHlkb2MgPSB2aXNpdG9yLmFjY2VwdCh0
cmVlKQogICAgcCB5ZG9jLmNsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICM9PiBNYWdp
Y0hhc2gKICAgIHAgeWRvY1sndGVhbXMnXVswXS5jbGFzcyAgICAgICAgICAgICAgICAjPT4gTWFn
aWNIYXNoCiAgICBwIHlkb2NbJ3RlYW1zJ11bMF1bJ21lbWJlcnMnXVswXS5jbGFzcyAgIz0+IE1h
Z2ljSGFzaAogICAgcCB5ZG9jLnRlYW1zWzBdLm1lbWJlcnNbMF0ubmFtZSAgICAjPT4gIkhhcnVo
aSIKICAgIHAgeWRvYy50ZWFtc1swXS5tZW1iZXJzWzBdLmdlbmRlciAgIz0+ICJGIgp+fn4KCkkg
YmVsaWV2ZSB0aGlzIGNsYXNzIGlzIHZlcnkgdXNlZnVsLCBhbmQgaG9wZSBpdCB0byBiZSBpbXBv
cnRlZCBpbnRvIHJ1YnkgcmVwb3NpdG9yeS4KTGV0IG1lIGtub3cgeW91ciBvcGluaW9uIG9yIGlt
cHJlc3Npb24uCgotLS1GaWxlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjAwMDIt
ZmVhdC1wc3ljaC1hbGxvdy1jdXN0b20tSGFzaC1vYmplY3QtZm9yLXVua25vd24tdGFnZy5wYXRj
aCAoNzgxIEJ5dGVzKQowMDAxLWZlYXQtcHN5Y2gtYWxsb3ctdG8tZ2VuZXJhdGUtY3VzdG9tLUhh
c2gtb2JqZWN0LnBhdGNoICgyLjA0IEtCKQowMDAzLWZlYXQtcHN5Y2gtYWRkLWhvb2stcG9pbnQt
Zm9yLW1hcHBpbmcta2V5LWFuZC12YWx1ZS5wYXRjaCAoMi4zNSBLQikKMDAwNC1mZWF0LXBzeWNo
LWFkZC1ob29rLXBvaW50cy1mb3ItbWFwcGluZy1saWtlLW9iamVjdC5wYXRjaCAoMi43IEtCKQow
MDA1LWZlYXQtcHN5Y2gtYWRkLWhvb2stcG9pbnRzLWZvci1tZXJnZS5wYXRjaCAoMS41MyBLQikK
MDAwNi1mZWF0LXBzeWNoLXJlZmFjdG9yLWhvb2stcG9pbnQtbWV0aG9kcy1mb3ItbWVyZ2UucGF0
Y2ggKDg4MyBCeXRlcykKMDAwOC1mZWF0LXBzeWNoLXN1cHBvcnQta2V5LWZvci1kZWZhdWx0LWN1
c3RvbS1jbGFzcy5wYXRjaCAoMi4zOCBLQikKMDAwNy1mZWF0LXBzeWNoLWRlZmluZS1Qc3ljaC1W
aXNpdG9ycy1DdXN0b21DbGFzc1Zpc2l0b3ItLnBhdGNoICgzLjE0IEtCKQowMDA5LWZlYXQtcHN5
Y2gtYWRkLXRlc3Qtc2NyaXB0LnBhdGNoICgyLjcgS0IpCjAwMTAtZmVhdC1wc3ljaC1hZGQtYW5v
dGhlci10ZXN0LWNhc2UucGF0Y2ggKDEuNzQgS0IpCgoKLS0gCmh0dHBzOi8vYnVncy5ydWJ5LWxh
bmcub3JnLwoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3JlLXJlcXVlc3RAcnVieS1sYW5n
Lm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3RzLnJ1YnktbGFuZy5vcmcvY2dp
LWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=

In This Thread

Prev Next