view vendor/gems/coderay-1.0.0/lib/coderay/scanners/raydebug.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 Scanners

  # = Debug Scanner
  # 
  # Parses the output of the Encoders::Debug encoder.
  class Raydebug < Scanner

    register_for :raydebug
    file_extension 'raydebug'
    title 'CodeRay Token Dump'
    
  protected
    
    def scan_tokens encoder, options

      opened_tokens = []

      until eos?

        if match = scan(/\s+/)
          encoder.text_token match, :space
          
        elsif match = scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) /x)
          kind = self[1]
          encoder.text_token kind, :class
          encoder.text_token '(', :operator
          match = self[2]
          encoder.text_token match, kind.to_sym
          encoder.text_token match, :operator if match = scan(/\)/)
          
        elsif match = scan(/ (\w+) ([<\[]) /x)
          kind = self[1]
          case self[2]
          when '<'
            encoder.text_token kind, :class
          when '['
            encoder.text_token kind, :class
          else
            raise 'CodeRay bug: This case should not be reached.'
          end
          kind = kind.to_sym
          opened_tokens << kind
          encoder.begin_group kind
          encoder.text_token self[2], :operator
          
        elsif !opened_tokens.empty? && match = scan(/ [>\]] /x)
          encoder.text_token match, :operator
          encoder.end_group opened_tokens.pop
          
        else
          encoder.text_token getch, :space
          
        end
        
      end
      
      encoder.end_group opened_tokens.pop until opened_tokens.empty?
      
      encoder
    end

  end

end
end