6 # Uses REXML. Very slow.
12 FILE_EXTENSION = 'xml'
14 require 'rexml/document'
25 @doc = REXML::Document.new
26 @doc << REXML::XMLDecl.new
27 @tab_width = options[:tab_width]
28 @root = @node = @doc.add_element('coderay-tokens')
32 @doc.write @out, options[:pretty], options[:transitive], true
36 def text_token text, kind
40 token = @node.add_element kind.to_s
42 text.scan(/(\x20+)|(\t+)|(\n)|[^\x20\t\n]+/) do |space, tab, nl|
45 token << REXML::Text.new(space, true)
47 token << REXML::Text.new(tab, true)
49 token << REXML::Text.new(nl, true)
51 token << REXML::Text.new($&)
57 @node = @node.add_element kind.to_s
62 raise 'no token to close!'