Mercurial > hg > soundsoftware-site
view vendor/gems/coderay-1.0.0/lib/coderay/encoders/xml.rb @ 1082:997f6d7738f7 bug_531
In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author | Chris Cannam <chris.cannam@soundsoftware.ac.uk> |
---|---|
date | Thu, 22 Nov 2012 18:04:17 +0000 |
parents | cbb26bc654de |
children |
line wrap: on
line source
module CodeRay module Encoders # = XML Encoder # # Uses REXML. Very slow. class XML < Encoder register_for :xml FILE_EXTENSION = 'xml' autoload :REXML, 'rexml/document' DEFAULT_OPTIONS = { :tab_width => 8, :pretty => -1, :transitive => false, } protected 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 def finish options @doc.write @out, options[:pretty], options[:transitive], true super end public 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 def begin_group kind @node = @node.add_element kind.to_s end def end_group kind if @node == @root raise 'no token to close!' end @node = @node.parent end end end end