From: Nobuyoshi Nakada Date: 2010-10-28T19:17:23+09:00 Subject: [ruby-dev:42477] [Ruby 1.9-Feature#3995][Open] Hash#update with Enumerable --mimepart_4cc94db2eb71b_ef6b391452268a Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Feature #3995: Hash#update with Enumerable http://redmine.ruby-lang.org/issues/show/3995 起票者: Nobuyoshi Nakada ステータス: Open, 優先度: Normal [ruby-dev:42476]でMLからの登録に失敗したので再登録します 今のところHash#updateはHashしか受け付けませんが、Enumerableまで 受け付けるように拡張するのはどうでしょうか。 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4cc94db2eb71b_ef6b391452268a Content-Type: application/octet-stream; name=hash_update.diff Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=hash_update.diff ZGlmZiAtLWdpdCBpL2hhc2guYyB3L2hhc2guYwppbmRleCA4NzMyMTlhLi44 ZDBjNzJhIDEwMDY0NAotLS0gaS9oYXNoLmMKKysrIHcvaGFzaC5jCkBAIC0x NzQ4LDYgKzE3NDgsNDUgQEAgcmJfaGFzaF91cGRhdGVfYmxvY2tfaShWQUxV RSBrZXksIFZBTFVFIHZhbHVlLCBWQUxVRSBoYXNoKQogICAgIHJldHVybiBT VF9DT05USU5VRTsKIH0KIAorc3RhdGljIFZBTFVFCityYl9lbnVtX3VwZGF0 ZV9pKFZBTFVFIG9iaiwgVkFMVUUgaGFzaCwgaW50IGFyZ2MsIFZBTFVFICph cmd2KQoreworICAgIGlmIChhcmdjID09IDEgJiYgUkJfVFlQRV9QKG9iaiwg VF9BUlJBWSkpIHsKKwlhcmdjID0gUkFSUkFZX0xFTihvYmopOworCWFyZ3Yg PSBSQVJSQVlfUFRSKG9iaik7CisgICAgfQorICAgIGlmIChhcmdjID09IDIp IHsKKwlzdF9pbnNlcnQoUkhBU0goaGFzaCktPm50YmwsIGFyZ3ZbMF0sIGFy Z3ZbMV0pOworICAgIH0KKyAgICByZXR1cm4gUW5pbDsKK30KKworc3RhdGlj IFZBTFVFCityYl9lbnVtX3VwZGF0ZV9ibG9ja19pKFZBTFVFIG9iaiwgVkFM VUUgaGFzaCwgaW50IGFyZ2MsIFZBTFVFICphcmd2KQoreworICAgIFZBTFVF IGtleSwgdmFsdWUgPSBRdW5kZWYsIG9sZHZhbDsKKyAgICBpZiAoYXJnYyA9 PSAxICYmIFJCX1RZUEVfUChvYmosIFRfQVJSQVkpKSB7CisJYXJnYyA9IFJB UlJBWV9MRU4ob2JqKTsKKwlhcmd2ID0gUkFSUkFZX1BUUihvYmopOworICAg IH0KKyAgICBzd2l0Y2ggKGFyZ2MpIHsKKyAgICAgIGNhc2UgMjoKKwl2YWx1 ZSA9IGFyZ3ZbMV07CisgICAgICBjYXNlIDE6CisJa2V5ID0gYXJndlswXTsK KwlvbGR2YWwgPSByYl9oYXNoX2xvb2t1cDIoaGFzaCwga2V5LCBRdW5kZWYp OworCWlmIChvbGR2YWwgIT0gUXVuZGVmKSB7CisJICAgIHZhbHVlID0gcmJf eWllbGRfdmFsdWVzKGFyZ2MgKyAxLCBrZXksIG9sZHZhbCwgdmFsdWUpOwor CX0KKwllbHNlIGlmICh2YWx1ZSA9PSBRdW5kZWYpIHsKKwkgICAgdmFsdWUg PSByYl95aWVsZChrZXkpOworCX0KKwlzdF9pbnNlcnQoUkhBU0goaGFzaCkt Pm50YmwsIGtleSwgdmFsdWUpOworCWJyZWFrOworICAgIH0KKyAgICByZXR1 cm4gUW5pbDsKK30KKwogLyoKICAqICBjYWxsLXNlcToKICAqICAgICBoc2gu bWVyZ2UhKG90aGVyX2hhc2gpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gaHNoCkBAIC0xNzY5LDEzICsxODA4LDM2IEBAIHJiX2hhc2hf dXBkYXRlX2Jsb2NrX2koVkFMVUUga2V5LCBWQUxVRSB2YWx1ZSwgVkFMVUUg aGFzaCkKICAqICAgICBoMiA9IHsgImIiID0+IDI1NCwgImMiID0+IDMwMCB9 CiAgKiAgICAgaDEubWVyZ2UhKGgyKSB7IHxrZXksIHYxLCB2MnwgdjEgfQog ICogICAgICAgICAgICAgICAgICAgICAjPT4geyJhIj0+MTAwLCAiYiI9PjIw MCwgImMiPT4zMDB9CisgKgorICogIElmIDxpPm90aGVyX2hhc2g8L2k+IGlz IG5vdCBhIEhhc2ggYnV0IGFuIEVudW1lcmFibGUsIGl0cyAjZWFjaAorICog IG1ldGhvZCBzaG91bGQgeWllbGQgW2tleSwgbmV3dmFsXSBwYWlycyBvciBt ZXJlIGtleS4gIEluIHRoZSBsYXR0ZXIKKyAqICBjYXNlLCB0aGVnaXZlbiBi bG9jayBpcyBhbHdheXMgY2FsbGVkIHJlZ2FyZGxlc3Mgb2xkdmFsLCBidXQg d2l0aG91dAorICogIG5ld3ZhbC4KKyAqCisgKiAgICAgaDEgPSB7ICJhIiA9 PiAxMDAsICJiIiA9PiAyMDAgfQorICogICAgIGUxID0gW1siYiIsIDI1NF0s IFsiYyIsIDMwMF1dCisgKiAgICAgaDEubWVyZ2UhKGUxKSB7IHxrZXksICp2 fCB2IH0KKyAqICAgICAgICAgICAgICAgICAgICAgIz0+IHsiYSI9PjEwMCwg ImIiPT5bMjAwLDI1NF0sICJjIj0+MzAwfQorICoKKyAqICAgICBoMSA9IHsg ImEiID0+IDEwMCwgImIiID0+IDIwMCB9CisgKiAgICAgZTEgPSBbWyJiIl0s IFsiYyJdXQorICogICAgIGgxLm1lcmdlIShlMSkgeyB8a2V5LCB2MSwgdjJ8 IHYxIH0KKyAqICAgICAgICAgICAgICAgICAgICAgIz0+IHsiYSI9PjEwMCwg ImIiPT5bMjAwXSwgImMiPT5bXX0KICAqLwogCiBzdGF0aWMgVkFMVUUKIHJi X2hhc2hfdXBkYXRlKFZBTFVFIGhhc2gxLCBWQUxVRSBoYXNoMikKIHsKKyAg ICBWQUxVRSB0bXA7CiAgICAgcmJfaGFzaF9tb2RpZnkoaGFzaDEpOwotICAg IGhhc2gyID0gdG9faGFzaChoYXNoMik7CisgICAgdG1wID0gcmJfY2hlY2tf aGFzaF90eXBlKGhhc2gyKTsKKyAgICBpZiAoTklMX1AodG1wKSkgeworCVZB TFVFICgqYmZ1bmMpKEFOWUFSR1MpID0gcmJfYmxvY2tfZ2l2ZW5fcCgpID8K KwkgICAgcmJfZW51bV91cGRhdGVfYmxvY2tfaSA6IHJiX2VudW1fdXBkYXRl X2k7CisJcmJfZWFjaF9jYWxsKGhhc2gyLCAwLCAwLCBiZnVuYywgaGFzaDEp OworCXJldHVybiBoYXNoMTsKKyAgICB9CisgICAgaGFzaDIgPSB0bXA7CiAg ICAgaWYgKHJiX2Jsb2NrX2dpdmVuX3AoKSkgewogCXJiX2hhc2hfZm9yZWFj aChoYXNoMiwgcmJfaGFzaF91cGRhdGVfYmxvY2tfaSwgaGFzaDEpOwogICAg IH0KZGlmZiAtLWdpdCBpL2luY2x1ZGUvcnVieS9ydWJ5Lmggdy9pbmNsdWRl L3J1YnkvcnVieS5oCmluZGV4IDRhM2UwZmYuLmFhNzgwOGIgMTAwNjQ0Ci0t LSBpL2luY2x1ZGUvcnVieS9ydWJ5LmgKKysrIHcvaW5jbHVkZS9ydWJ5L3J1 YnkuaApAQCAtMTE2NCw2ICsxMTY0LDcgQEAgUFJJTlRGX0FSR1Modm9pZCBy Yl9jb21waWxlX3dhcm4oY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIq LCAuLi4pLCAzLCA0KTsKIHR5cGVkZWYgVkFMVUUgcmJfYmxvY2tfY2FsbF9m dW5jKFZBTFVFLCBWQUxVRSwgaW50LCBWQUxVRSopOwogCiBWQUxVRSByYl9l YWNoKFZBTFVFKTsKK1ZBTFVFIHJiX2VhY2hfY2FsbChWQUxVRSxpbnQsVkFM VUUqLFZBTFVFKCopKEFOWUFSR1MpLFZBTFVFKTsKIFZBTFVFIHJiX3lpZWxk KFZBTFVFKTsKIFZBTFVFIHJiX3lpZWxkX3ZhbHVlcyhpbnQgbiwgLi4uKTsK IFZBTFVFIHJiX3lpZWxkX3ZhbHVlczIoaW50IG4sIGNvbnN0IFZBTFVFICph cmd2KTsKZGlmZiAtLWdpdCBpL3ZtX2V2YWwuYyB3L3ZtX2V2YWwuYwppbmRl eCAwNWZkM2ZhLi42ZjkzODk3IDEwMDY0NAotLS0gaS92bV9ldmFsLmMKKysr IHcvdm1fZXZhbC5jCkBAIC05NDcsNiArOTQ3LDEyIEBAIHJiX2VhY2goVkFM VUUgb2JqKQogICAgIHJldHVybiByYl9jYWxsKG9iaiwgaWRFYWNoLCAwLCAw LCBDQUxMX0ZDQUxMKTsKIH0KIAorVkFMVUUKK3JiX2VhY2hfY2FsbChWQUxV RSBvYmosIGludCBhcmdjLCBWQUxVRSAqYXJndiwgVkFMVUUgKCpibF9wcm9j KShBTllBUkdTKSwgVkFMVUUgYXJnKQoreworICAgIHJldHVybiByYl9ibG9j a19jYWxsKG9iaiwgaWRFYWNoLCBhcmdjLCBhcmd2LCBibF9wcm9jLCBhcmcp OworfQorCiBzdGF0aWMgVkFMVUUKIGV2YWxfc3RyaW5nX3dpdGhfY3JlZihW QUxVRSBzZWxmLCBWQUxVRSBzcmMsIFZBTFVFIHNjb3BlLCBOT0RFICpjcmVm LCBjb25zdCBjaGFyICp2b2xhdGlsZSBmaWxlLCB2b2xhdGlsZSBpbnQgbGlu ZSkKIHsK --mimepart_4cc94db2eb71b_ef6b391452268a--