From: Daniel Berger Date: 2005-05-16T06:49:31+09:00 Subject: Forwardable, reworked --0-1806059802-1116193748=:75528 Content-Type: text/plain; charset=us-ascii Content-Id: Content-Disposition: inline Hi all, A while back I mentioned that there were warnings coming from the Forwardable module. Because I would like to use it with another project I'm working on, I decided to refactor it (attached). As far as I can tell, the SingleForwardable module is completely unnecessary, although you may not like my begin/rescue approach. If there's a better way, I'd like to hear it. I've also attached a test suite (test_forwardable.rb). Perhaps this could be included under test/forwardable (which would have to be created). Please let me know what you think. Regards, Dan __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --0-1806059802-1116193748=:75528 Content-Type: application/x-ruby; name="forwardable.rb" Content-Transfer-Encoding: base64 Content-Description: 3074922020-forwardable.rb Content-Disposition: attachment; filename="forwardable.rb" bW9kdWxlIEZvcndhcmRhYmxlCiAgIEZPUldBUkRBQkxFX1ZFUlNJT04gPSAi MS4wLjAiCgogICBkZWYgZGVmX2luc3RhbmNlX2RlbGVnYXRvcnMoYWNjZXNz b3IsICptZXRob2RzKQogICAgICBtZXRob2RzLmRlbGV0ZV9pZnsgfG1ldGhv ZHwKICAgICAgICAgbWV0aG9kID09ICJfX3NlbmRfXyIgfHwKICAgICAgICAg bWV0aG9kID09ICJfX2lkX18iCiAgICAgIH0KICAgICAgbWV0aG9kcy5lYWNo eyB8bWV0aG9kfAogICAgICAgICBkZWZfaW5zdGFuY2VfZGVsZWdhdG9yKGFj Y2Vzc29yLCBtZXRob2QpCiAgICAgIH0KICAgZW5kCgogICBkZWYgZGVmX2lu c3RhbmNlX2RlbGVnYXRvcihhY2Nlc3NvciwgbWV0aG9kLCBhbGkgPSBtZXRo b2QpCiAgICAgIHN0ciA9ICVRewogICAgICAgICBkZWYgI3thbGl9KCphcmdz LCAmYmxvY2spCiAgICAgICAgICAgICN7YWNjZXNzb3J9LnNlbmQoOiN7bWV0 aG9kfSwgKmFyZ3MsICZibG9jaykKICAgICAgICAgZW5kCiAgICAgIH0KICAg ICAgIyBJcyB0aGVyZSBhIGJldHRlciB3YXkgdGhhbiB0aGlzPwogICAgICBi ZWdpbgogICAgICAgICBtb2R1bGVfZXZhbChzdHIpCiAgICAgIHJlc2N1ZQog ICAgICAgICBpbnN0YW5jZV9ldmFsKHN0cikKICAgICAgZW5kCiAgZW5kCgog IGFsaWFzIGRlZl9kZWxlZ2F0b3JzIGRlZl9pbnN0YW5jZV9kZWxlZ2F0b3Jz CiAgYWxpYXMgZGVmX2RlbGVnYXRvciBkZWZfaW5zdGFuY2VfZGVsZWdhdG9y CmVuZAo= --0-1806059802-1116193748=:75528 Content-Type: application/x-ruby; name="test_forwardable.rb" Content-Transfer-Encoding: base64 Content-Description: 1436886729-test_forwardable.rb Content-Disposition: attachment; filename="test_forwardable.rb" IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoj IHRlc3RfZm9yd2FyZGFibGUucmIKIwojIFRlc3Qgc3VpdGUgZm9yIHRoZSBG b3J3YXJkYWJsZSBtb2R1bGUuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKcmVxdWlyZSAidGVzdC91bml0IgpyZXF1aXJl ICJmb3J3YXJkYWJsZSIKCmNsYXNzIEZvbwogICBleHRlbmQgRm9yd2FyZGFi bGUKICAgZGVmX2RlbGVnYXRvcnMoOkBhcnIsKihBcnJheS5pbnN0YW5jZV9t ZXRob2RzKSkKICAgZGVmX2RlbGVnYXRvcig6QHN0ciwgOmxlbmd0aCkKICAg ZGVmIGluaXRpYWxpemUKICAgICAgQGFyciA9IFtdCiAgICAgIEBzdHIgPSAi Zm9vIgogICBlbmQKZW5kCgpIQVNIID0geyJmb28iPT4xLCAiYmF6Ij0+Miwg InphcCI9PjN9CgpjbGFzcyBUQ19Gb3J3YXJkYWJsZSA8IFRlc3Q6OlVuaXQ6 OlRlc3RDYXNlCgogICBkZWYgc2V0dXAKICAgICAgQGZvbyA9IEZvby5uZXcK ICAgICAgQGJhciA9ICJiYXIiCiAgICAgIEBiYXIuZXh0ZW5kIEZvcndhcmRh YmxlCiAgIGVuZAoKICAgZGVmIHRlc3RfZGVmX2RlbGVnYXRvcnNfY2xhc3MK ICAgICAgYXNzZXJ0X3Jlc3BvbmRfdG8oRm9vLCA6ZGVmX2RlbGVnYXRvcnMp ICAgICAgICAgIyBBbGlhcwogICAgICBhc3NlcnRfcmVzcG9uZF90byhGb28s IDpkZWZfaW5zdGFuY2VfZGVsZWdhdG9ycykKICAgZW5kCgogICBkZWYgdGVz dF9kZWZfZGVsZWdhdG9yc19pbnN0YW5jZQogICAgICBhc3NlcnRfbm90aGlu Z19yYWlzZWR7IEBiYXIuZGVmX2RlbGVnYXRvcig6SEFTSCwgOmxlbmd0aCwg OnF1YW50aXR5KSB9CiAgICAgIGFzc2VydF9yZXNwb25kX3RvKEBiYXIsIDpx dWFudGl0eSkKICAgICAgYXNzZXJ0X2VxdWFsKDMsIEBiYXIucXVhbnRpdHkp CgogICBlbmQKCiAgICMgTWFrZSBzdXJlIEBiYXIgZG9lc24ndCByZXNwb25k IHRvIGFueSBvdGhlciBIYXNoIG1ldGhvZHMKICAgZGVmIHRlc3RfZGVmX2Rl bGVnYXRvcnNfaW5zdGFuY2Vfbm90X2RlZmluZWQKICAgICAgYXNzZXJ0X3Jh aXNlcyhOb01ldGhvZEVycm9yKXsgQGJhci5rZXlzIH0KICAgICAgYXNzZXJ0 X3JhaXNlcyhOb01ldGhvZEVycm9yKXsgQGJhci52YWx1ZXMgfQogICAgICBh c3NlcnRfcmFpc2VzKE5vTWV0aG9kRXJyb3IpeyBAYmFyLmhhc19rZXk/IH0K ICAgZW5kCgogICBkZWYgdGVzdF9kZWZfZGVsZWdhdG9yX2NsYXNzCiAgICAg IGFzc2VydF9yZXNwb25kX3RvKEZvbywgOmRlZl9kZWxlZ2F0b3IpICAgICAg ICAgICMgQWxpYXMKICAgICAgYXNzZXJ0X3Jlc3BvbmRfdG8oRm9vLCA6ZGVm X2luc3RhbmNlX2RlbGVnYXRvcikKICAgZW5kCgogICBkZWYgdGVzdF9kZWZf ZGVsZWdhdG9yX2luc3RhbmNlCiAgICAgIGFzc2VydF9yZXNwb25kX3RvKEBi YXIsIDpkZWZfZGVsZWdhdG9yKSAgICAgICAgICAjIEFsaWFzCiAgICAgIGFz c2VydF9yZXNwb25kX3RvKEBiYXIsIDpkZWZfaW5zdGFuY2VfZGVsZWdhdG9y KQogICBlbmQKCiAgIGRlZiB0ZXN0X2RlbGVnYXRlZF9hcnJheV9tZXRob2Rz CiAgICAgIGFzc2VydF9yZXNwb25kX3RvKEBmb28sIDpwdXNoKQogICAgICBh c3NlcnRfcmVzcG9uZF90byhAZm9vLCA6cG9wKQogICAgICBhc3NlcnRfcmVz cG9uZF90byhAZm9vLCA6bGVuZ3RoKQogICAgICBhc3NlcnRfZXF1YWwoWyJi YXIiXSwgQGZvby5wdXNoKCJiYXIiKSkKICAgICAgYXNzZXJ0X2VxdWFsKCJi YXIiLCBAZm9vLnBvcCkKICAgZW5kCgogICAjIEVuc3VyZSB0aGF0IEBmb28g cmVzcG9uZHMgb25seSB0byA6bGVuZ3RoIGFuZCBubyBvdGhlciBTdHJpbmcg bWV0aG9kcwogICBkZWYgdGVzdF9kZWxlZ2F0ZWRfc3RyaW5nX21ldGhvZAog ICAgICBhc3NlcnRfcmVzcG9uZF90byhAZm9vLCA6bGVuZ3RoKQogICAgICBh c3NlcnRfZXF1YWwoMywgQGZvby5sZW5ndGgpCiAgICAgIGFzc2VydF9yYWlz ZXMoTm9NZXRob2RFcnJvcil7IEBmb28uY2hvcCB9CiAgICAgIGFzc2VydF9y YWlzZXMoTm9NZXRob2RFcnJvcil7IEBmb28uc3RyaXAgfQogICBlbmQKCiAg IGRlZiB0ZWFyZG93bgogICAgICBAZm9vID0gbmlsCiAgICAgIEBiYXIgPSBu aWwKICAgZW5kCmVuZAo= --0-1806059802-1116193748=:75528--