mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-26 13:45:13 -07:00
Port liquid-c bug compatible whitespace trimming (#1291)
This commit is contained in:
@@ -145,7 +145,11 @@ module Liquid
|
|||||||
if token[2] == WhitespaceControl
|
if token[2] == WhitespaceControl
|
||||||
previous_token = @nodelist.last
|
previous_token = @nodelist.last
|
||||||
if previous_token.is_a?(String)
|
if previous_token.is_a?(String)
|
||||||
|
first_byte = previous_token.getbyte(0)
|
||||||
previous_token.rstrip!
|
previous_token.rstrip!
|
||||||
|
if previous_token.empty? && parse_context[:bug_compatible_whitespace_trimming] && first_byte
|
||||||
|
previous_token << first_byte
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
parse_context.trim_whitespace = (token[-3] == WhitespaceControl)
|
parse_context.trim_whitespace = (token[-3] == WhitespaceControl)
|
||||||
|
|||||||
@@ -528,4 +528,32 @@ class TrimModeTest < Minitest::Test
|
|||||||
END_EXPECTED
|
END_EXPECTED
|
||||||
assert_template_result(expected, text)
|
assert_template_result(expected, text)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_pre_trim_blank_preceding_text
|
||||||
|
template = Liquid::Template.parse("\n{%- raw %}{% endraw %}")
|
||||||
|
assert_equal("", template.render)
|
||||||
|
|
||||||
|
template = Liquid::Template.parse("\n{%- if true %}{% endif %}")
|
||||||
|
assert_equal("", template.render)
|
||||||
|
|
||||||
|
template = Liquid::Template.parse("{{ 'B' }} \n{%- if true %}C{% endif %}")
|
||||||
|
assert_equal("BC", template.render)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_bug_compatible_pre_trim
|
||||||
|
template = Liquid::Template.parse("\n {%- raw %}{% endraw %}", bug_compatible_whitespace_trimming: true)
|
||||||
|
assert_equal("\n", template.render)
|
||||||
|
|
||||||
|
template = Liquid::Template.parse("\n {%- if true %}{% endif %}", bug_compatible_whitespace_trimming: true)
|
||||||
|
assert_equal("\n", template.render)
|
||||||
|
|
||||||
|
template = Liquid::Template.parse("{{ 'B' }} \n{%- if true %}C{% endif %}", bug_compatible_whitespace_trimming: true)
|
||||||
|
assert_equal("B C", template.render)
|
||||||
|
|
||||||
|
template = Liquid::Template.parse("B\n {%- raw %}{% endraw %}", bug_compatible_whitespace_trimming: true)
|
||||||
|
assert_equal("B", template.render)
|
||||||
|
|
||||||
|
template = Liquid::Template.parse("B\n {%- if true %}{% endif %}", bug_compatible_whitespace_trimming: true)
|
||||||
|
assert_equal("B", template.render)
|
||||||
|
end
|
||||||
end # TrimModeTest
|
end # TrimModeTest
|
||||||
|
|||||||
Reference in New Issue
Block a user