diff --git a/lib/liquid/template.rb b/lib/liquid/template.rb index c8ee0f8..1e4e458 100644 --- a/lib/liquid/template.rb +++ b/lib/liquid/template.rb @@ -246,9 +246,16 @@ module Liquid return raw_tokens unless @line_numbers current_line = 1 + current_column = 1 raw_tokens.map do |token| - Token.new(token, current_line).tap do - current_line += token.count("\n") + Token.new(token, current_line, current_column).tap do + new_line_count = token.count("\n") + if new_line_count > 0 + current_line += new_line_count + current_column = token.size - token.rindex("\n") + 1 + else + current_column += token.size + end end end end diff --git a/lib/liquid/token.rb b/lib/liquid/token.rb index acf8ef9..ce76bcb 100644 --- a/lib/liquid/token.rb +++ b/lib/liquid/token.rb @@ -1,10 +1,11 @@ module Liquid class Token < String - attr_reader :line_number + attr_reader :line_number, :column_number - def initialize(content, line_number) + def initialize(content, line_number, column_number=nil) super(content) @line_number = line_number + @column_number = column_number end def raw