From: Adriano Ferreira Date: 2007-04-13T22:42:07+09:00 Subject: Re: [ANN] ClothRed 0.3.0 released ------=_Part_6855_14540427.1176471724514 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline I think you will be bitten pretty fast with the current approach of doing only text substitutions while translating HTML into Textile. For example, HTML is pretty insensitive to some spaces in between:

main title

subtitle

is just as good as

main title

subtitle

But in Textile, h1. main title h2. subtitle is not the same as h1. main title h2. subtitle or even h1. main title h2. subtitle In the current implementation, ClothRed behaves like that: $ irb irb(main):001:0> require 'rubygems' => true irb(main):002:0> require 'clothred' => true irb(main):003:0> t = ClothRed.new("

Foo

Bar

") => "

Foo

Bar

" irb(main):004:0> t.to_textile => "h1. Foo h2. Bar" but that's pretty easy to work around with the simple patch attached. I just replaced "" as a substitution to HTML , , ... by "\n\n" producing the necessary paragraph breaks for Textile. "test/test_headings.rb" had to be fixed and I also wrote "test/test_misc.rb" as a test script for HTML with more than one tag in it. The substitution approach will not work quite right for HTML where closing tags are missing. The algorithm will never understand when the tags were closed. So this is somewhat limited currently to XHTML which demands closing tags. I think the suggestion of using a HTML parser (like Hpricot) to do this conversion will impose itself pretty soon. Thanks for the inspiring work. Adriano Ferreira. On 4/12/07, Phillip Gawlowski wrote: > Or: TTD is fun. > > = ClothRed HTML 2 Textile converter > > == What it is > > A library to convert HTML into Textile markup for use, for example, with > RedCloth. > > > == Requirements > > All you need is Ruby. > > == Get it > > Available as a gem on RubyForge: > gem install ClothRed > > Or download from RubyForge: > http://rubyforge.org/frs/?group_id=3427 > > Or get the source: > svn checkout svn://viewvc.rubyforge.mmmultiworks.com/var/svn/clothred > > == New in this release: > * Support for some HTML entities > * Support for tables > > == Features > > This is alpha software, and only a few Textile rules have been > implemented yet: > * font markup and weight (, , ...) > * text formatting (, , ,) > * Support for headings > * Support for paragraphs and
> * Support for Textile entities > > == Usage > > require 'clothred' > > text = ClothRed.new("Bold HTML!") > text.to_textile > > == Get Help > Feel free to contact me, or peruse the homepage. > > * http://clothred.rubyforge.org/ > * http://rubyforge.org/projects/clothred/ > > -- > Phillip "CynicalRyan" Gawlowski > http://cynicalryan.110mb.com/ > http://clothred.rubyforge.org > > Rule of Open-Source Programming #11: > > When a developer says he will work on something, he or she means > "maybe". > > ------=_Part_6855_14540427.1176471724514 Content-Type: application/octet-stream; name=clothred.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_f0gorskc Content-Disposition: attachment; filename="clothred.diff" ZGlmZiAtdSAtciAtTiBjbG90aHJlZC9saWIvY2xvdGhyZWQucmIgbmV3L2xpYi9jbG90aHJlZC5y YgotLS0gY2xvdGhyZWQvbGliL2Nsb3RocmVkLnJiCTIwMDctMDQtMTMgMTA6MzQ6MjQuMDAwMDAw MDAwIC0wMzAwCisrKyBuZXcvbGliL2Nsb3RocmVkLnJiCTIwMDctMDQtMTMgMTA6MzU6MTAuMDAw MDAwMDAwIC0wMzAwCkBAIC0yMywxMCArMjMsMTAgQEAKICAgXQogICAKICAgSEVBRElOR1MgPSBb Ci0gICAgWyI8aDE+IiwiaDEuICJdLCBbIjwvaDE+IiwgIiJdLCBbIjxoMj4iLCJoMi4gIl0sIFsi PC9oMj4iLCAiIl0sIAotICAgIFsiPGgzPiIsImgzLiAiXSwgWyI8L2gzPiIsICIiXSwgWyI8aDQ+ IiwiaDQuICJdLCBbIjwvaDQ+IiwgIiJdLCAKLSAgICBbIjxoNT4iLCJoNS4gIl0sIFsiPC9oNT4i LCAiIl0sIFsiPGg2PiIsImg2LiAiXSwgWyI8L2g2PiIsICIiXSwgCi0gICAgWyI8aDc+IiwiaDcu ICJdLCBbIjwvaDc+IiwgIiJdCisgICAgWyI8aDE+IiwiaDEuICJdLCBbIjwvaDE+IiwgIlxuXG4i XSwgWyI8aDI+IiwiaDIuICJdLCBbIjwvaDI+IiwgIlxuXG4iXSwgCisgICAgWyI8aDM+IiwiaDMu ICJdLCBbIjwvaDM+IiwgIlxuXG4iXSwgWyI8aDQ+IiwiaDQuICJdLCBbIjwvaDQ+IiwgIlxuXG4i XSwgCisgICAgWyI8aDU+IiwiaDUuICJdLCBbIjwvaDU+IiwgIlxuXG4iXSwgWyI8aDY+IiwiaDYu ICJdLCBbIjwvaDY+IiwgIlxuXG4iXSwgCisgICAgWyI8aDc+IiwiaDcuICJdLCBbIjwvaDc+Iiwg IlxuXG4iXQogICBdCiAgIAogICBTVFJVQ1RVUkVTID0gWwpkaWZmIC11IC1yIC1OIGNsb3RocmVk L3Rlc3QvdGVzdF9oZWFkaW5ncy5yYiBuZXcvdGVzdC90ZXN0X2hlYWRpbmdzLnJiCi0tLSBjbG90 aHJlZC90ZXN0L3Rlc3RfaGVhZGluZ3MucmIJMjAwNy0wNC0xMyAxMDozNDoyMi4wMDAwMDAwMDAg LTAzMDAKKysrIG5ldy90ZXN0L3Rlc3RfaGVhZGluZ3MucmIJMjAwNy0wNC0xMyAxMDozNDoxNC4w MDAwMDAwMDAgLTAzMDAKQEAgLTE2LDkgKzE2LDkgQEAKIGNsYXNzIFRlc3RDbG90aFJlZEhlYWRp bmdzIDwgVGVzdDo6VW5pdDo6VGVzdENhc2UKICAKICAgSEVBRElOR19URVNUID0gWwotICAgIFsi PGgxPkhlYWRpbmcgMTwvaDE+IiwiaDEuIEhlYWRpbmcgMSJdLCBbIjxoMj5IZWFkaW5nIDI8L2gy PiIsICJoMi4gSGVhZGluZyAyIl0sCi0gICAgWyI8aDM+SGVhZGluZyAzIiwgImgzLiBIZWFkaW5n IDMiXSwgWyI8aDQ+SGVhZGluZyA0PC9oND4iLCAiaDQuIEhlYWRpbmcgNCJdLAotICAgIFsiPGg1 PkhlYWRpbmcgNSIsICJoNS4gSGVhZGluZyA1Il0sIFsiPGg2PkhlYWRpbmcgNjwvaDY+IiwgImg2 LiBIZWFkaW5nIDYiXQorICAgIFsiPGgxPkhlYWRpbmcgMTwvaDE+IiwiaDEuIEhlYWRpbmcgMVxu XG4iXSwgWyI8aDI+SGVhZGluZyAyPC9oMj4iLCAiaDIuIEhlYWRpbmcgMlxuXG4iXSwKKyAgICBb IjxoMz5IZWFkaW5nIDM8L2gzPiIsICJoMy4gSGVhZGluZyAzXG5cbiJdLCBbIjxoND5IZWFkaW5n IDQ8L2g0PiIsICJoNC4gSGVhZGluZyA0XG5cbiJdLAorICAgIFsiPGg1PkhlYWRpbmcgNTwvaDU+ IiwgImg1LiBIZWFkaW5nIDVcblxuIl0sIFsiPGg2PkhlYWRpbmcgNjwvaDY+IiwgImg2LiBIZWFk aW5nIDZcblxuIl0KICAgXQogICAKICAgCmRpZmYgLXUgLXIgLU4gY2xvdGhyZWQvdGVzdC90ZXN0 X21pc2MucmIgbmV3L3Rlc3QvdGVzdF9taXNjLnJiCi0tLSBjbG90aHJlZC90ZXN0L3Rlc3RfbWlz Yy5yYgkxOTY5LTEyLTMxIDIxOjAwOjAwLjAwMDAwMDAwMCAtMDMwMAorKysgbmV3L3Rlc3QvdGVz dF9taXNjLnJiCTIwMDctMDQtMTMgMTA6Mzc6MjQuMDAwMDAwMDAwIC0wMzAwCkBAIC0wLDAgKzEs MzAgQEAKKyMgdGVzdF9oZWFkaW5ncy5yYgorIyAxMi4gQXByaWwgMjAwNworIworCiskOi51bnNo aWZ0IEZpbGUuam9pbihGaWxlLmRpcm5hbWUoX19GSUxFX18pLCcuLicsJ2xpYicpCisKK2JlZ2lu CisgIHJlcXVpcmUgInJ1YnlnZW1zIgorICByZXF1aXJlICJjbG90aHJlZCIKK3Jlc2N1ZSBMb2Fk RXJyb3IKKyAgcmVxdWlyZSAiY2xvdGhyZWQiCitlbmQKKworcmVxdWlyZSAndGVzdC91bml0Jwor CitjbGFzcyBUZXN0Q2xvdGhSZWRIZWFkaW5ncyA8IFRlc3Q6OlVuaXQ6OlRlc3RDYXNlCisgCisg IE1JU1RfVEVTVCA9IFsKKyAgICBbIjxoMT5IZWFkaW5nIDE8L2gxPjxoMj5IZWFkaW5nIDI8L2gy PiIsImgxLiBIZWFkaW5nIDFcblxuaDIuIEhlYWRpbmcgMlxuXG4iXSwKKyAgXQorICAKKyAgCisg IGRlZiB0ZXN0X2hlYWRpbmdzCisgICAgTUlTVF9URVNULmVhY2ggZG8gfGh0bWwsIHRleHRpbGV8 CisgICAgICB0ZXN0X2h0bWwgPSBDbG90aFJlZC5uZXcoaHRtbCkKKyAgICAgIHJlc3VsdCA9IHRl c3RfaHRtbC50b190ZXh0aWxlCisgICAgICBhc3NlcnRfZXF1YWwodGV4dGlsZSxyZXN1bHQpCisg ICAgZW5kCisgIGVuZAorZW5kCg== ------=_Part_6855_14540427.1176471724514--