SM::SimpleMarkup
Synopsis
This code converts input_string, which is in the format described in markup/simple_markup.rb, to HTML. The conversion takes place in the convert method, so you can use the same SimpleMarkup object to convert multiple input strings.
require 'rdoc/markup/simple_markup' require 'rdoc/markup/simple_markup/to_html' p = SM::SimpleMarkup.new h = SM::ToHtml.new puts p.convert(input_string, h)
You can extend the SimpleMarkup parser to recognise new markup sequences, and to add special processing for text that matches a regular epxression. Here we make WikiWords significant to the parser, and also make the sequences {word} and <no>text…</no> signify strike-through text. When then subclass the HTML output class to deal with these:
require 'rdoc/markup/simple_markup' require 'rdoc/markup/simple_markup/to_html' class WikiHtml < SM::ToHtml def handle_special_WIKIWORD(special) "<font color=red>" + special.text + "</font>" end end p = SM::SimpleMarkup.new p.add_word_pair("{", "}", :STRIKE) p.add_html("no", :STRIKE) p.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD) h = WikiHtml.new h.add_tag(:STRIKE, "<strike>", "</strike>") puts "<body>" + p.convert(ARGF.read, h) + "</body>"
Output Formatters
missing
Constants
LABEL_LIST_RE = /^( ( \\[.*?\\] (?# labeled ) |\\S.*:: (?# note ) )(?:\\s+|$) )/x
SIMPLE_LIST_RE = /^( ( \\* (?# bullet) |- (?# bullet) |\\d+\\. (?# numbered ) |[A-Za-z]\\. (?# alphabetically numbered ) ) \\s+ )\\S/x
SPACE = ?\\s
Files
- lib/rdoc/markup/simple_markup.rb