Transforming Plain Text to HTML
Problem
You want to add simple markup to plaintext and turn it into HTML.
Solution
Use RedCloth, written by "why the lucky stiff" and available as the RedCloth gem. It extends Rubys string class to support Textile markup: its to_html method converts Textile markup to HTML.
Heres a simple document:
require ubygems require edcloth text = RedCloth.new %{Who would ever write "HTML":http://www.w3.org/MarkUp/ markup directly? I mean, _who has the time_? Nobody, thats who: |_. Person |_. Has the time? | | Jake | No | | Alice | No | | Rodney | Not since the accident | } puts text.to_html #
Who would ever write # <a href="http://www.w3.org/MarkUp/">HTML</a> # markup directly?
# #I mean, who has the time? Nobody, that’s who:
# # # # # # # …The Textile version is more readable and easier to edit.
Discussion
The Textile markup language lets you produce HTML without having to write any HTML. You just add punctuation to plain text, to convey what markup youd like. Paragraph breaks are represented by blank lines, italics by underscores, tables by ASCII-art drawings of tables.
A text-based markup that converts to HTML is very useful in weblog and wiki software, where the markup will be edited many times. Its also useful for hiding the complexity of HTML from new computer users. We wrote this entire book using a Textile-like markup, though it was converted to Docbook instead of HTML.
See Also
- The RedCloth homepage (http://www.whytheluckystiff.net/ruby/redcloth/)
- A comprehensive Textile reference (http://hobix.com/textile/)and a quick reference (http://hobix.com/textile/quick.html)
- You can experiment with Textile markup at the languages homepage (http://www.textism.com/tools/textile/)
- Markdown (http://daringfireball.net/projects/markdown/)is another popular simple markup language for plain text; you can turn Markdown text to XHTML with the BlueCloth gem (project page: http://www.deveiate.org/projects/BlueCloth); because BlueCloth and RedCloth both define String#to_html, its not easy to use them both in the same program
Person | Has the time? |
---|