Class Haml::Precompiler::Line
In: lib/haml/precompiler.rb
Parent: Struct.new(:text, :unstripped, :full, :index, :precompiler, :eod)

@private

Methods

tabs  

External Aliases

eod -> eod?

Public Instance methods

@private

[Source]

     # File lib/haml/precompiler.rb, line 152
152:       def tabs
153:         line = self
154:         @tabs ||= precompiler.instance_eval do
155:           break 0 if line.text.empty? || !(whitespace = line.full[/^\s+/])
156: 
157:           if @indentation.nil?
158:             @indentation = whitespace
159: 
160:             if @indentation.include?(?\s) && @indentation.include?(?\t)
161:               raise SyntaxError.new("Indentation can't use both tabs and spaces.", line.index)
162:             end
163: 
164:             @flat_spaces = @indentation * @template_tabs if flat?
165:             break 1
166:           end
167: 
168:           tabs = whitespace.length / @indentation.length
169:           break tabs if whitespace == @indentation * tabs
170:           break @template_tabs if flat? && whitespace =~ /^#{@indentation * @template_tabs}/
171: 
172:           raise SyntaxError.new("Inconsistent indentation: \#{Haml::Shared.human_indentation whitespace, true} used for indentation,\nbut the rest of the document was indented using \#{Haml::Shared.human_indentation @indentation}.\n".strip.gsub("\n", ' '), line.index)
173:         end
174:       end

[Validate]