Regex to check for blocks with spaces around arguments. Not to be confused with multiline script. For example:
foo.each do | bar | = bar
Designates an XHTML/XML comment.
Designates a `<div>` element with the given class.
Designates a `<div>` element with the given id.
Designates an XHTML doctype or script that is never HTML-escaped.
The Regex that matches a Doctype command.
Designates an XHTML/XML element.
Designates a non-parsed line.
Designates a block of filtered text.
Designates script, the result of which is flattened and output.
The Regex that matches a literal string or symbol value
The value of the character that designates that a line is part of a multiline string.
Designates a non-parsed line. Not actually a character.
Designates script that is always HTML-escaped.
Designates script, the result of which is output.
When following SILENT_SCRIPT, designates a comment that is not output.
Designates script which is run but not output.
Keeps track of the ASCII values of the characters that begin a specially-interpreted line.
Try to parse assignments to block starters as best as possible
# File lib/haml/parser.rb, line 89 def initialize(template, options) # :eod is a special end-of-document marker @template = (template.rstrip).split(/\r\n|\r|\n/) + [:eod, :eod] @options = options @flat = false @index = 0 # Record the indent levels of "if" statements to validate the subsequent # elsif and else statements are indented at the appropriate level. @script_level_stack = [] @template_index = 0 @template_tabs = 0 end
# File lib/haml/parser.rb, line 102 def parse @root = @parent = ParseNode.new(:root) @haml_comment = false @indentation = nil @line = next_line raise SyntaxError.new(Error.message(:indenting_at_start), @line.index) if @line.tabs != 0 while next_line process_indent(@line) unless @line.text.empty? if flat? text = @line.full.dup text = "" unless text.gsub!(/^#{@flat_spaces}/, '') @filter_buffer << "#{text}\n" @line = @next_line next end @tab_up = nil process_line(@line.text, @line.index) unless @line.text.empty? || @haml_comment if @parent.type != :haml_comment && (block_opened? || @tab_up) @template_tabs += 1 @parent = @parent.children.last end if !@haml_comment && !flat? && @next_line.tabs - @line.tabs > 1 raise SyntaxError.new(Error.message(:deeper_indenting, @next_line.tabs - @line.tabs), @next_line.index) end @line = @next_line end # Close all the open tags close until @parent.type == :root @root rescue Haml::Error => e e.backtrace.unshift "#{@options[:filename]}:#{(e.line ? e.line + 1 : @index) + @options[:line] - 1}" raise end
Generated with the Darkfish Rdoc Generator 2.