view vendor/gems/coderay-1.0.0/lib/coderay/encoders/debug.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
  
  # = 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