Mercurial > hg > soundsoftware-site
annotate vendor/plugins/coderay-0.9.2/lib/coderay/scanners/debug.rb @ 864:2465362d1b56 bug_145
Close obsolete branch bug_145
author | Chris Cannam |
---|---|
date | Wed, 11 May 2011 11:57:41 +0100 |
parents | 513646585e45 |
children |
rev | line source |
---|---|
Chris@0 | 1 module CodeRay |
Chris@0 | 2 module Scanners |
Chris@0 | 3 |
Chris@0 | 4 # = Debug Scanner |
Chris@0 | 5 class Debug < Scanner |
Chris@0 | 6 |
Chris@0 | 7 include Streamable |
Chris@0 | 8 register_for :debug |
Chris@0 | 9 file_extension 'raydebug' |
Chris@0 | 10 title 'CodeRay Token Dump' |
Chris@0 | 11 |
Chris@0 | 12 protected |
Chris@0 | 13 def scan_tokens tokens, options |
Chris@0 | 14 |
Chris@0 | 15 opened_tokens = [] |
Chris@0 | 16 |
Chris@0 | 17 until eos? |
Chris@0 | 18 |
Chris@0 | 19 kind = nil |
Chris@0 | 20 match = nil |
Chris@0 | 21 |
Chris@0 | 22 if scan(/\s+/) |
Chris@0 | 23 tokens << [matched, :space] |
Chris@0 | 24 next |
Chris@0 | 25 |
Chris@0 | 26 elsif scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) \) /x) |
Chris@0 | 27 kind = self[1].to_sym |
Chris@0 | 28 match = self[2].gsub(/\\(.)/, '\1') |
Chris@0 | 29 |
Chris@0 | 30 elsif scan(/ (\w+) < /x) |
Chris@0 | 31 kind = self[1].to_sym |
Chris@0 | 32 opened_tokens << kind |
Chris@0 | 33 match = :open |
Chris@0 | 34 |
Chris@0 | 35 elsif !opened_tokens.empty? && scan(/ > /x) |
Chris@0 | 36 kind = opened_tokens.pop || :error |
Chris@0 | 37 match = :close |
Chris@0 | 38 |
Chris@0 | 39 else |
Chris@0 | 40 kind = :error |
Chris@0 | 41 getch |
Chris@0 | 42 |
Chris@0 | 43 end |
Chris@0 | 44 |
Chris@0 | 45 match ||= matched |
Chris@0 | 46 if $CODERAY_DEBUG and not kind |
Chris@0 | 47 raise_inspect 'Error token %p in line %d' % |
Chris@0 | 48 [[match, kind], line], tokens |
Chris@0 | 49 end |
Chris@0 | 50 raise_inspect 'Empty token', tokens unless match |
Chris@0 | 51 |
Chris@0 | 52 tokens << [match, kind] |
Chris@0 | 53 |
Chris@0 | 54 end |
Chris@0 | 55 |
Chris@0 | 56 tokens |
Chris@0 | 57 end |
Chris@0 | 58 |
Chris@0 | 59 end |
Chris@0 | 60 |
Chris@0 | 61 end |
Chris@0 | 62 end |