##// END OF EJS Templates
Merged r1451 to r1454, r1458, r1460 to r1463 from trunk....
Merged r1451 to r1454, r1458, r1460 to r1463 from trunk. git-svn-id: http://redmine.rubyforge.org/svn/branches/0.7-stable@1474 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r638:889d50089d4d
r1460:2074f0ab4144
Show More
debug.rb
60 lines | 1.1 KiB | text/x-ruby | RubyLexer
module CodeRay
module Scanners
# = Debug Scanner
class Debug < Scanner
include Streamable
register_for :debug
protected
def scan_tokens tokens, options
opened_tokens = []
until eos?
kind = nil
match = nil
if scan(/\s+/)
tokens << [matched, :space]
next
elsif scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) \) /x)
kind = self[1].to_sym
match = self[2].gsub(/\\(.)/, '\1')
elsif scan(/ (\w+) < /x)
kind = self[1].to_sym
opened_tokens << kind
match = :open
elsif scan(/ > /x)
kind = opened_tokens.pop
match = :close
else
kind = :error
getch
end
match ||= matched
if $DEBUG and not kind
raise_inspect 'Error token %p in line %d' %
[[match, kind], line], tokens
end
raise_inspect 'Empty token', tokens unless match
tokens << [match, kind]
end
tokens
end
end
end
end