]> git.wincent.com - wikitext.git/commit
Handle optional "lang" attribute in PRE_START tags
authorWincent Colaiuta <win@wincent.com>
Tue, 26 May 2009 20:03:31 +0000 (22:03 +0200)
committerWincent Colaiuta <win@wincent.com>
Tue, 26 May 2009 20:12:29 +0000 (22:12 +0200)
commit024870e8c715b4da8c2b013c80035d0d1a4c66cb
tree070030426b2a02c8e9adbad12640b587d8d5e849
parent575fca36ac7d11de1db24195a96b6e44c0359e02
Handle optional "lang" attribute in PRE_START tags

In addition to the literal "<pre>" tag syntax accept a special syntax
which includes a "lang" attribute. This is used to markup a PRE_START
for syntax highlighting as a particular language; for example:

  <pre lang="ruby">def hello to="world"
    puts "Hello, #{to}"
  end</pre>

Would be translated to:

  <pre class="ruby-syntax">def hello to=&quot;world&quot;
    puts &quot;Hello, #{to}&quot;
  end</pre>

Note that language names must consist only of lower-case letters, and
"-syntax" is automatically appended, to prevent users from inserting
totally arbitrary CSS class names into the translated output. This means
that names like "ruby" and "c" will work, but that names like "obj-c" or
"ObjC" would have to be written as "objc".

In this implementation the required format for the PRE_START tag is very
strict; no excess whitespace is allowed within the tag. This has the
benefit that it is simple and fast, and doesn't require re-scanning the
token to see exactly where the value of the "lang" attribute begins and
ends.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
ext/parser.c
ext/wikitext_ragel.c
ext/wikitext_ragel.rl
spec/pre_spec.rb