--------------060801030200040103040403 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Matthew Moss wrote: > Here is my partial solution for the Quoted Printable quiz. I'm still > pretty new to Ruby, so it took me a while to get what you see here. I > think the only thing I didn't get to adding was line length checks. And here's mine as well. Sorry for being late -- I coded this up on Friday and forgot about it until today. It ought to handle everything correctly (including proper wrapping of lines that end in encoded characters) and it does most of the work with a few simple regular expressions. --------------060801030200040103040403 Content-Type: application/x-ruby; name uoted_printable.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename uoted_printable.rb" bW9kdWxlIFF1b3RlZFByaW50YWJsZQ0KICBleHRlbmQgc2VsZg0KDQogICMgRW5jb2RlcyB0 ZXh0IGFzIHF1b3RlZCBwcmludGFibGUuIFRoZSBzZWNvbmQgYXJndW1lbnQgc3BlY2lmaWVz IGNoYXJhY3RlcnMgdGhhdA0KICAjIHNob3VsZCBiZSBlbmNvZGVkIGluIGFkZGl0aW9uIHRv IHRoZSBvbmVzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgcXVvdGVkIG9uZXMuDQogICMgSXQg aXMgYSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgY2hhcmFjdGVycyBhbmQgY2hhcmFjdGVyIHJh bmdlcyBhcyB0YWtlbiBieQ0KICAjIFN0cmluZyNkZWxldGUgYW5kIHNvIG9uLg0KICBkZWYg ZW5jb2RlKHRleHQsIGFsc29fZW5jb2RlID0gIiIpDQogICAgdGV4dC5nc3ViKC9bXHQgXVxz fFs9XHgwMC1ceDA4XHgwQi1ceDFGXHg3RS1ceEZGI3thbHNvX2VuY29kZX1dLykgZG8gfGNo YXJ8DQogICAgICAiPSUwMlgiICUgY2hhclswXSArIGNoYXJbMSAuLiAtMV0NCiAgICBlbmQu Z3N1YigvXiguezc1fSkoLnsyLH0pJC8pIGRvIHxtYXRjaHwNCiAgICAgIGJhc2UsIGNvbnRp bnVhdGlvbiA9ICQxLCAkMg0KICAgICAgY29udGludWF0aW9uID0gYmFzZS5zbGljZSEoLz0o LnswLDJ9KVxaLykudG9fcyArIGNvbnRpbnVhdGlvbg0KICAgICAgYmFzZSArICI9XG4iICsg Y29udGludWF0aW9uDQogICAgZW5kLmdzdWIoIlxuIiwgIlxyXG4iKQ0KICBlbmQNCg0KICAj IERlY29kZXMgcXVvdGVkIHByaW50YWJsZSB0ZXh0LiBUaGUgc2Vjb25kIGFyZ3VtZW50IHNw ZWNpZmllcyB3aGV0aGVyID1hZiBzaG91bGQNCiAgIyBiZSBhY2NlcHRlZCBhcyB3ZWxsIGFz ID1BRi4NCiAgZGVmIGRlY29kZSh0ZXh0LCBhbGxvd19sb3dlcmNhc2UgPSBmYWxzZSkNCiAg ICBlbmNvZGVkX3JlID0gUmVnZXhwLm5ldygiPShbMC05QS1GXXsyfSkiLCBhbGxvd19sb3dl cmNhc2UgPyAiaSIgOiAiIikNCiAgICB0ZXh0LmdzdWIoIlxyXG4iLCAiXG4iKS5nc3ViKCI9 XG4iLCAiIikuZ3N1YihlbmNvZGVkX3JlKSBkbw0KICAgICAgJDEudG9faSgxNikuY2hyDQog ICAgZW5kDQogIGVuZA0KZW5kDQoNCmlmIF9fRklMRV9fID09ICQwIHRoZW4NCiAgcmVxdWly ZSAnb3B0cGFyc2UnDQoNCiAgb3B0aW9ucyA9IHsNCiAgICA6bW9kZSA9PiA6ZW5jb2RlLA0K ICAgIDphbHNvX2VuY29kZSA9PiAiIg0KICB9DQoNCiAgQVJHVi5vcHRpb25zIGRvIHxvcHRz fA0KICAgIHNjcmlwdF9uYW1lID0gRmlsZS5iYXNlbmFtZSgkMCkNCiAgICBvcHRzLmJhbm5l ciA9ICJVc2FnZTogcnVieSAje3NjcmlwdF9uYW1lfSBbb3B0aW9uc10iDQoNCiAgICBvcHRz LnNlcGFyYXRvciAiIg0KICAgIG9wdHMuc2VwYXJhdG9yICJTcGVjaWZpYyBvcHRpb25zOiIN Cg0KICAgIG9wdHMub24oIi1kIiwgIi0tZGVjb2RlIiwgIkRlY29kZSBxdW90ZWQgcHJpbnRh YmxlIHRvIHBsYWluIHRleHQuIikgZG8NCiAgICAgIG9wdGlvbnNbOm1vZGVdID0gOmRlY29k ZQ0KICAgIGVuZA0KDQogICAgb3B0cy5vbigiLWUiLCAiLS1lbmNvZGUiLCAiRW5jb2RlIHBs YWluIHRleHQgdG8gcXVvdGVkIHByaW50YWJsZS4gKERlZmF1bHQpIikgZG8NCiAgICAgIG9w dGlvbnNbOm1vZGVdID0gOmVuY29kZQ0KICAgIGVuZA0KDQogICAgb3B0cy5vbigiLXgiLCAi LS1lbmNvZGUteG1sIiwgIkFsc28gZW5jb2RlIFhNTCBtZXRhIGNoYXJhY3RlcnMuIikgZG8N CiAgICAgIG9wdGlvbnNbOmFsc29fZW5jb2RlXSA8PCAiPD4mIg0KICAgIGVuZA0KDQogICAg b3B0cy5vbigiLWEiLCAiLS1hbHNvLWVuY29kZT1jaGFycyIsIFN0cmluZywNCiAgICAgICJB bHNvIGVuY29kZSB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlcnMgb3IgY2hhcmFjdGVyIHJhbmdl cy4iDQogICAgKSBkbyB8YXJnfA0KICAgICAgb3B0aW9uc1s6YWxzb19lbmNvZGVdIDw8IGFy Zw0KICAgIGVuZA0KDQogICAgb3B0cy5zZXBhcmF0b3IgIiINCiAgICBvcHRzLnNlcGFyYXRv ciAiQ29tbW9uIG9wdGlvbnM6Ig0KDQogICAgb3B0cy5vbigiLWgiLCAiLS1oZWxwIiwgIlNo b3cgdGhpcyBoZWxwIG1lc3NhZ2UuIikgZG8NCiAgICAgIHB1dHMgb3B0cw0KICAgICAgZXhp dA0KICAgIGVuZA0KDQogICAgb3B0cy5wYXJzZSENCiAgZW5kDQoNCiAgQVJHRi5iaW5tb2Rl IGlmIG9wdGlvbnNbOm1vZGVdID09IDpkZWNvZGUNCiAgdGV4dCA9IEFSR0YucmVhZA0KDQog IHJlc3VsdCA9IGNhc2Ugb3B0aW9uc1s6bW9kZV0NCiAgICB3aGVuIDplbmNvZGUgdGhlbg0K ICAgICAgUXVvdGVkUHJpbnRhYmxlLmVuY29kZSh0ZXh0LCBvcHRpb25zWzphbHNvX2VuY29k ZV0pDQogICAgd2hlbiA6ZGVjb2RlIHRoZW4NCiAgICAgIFF1b3RlZFByaW50YWJsZS5kZWNv ZGUodGV4dCkNCiAgZW5kDQoNCiAgU1RET1VULmJpbm1vZGUgaWYgb3B0aW9uc1s6bW9kZV0g PT0gOmVuY29kZQ0KICBTVERPVVQucHV0cyByZXN1bHQNCmVuZA0K --------------060801030200040103040403--