Class CodeRay::Scanners::ERB
In: lib/coderay/scanners/erb.rb
Parent: Scanner

Scanner for HTML ERB templates.

Methods

Constants

KINDS_NOT_LOC = HTML::KINDS_NOT_LOC

Protected Instance methods

[Source]

    # File lib/coderay/scanners/erb.rb, line 38
38:     def reset_instance
39:       super
40:       @html_scanner.reset
41:     end

[Source]

    # File lib/coderay/scanners/erb.rb, line 43
43:     def scan_tokens encoder, options
44:       
45:       until eos?
46:         
47:         if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_rest) and not match.empty?
48:           @html_scanner.tokenize match, :tokens => encoder
49:           
50:         elsif match = scan(/#{ERB_RUBY_BLOCK}/o)
51:           start_tag = self[1]
52:           code = self[2]
53:           end_tag = self[3]
54:           
55:           encoder.begin_group :inline
56:           encoder.text_token start_tag, :inline_delimiter
57:           
58:           if start_tag == '<%#'
59:             encoder.text_token code, :comment
60:           else
61:             @ruby_scanner.tokenize code, :tokens => encoder
62:           end unless code.empty?
63:           
64:           encoder.text_token end_tag, :inline_delimiter unless end_tag.empty?
65:           encoder.end_group :inline
66:           
67:         else
68:           raise_inspect 'else-case reached!', encoder
69:           
70:         end
71:         
72:       end
73:       
74:       encoder
75:       
76:     end

[Source]

    # File lib/coderay/scanners/erb.rb, line 33
33:     def setup
34:       @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true
35:       @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true
36:     end

[Validate]