diff vendor/gems/coderay-1.0.0/lib/coderay/encoders/debug.rb @ 909:cbb26bc654de redmine-1.3

Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author Chris Cannam
date Fri, 24 Feb 2012 19:09:32 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/gems/coderay-1.0.0/lib/coderay/encoders/debug.rb	Fri Feb 24 19:09:32 2012 +0000
@@ -0,0 +1,61 @@
+module CodeRay
+module Encoders
+  
+  # = Debug Encoder
+  #
+  # Fast encoder producing simple debug output.
+  #
+  # It is readable and diff-able and is used for testing.
+  #
+  # You cannot fully restore the tokens information from the
+  # output, because consecutive :space tokens are merged.
+  # Use Tokens#dump for caching purposes.
+  # 
+  # See also: Scanners::Debug
+  class Debug < Encoder
+    
+    register_for :debug
+    
+    FILE_EXTENSION = 'raydebug'
+    
+    def initialize options = {}
+      super
+      @opened = []
+    end
+    
+    def text_token text, kind
+      if kind == :space
+        @out << text
+      else
+        # TODO: Escape (
+        text = text.gsub(/[)\\]/, '\\\\\0')  # escape ) and \
+        @out << kind.to_s << '(' << text << ')'
+      end
+    end
+    
+    def begin_group kind
+      @opened << kind
+      @out << kind.to_s << '<'
+    end
+    
+    def end_group kind
+      if @opened.last != kind
+        puts @out
+        raise "we are inside #{@opened.inspect}, not #{kind}"
+      end
+      @opened.pop
+      @out << '>'
+    end
+    
+    def begin_line kind
+      @out << kind.to_s << '['
+    end
+    
+    def end_line kind
+      @out << ']'
+    end
+    
+  end
+  
+end
+end