mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-18 18:30:40 -07:00
optimize line number counting
This commit is contained in:
+7
-13
@@ -16,14 +16,10 @@ module Liquid
|
|||||||
|
|
||||||
def initialize(source, line_numbers = false, line_number: nil, for_liquid_tag: false)
|
def initialize(source, line_numbers = false, line_number: nil, for_liquid_tag: false)
|
||||||
@line_number = line_number || (line_numbers ? 1 : nil)
|
@line_number = line_number || (line_numbers ? 1 : nil)
|
||||||
original_line_number = @line_number
|
|
||||||
|
|
||||||
@for_liquid_tag = for_liquid_tag
|
@for_liquid_tag = for_liquid_tag
|
||||||
@tokens = []
|
@tokens = []
|
||||||
@line_numbers = []
|
|
||||||
tokenize(source)
|
tokenize(source)
|
||||||
|
|
||||||
@line_number = original_line_number
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private def tokenize(source)
|
private def tokenize(source)
|
||||||
@@ -31,19 +27,11 @@ module Liquid
|
|||||||
|
|
||||||
while token = t_shift(ss)
|
while token = t_shift(ss)
|
||||||
@tokens.push(token)
|
@tokens.push(token)
|
||||||
@line_numbers.push(@line_number) if @line_number
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def shift
|
def shift
|
||||||
@line_number = @line_numbers.shift if @line_number
|
token = @tokens.shift
|
||||||
@tokens.shift
|
|
||||||
end
|
|
||||||
|
|
||||||
private def t_shift(ss)
|
|
||||||
return nil if ss.eos?
|
|
||||||
|
|
||||||
token = @for_liquid_tag ? next_liquid_token(ss) : next_token(ss)
|
|
||||||
|
|
||||||
return nil unless token
|
return nil unless token
|
||||||
|
|
||||||
@@ -54,6 +42,12 @@ module Liquid
|
|||||||
token
|
token
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private def t_shift(ss)
|
||||||
|
return nil if ss.eos?
|
||||||
|
|
||||||
|
@for_liquid_tag ? next_liquid_token(ss) : next_token(ss)
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def next_liquid_token(ss)
|
def next_liquid_token(ss)
|
||||||
|
|||||||
Reference in New Issue
Block a user