Class | CodeRay::Scanners::RHTML |
In: |
lib/coderay/scanners/rhtml.rb
|
Parent: | Scanner |
ERB_RUBY_BLOCK | = | / <%(?!%)[=-]? (?> [^\-%]* # normal* (?> # special (?: %(?!>) | -(?!%>) ) [^\-%]* # normal* )* ) (?: -?%> )? /x |
START_OF_ERB | = | / <%(?!%) /x |
# File lib/coderay/scanners/rhtml.rb, line 36 36: def reset_instance 37: super 38: @html_scanner.reset 39: end
# File lib/coderay/scanners/rhtml.rb, line 41 41: def scan_tokens tokens, options 42: 43: until eos? 44: 45: if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_until(/\z/)) and not match.empty? 46: @html_scanner.tokenize match 47: 48: elsif match = scan(/#{ERB_RUBY_BLOCK}/o) 49: start_tag = match[/\A<%[-=]?/] 50: end_tag = match[/-?%?>?\z/] 51: tokens << [:open, :inline] 52: tokens << [start_tag, :inline_delimiter] 53: code = match[start_tag.size .. -1 - end_tag.size] 54: @ruby_scanner.tokenize code 55: tokens << [end_tag, :inline_delimiter] unless end_tag.empty? 56: tokens << [:close, :inline] 57: 58: else 59: raise_inspect 'else-case reached!', tokens 60: end 61: 62: end 63: 64: tokens 65: 66: end