# ERB::Compiler::PercentScanner (Class)

In: | erb.rb
Parent: | Scanner

## Methods

scan

## Public Instance methods

scan() {|'%'| ...}

[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]