diff --git a/lib/liquid/tokenizer.rb b/lib/liquid/tokenizer.rb index af919524..ee2d9af1 100644 --- a/lib/liquid/tokenizer.rb +++ b/lib/liquid/tokenizer.rb @@ -108,12 +108,12 @@ module Liquid next unless token.start_with?("{%") j = 2 - j += 1 if token.getbyte(j) == 45 # '-' + j += 1 if token.getbyte(j) == 45 # '-' j += 1 while token.getbyte(j) == 32 # ' ' - if token.getbyte(j) == 101 && # 'e' - token.getbyte(j + 1) == 110 && # 'n' - token.getbyte(j + 2) == 100 # 'd' + if token.getbyte(j) == 101 && # 'e' + token.getbyte(j + 1) == 110 && # 'n' + token.getbyte(j + 2) == 100 # 'd' has_any_end_tag = true break end @@ -133,7 +133,7 @@ module Liquid # Advance past "{%", optional "-", and spaces to reach tag name j = 2 - j += 1 if token.getbyte(j) == 45 # '-' + j += 1 if token.getbyte(j) == 45 # '-' j += 1 while token.getbyte(j) == 32 # ' ' # Extract tag name: scan word characters [a-zA-Z0-9_] @@ -142,18 +142,18 @@ module Liquid while byte && ((byte >= 97 && byte <= 122) || # a-z (byte >= 65 && byte <= 90) || # A-Z (byte >= 48 && byte <= 57) || # 0-9 - byte == 95) # _ + byte == 95) # _ j += 1 byte = token.getbyte(j) end - next if j == name_start # no tag name found + next if j == name_start # no tag name found name = token.byteslice(name_start, j - name_start) if name.start_with?("end") base = name.byteslice(3, name.bytesize - 3) stack = open_stacks[base] - if stack.length > 0 + unless stack.empty? open_pos = stack.pop @has_matching_end_tag[open_pos] = true end diff --git a/performance/unit/hybrid_render_benchmark.rb b/performance/unit/hybrid_render_benchmark.rb index 1fdae6a4..9575d84c 100644 --- a/performance/unit/hybrid_render_benchmark.rb +++ b/performance/unit/hybrid_render_benchmark.rb @@ -151,14 +151,12 @@ Benchmark.ips do |x| x.config(time: 10, warmup: 5) TEMPLATES.each do |label, source| - begin + Liquid::Template.parse(source, environment: env) + x.report("parse: #{label}") do Liquid::Template.parse(source, environment: env) - x.report("parse: #{label}") do - Liquid::Template.parse(source, environment: env) - end - rescue Liquid::SyntaxError => e - puts " Skipping '#{label}' - #{e.message}" end + rescue Liquid::SyntaxError => e + puts " Skipping '#{label}' - #{e.message}" end x.compare! diff --git a/test/unit/tokenizer_unit_test.rb b/test/unit/tokenizer_unit_test.rb index 552ec37a..9358b0eb 100644 --- a/test/unit/tokenizer_unit_test.rb +++ b/test/unit/tokenizer_unit_test.rb @@ -108,7 +108,7 @@ class TokenizerTest < Minitest::Test def test_matching_end_tag_handles_nested_same_name_tags tokenizer = new_tokenizer( - '{% render "a" %}{% render "b" %}inner{% endrender %}outer{% endrender %}' + '{% render "a" %}{% render "b" %}inner{% endrender %}outer{% endrender %}', ) tokenizer.send(:shift) # {% render "a" %} # Should find the outer endrender (depth-aware), not the inner one @@ -126,7 +126,7 @@ class TokenizerTest < Minitest::Test def test_matching_end_tag_returns_false_when_only_nested_end_tag # Only a nested endrender exists (consumed by the inner render), no outer endrender tokenizer = new_tokenizer( - '{% render "a" %}{% render "b" %}{% endrender %}' + '{% render "a" %}{% render "b" %}{% endrender %}', ) tokenizer.send(:shift) # {% render "a" %} # The endrender belongs to the inner render (depth 1 -> 0), not the outer (depth 0)