diff options
author | murphy <murphy@rubychan.de> | 2006-04-16 03:20:37 +0000 |
---|---|---|
committer | murphy <murphy@rubychan.de> | 2006-04-16 03:20:37 +0000 |
commit | 0d4ddc9f66eb3b4dc3f6e7cb191b605b348e8189 (patch) | |
tree | 6ade5b6d36d559b919a39f55002cde3c3779bc67 /lib/coderay/encoders/xml.rb | |
parent | ff9cbcf8c58e81bcee2e961e8b2033e6e336c6e9 (diff) | |
download | coderay-0d4ddc9f66eb3b4dc3f6e7cb191b605b348e8189.tar.gz |
Re-indented everything. Sorry to break the blame chain.
Diffstat (limited to 'lib/coderay/encoders/xml.rb')
-rw-r--r-- | lib/coderay/encoders/xml.rb | 105 |
1 files changed, 53 insertions, 52 deletions
diff --git a/lib/coderay/encoders/xml.rb b/lib/coderay/encoders/xml.rb index 5596f46..246fe0a 100644 --- a/lib/coderay/encoders/xml.rb +++ b/lib/coderay/encoders/xml.rb @@ -1,70 +1,71 @@ module CodeRay
- module Encoders
+module Encoders
- # = Debug Encoder
- class XML < Encoder
+ # = XML Encoder
+ #
+ # Uses REXML. Very slow.
+ class XML < Encoder
- include Streamable
- register_for :xml
+ include Streamable
+ register_for :xml
- FILE_EXTENSION = 'xml'
+ FILE_EXTENSION = 'xml'
- require 'rexml/document'
+ require 'rexml/document'
- DEFAULT_OPTIONS = {
- :tab_width => 8,
- :pretty => -1,
- :transitive => false,
- }
+ DEFAULT_OPTIONS = {
+ :tab_width => 8,
+ :pretty => -1,
+ :transitive => false,
+ }
- protected
-
- def setup options
- @out = ''
- @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
- @out
+ protected
+
+ def setup options
+ @out = ''
+ @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
+ @out
+ end
+
+ def text_token text, kind
+ if kind == :space
+ token = @node
+ else
+ token = @node.add_element kind.to_s
end
-
- def text_token text, kind
- if kind == :space
- token = @node
+ 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 = @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
+ token << REXML::Text.new($&)
end
end
+ end
- def open_token kind
- @node = @node.add_element kind.to_s
- end
+ def open_token kind
+ @node = @node.add_element kind.to_s
+ end
- def close_token kind
- if @node == @root
- raise 'no token to close!'
- end
- @node = @node.parent
+ def close_token kind
+ if @node == @root
+ raise 'no token to close!'
end
-
+ @node = @node.parent
end
end
+
+end
end
-
|