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

tabs()

@private

[Source]

         # File lib/haml/precompiler.rb, line 134
    134:       def tabs
    135:         line = self
    136:         @tabs ||= precompiler.instance_eval do
    137:           break 0 if line.text.empty? || !(whitespace = line.full[/^\s+/])
    138:
    139:           if @indentation.nil?
    140:             @indentation = whitespace
    141:
    142:             if @indentation.include?(?\s) && @indentation.include?(?\t)
    143:               raise SyntaxError.new("Indentation can't use both tabs and spaces.", line.index)
    144:             end
    145:
    146:             @flat_spaces = @indentation * @template_tabs if flat?
    147:             break 1
    148:           end
    149:
    150:           tabs = whitespace.length / @indentation.length
    151:           break tabs if whitespace == @indentation * tabs
    152:           break @template_tabs if flat? && whitespace =~ /^#{@indentation * @template_tabs}/
    153:
    154:           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)
    155:         end
    156:       end

[Validate]