[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=