ERB::Compiler::PercentScanner (Class)

In: erb.rb
Parent: Scanner

Methods

scan  

Public Instance methods

[Source]

# File erb.rb, line 190
        def scan
          new_line = true
          stag_reg = /(.*?)(<%%|<%=|<%#|<%|\n|\z)/
          etag_reg = /(.*?)(%%>|%>|\n|\z)/
          scanner = StringScanner.new(@src)
          while ! scanner.eos?
            if new_line && @stag.nil?
              if scanner.scan(/%%/)
                yield('%')
                new_line = false
                next
              elsif scanner.scan(/%/)
                yield(PercentLine.new(scanner.scan(/.*?(\n|\z)/).chomp))
                next
              end
            end
            scanner.scan(@stag ? etag_reg : stag_reg)
            text = scanner[1]
            elem = scanner[2]
            yield(text) unless text.empty?
            yield(elem) unless elem.empty?
            new_line = (elem == "\n")
          end
        end

[Validate]