diff options
author | Kornelius Kalnbach <murphy@rubychan.de> | 2011-08-19 03:09:35 +0200 |
---|---|---|
committer | Kornelius Kalnbach <murphy@rubychan.de> | 2011-08-19 03:09:35 +0200 |
commit | 75bc5455af8c3c3381066aac3d5fff42264cac6f (patch) | |
tree | 589d2c912ddd94c517eb794bcdf3257f8348f3c0 /lib/coderay/scanners/rhtml.rb | |
parent | fdd17b6a09efb275238a3baef275465d31452f2a (diff) | |
download | coderay-75bc5455af8c3c3381066aac3d5fff42264cac6f.tar.gz |
Major rewrite of encoders to support IO output; fixed some minor scanner bugs; cleanups; dropped NitroXHTML scanner; improved tests
Diffstat (limited to 'lib/coderay/scanners/rhtml.rb')
-rw-r--r-- | lib/coderay/scanners/rhtml.rb | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/lib/coderay/scanners/rhtml.rb b/lib/coderay/scanners/rhtml.rb deleted file mode 100644 index 9bfab5c..0000000 --- a/lib/coderay/scanners/rhtml.rb +++ /dev/null @@ -1,77 +0,0 @@ -module CodeRay -module Scanners - - load :html - load :ruby - - # Scanner for HTML ERB templates. - class RHTML < Scanner - - register_for :rhtml - title 'HTML ERB Template' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - ERB_RUBY_BLOCK = / - <%(?!%)[=-]? - (?> - [^\-%]* # normal* - (?> # special - (?: %(?!>) | -(?!%>) ) - [^\-%]* # normal* - )* - ) - (?: -?%> )? - /x # :nodoc: - - START_OF_ERB = / - <%(?!%) - /x # :nodoc: - - protected - - def setup - @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - def scan_tokens encoder, options - - until eos? - - if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_rest) and not match.empty? - @html_scanner.tokenize match, :tokens => encoder - - elsif match = scan(/#{ERB_RUBY_BLOCK}/o) - start_tag = match[/\A<%[-=#]?/] - end_tag = match[/-?%?>?\z/] - encoder.begin_group :inline - encoder.text_token start_tag, :inline_delimiter - code = match[start_tag.size .. -1 - end_tag.size] - if start_tag[/\A<%#/] - encoder.text_token code, :comment - else - @ruby_scanner.tokenize code - end unless code.empty? - encoder.text_token end_tag, :inline_delimiter unless end_tag.empty? - encoder.end_group :inline - - else - raise_inspect 'else-case reached!', encoder - end - - end - - encoder - - end - - end - -end -end |