Sha256: ec20b0a0389738e5b4f073602cfb8cdae9b6a104d10c05b7940ec9b5a6e2d6ac

Contents?: true

Size: 1.51 KB

Versions: 36

Compression:

Stored size: 1.51 KB

Contents

module CodeRay
module Scanners
  
  # = Debug Scanner
  # 
  # Interprets the output of the Encoders::Debug encoder.
  class Debug < Scanner
    
    register_for :debug
    title 'CodeRay Token Dump Import'
    
  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].to_sym
          match = self[2].gsub(/\\(.)/m, '\1')
          unless TokenKinds.has_key? kind
            kind = :error
            match = matched
          end
          encoder.text_token match, kind
          
        elsif match = scan(/ (\w+) ([<\[]) /x)
          kind = self[1].to_sym
          opened_tokens << kind
          case self[2]
          when '<'
            encoder.begin_group kind
          when '['
            encoder.begin_line kind
          else
            raise 'CodeRay bug: This case should not be reached.'
          end
          
        elsif !opened_tokens.empty? && match = scan(/ > /x)
          encoder.end_group opened_tokens.pop
          
        elsif !opened_tokens.empty? && match = scan(/ \] /x)
          encoder.end_line 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

Version data entries

36 entries across 36 versions & 4 rubygems

Version Path
torquebox-console-0.3.0 vendor/bundle/jruby/1.9/gems/coderay-1.0.9/lib/coderay/scanners/debug.rb
coderay-1.1.0.rc2 lib/coderay/scanners/debug.rb
coderay-1.1.0.rc1 lib/coderay/scanners/debug.rb
sshp-0.0.2 vendor/ruby/1.9.1/gems/coderay-1.0.9/lib/coderay/scanners/debug.rb
sshp-0.0.1 vendor/ruby/1.9.1/gems/coderay-1.0.9/lib/coderay/scanners/debug.rb
sidekiq-statsd-0.1.1 vendor/ruby/1.9.1/gems/coderay-1.0.9/lib/coderay/scanners/debug.rb
sidekiq-statsd-0.1.0 vendor/ruby/1.9.1/gems/coderay-1.0.9/lib/coderay/scanners/debug.rb
torquebox-console-0.2.5 vendor/bundle/jruby/1.9/gems/coderay-1.0.9/lib/coderay/scanners/debug.rb
torquebox-console-0.2.4 vendor/bundle/jruby/1.9/gems/coderay-1.0.9/lib/coderay/scanners/debug.rb
torquebox-console-0.2.3 vendor/bundle/jruby/1.9/gems/coderay-1.0.9/lib/coderay/scanners/debug.rb
coderay-1.0.9 lib/coderay/scanners/debug.rb
coderay-1.0.9.rc1 lib/coderay/scanners/debug.rb
coderay-1.0.8 lib/coderay/scanners/debug.rb
coderay-1.0.8.rc1 lib/coderay/scanners/debug.rb
coderay-1.0.7 lib/coderay/scanners/debug.rb
coderay-1.0.7.rc2 lib/coderay/scanners/debug.rb
coderay-1.0.7.rc1 lib/coderay/scanners/debug.rb
coderay-1.0.6 lib/coderay/scanners/debug.rb
coderay-1.0.6.rc1 lib/coderay/scanners/debug.rb
coderay-1.0.5 lib/coderay/scanners/debug.rb