class CodeRay::Encoders::XML
XML Encoder¶ ↑
Uses REXML. Very slow.
Constants
- DEFAULT_OPTIONS
- FILE_EXTENSION
Public Instance Methods
begin_group(kind)
click to toggle source
# File lib/coderay/encoders/xml.rb, line 58 def begin_group kind @node = @node.add_element kind.to_s end
end_group(kind)
click to toggle source
# File lib/coderay/encoders/xml.rb, line 62 def end_group kind if @node == @root raise 'no token to close!' end @node = @node.parent end
text_token(text, kind)
click to toggle source
# File lib/coderay/encoders/xml.rb, line 38 def text_token text, kind if kind == :space token = @node else token = @node.add_element kind.to_s end text.scan(/(\x20+)|(\t+)|(\n)|[^\x20\t\n]+/) do |space, tab, nl| case when space token << REXML::Text.new(space, true) when tab token << REXML::Text.new(tab, true) when nl token << REXML::Text.new(nl, true) else token << REXML::Text.new($&) end end end
Protected Instance Methods
finish(options)
click to toggle source
Calls superclass method
CodeRay::Encoders::Encoder#finish
# File lib/coderay/encoders/xml.rb, line 31 def finish options @doc.write @out, options[:pretty], options[:transitive], true super end
setup(options)
click to toggle source
Calls superclass method
CodeRay::Encoders::Encoder#setup
# File lib/coderay/encoders/xml.rb, line 22 def setup options super @doc = REXML::Document.new @doc << REXML::XMLDecl.new @tab_width = options[:tab_width] @root = @node = @doc.add_element('coderay-tokens') end