class ERB::Compiler::TrimScanner

Public Instance Methods

explicit_trim_line(line) { |'<%'| ... } click to toggle source
# File lib/erb_safe_ext.rb, line 116
def explicit_trim_line(line)
  line.scan(/(.*?)(^[ \t]*<%\-|<%\-|<%%|%%>|<%~|<%=|<%#|<%|-%>\n|-%>|%>|\z)/m) do |tokens|
    tokens.each do |token|
      next if token.empty?
      if @stag.nil? && /[ \t]*<%-/ =~ token
        yield('<%')
      elsif @stag && token == "-%>\n"
        yield('%>')
        yield(:cr)
      elsif @stag && token == '-%>'
        yield('%>')
      else
        yield(token)
      end
    end
  end
end
is_erb_stag?(s) click to toggle source
# File lib/erb_safe_ext.rb, line 134
def is_erb_stag?(s)
  ERB_STAG.member?(s)
end
scan_line(line) { |token| ... } click to toggle source
# File lib/erb_safe_ext.rb, line 74
def scan_line(line)
  line.scan(/(.*?)(<%%|%%>|<%~|<%=|<%#|<%|%>|\n|\z)/m) do |tokens|
    tokens.each do |token|
      next if token.empty?
      yield(token)
    end
  end
end
trim_line1(line) { |'%>'| ... } click to toggle source
# File lib/erb_safe_ext.rb, line 82
def trim_line1(line)
  line.scan(/(.*?)(<%%|%%>|<%~|<%=|<%#|<%|%>\n|%>|\n|\z)/m) do |tokens|
    tokens.each do |token|
      next if token.empty?
      if token == "%>\n"
        yield('%>')
        yield(:cr)
      else
        yield(token)
      end
    end
  end
end
trim_line2(line) { |'%>'| ... } click to toggle source
# File lib/erb_safe_ext.rb, line 95
def trim_line2(line)
  head = nil
  line.scan(/(.*?)(<%%|%%>|<%~|<%=|<%#|<%|%>\n|%>|\n|\z)/m) do |tokens|
    tokens.each do |token|
      next if token.empty?
      head = token unless head
      if token == "%>\n"
        yield('%>')
        if is_erb_stag?(head)
          yield(:cr)
        else
          yield("\n")
        end
        head = nil
      else
        yield(token)
        head = nil if token == "\n"
      end
    end
  end
end