Compare commits

..

1 Commits

Author SHA1 Message Date
Alan Wu
36c0fba4e0 Fix post-trim for the raw tag
The added test did not pass before this commit.
2019-11-05 17:55:30 -05:00
4 changed files with 29 additions and 46 deletions

View File

@@ -50,7 +50,19 @@ module Liquid
template_name = context.evaluate(@template_name_expr)
raise ArgumentError, options[:locale].t("errors.argument.include") unless template_name
partial = load_partial(template_name, context, parse_context)
partial = PartialCache.load(
template_name,
context: context,
parse_context: parse_context
)
context_variable_name = @alias_name || template_name.split('/').last
variable = if @variable_name_expr
context.evaluate(@variable_name_expr)
else
context.find_variable(template_name, raise_on_not_found: false)
end
old_template_name = context.template_name
old_partial = context.partial
@@ -59,15 +71,7 @@ module Liquid
context.partial = true
context.stack do
@attributes.each do |key, value|
context[key] = evaluate(context, value)
end
context_variable_name = @alias_name || template_name.split('/').last
variable = if @variable_name_expr
evaluate(context, @variable_name_expr)
else
find_variable(context, template_name, raise_on_not_found: false)
context[key] = context.evaluate(value)
end
if variable.is_a?(Array)
@@ -99,24 +103,6 @@ module Liquid
] + @node.attributes.values
end
end
private
def evaluate(context, value)
context.evaluate(value)
end
def find_variable(context, *args)
context.find_variable(*args)
end
def load_partial(template_name, context, parse_context)
PartialCache.load(
template_name,
context: context,
parse_context: parse_context
)
end
end
Template.register_tag('include', Include)

View File

@@ -16,7 +16,10 @@ module Liquid
while (token = tokens.shift)
if token =~ FullTokenPossiblyInvalid
@body << Regexp.last_match(1) if Regexp.last_match(1) != ""
return if block_delimiter == Regexp.last_match(2)
if block_delimiter == Regexp.last_match(2)
@parse_context.trim_whitespace = (token[-3] == WhitespaceControl)
return
end
end
@body << token unless token.empty?
end

View File

@@ -38,7 +38,11 @@ module Liquid
template_name = context.evaluate(@template_name_expr)
raise ArgumentError, options[:locale].t("errors.argument.include") unless template_name
partial = load_partial(template_name, context, parse_context)
partial = PartialCache.load(
template_name,
context: context,
parse_context: parse_context
)
context_variable_name = @alias_name || template_name.split('/').last
@@ -49,14 +53,14 @@ module Liquid
inner_context['forloop'] = forloop if forloop
@attributes.each do |key, value|
inner_context[key] = evaluate(context, value)
inner_context[key] = context.evaluate(value)
end
inner_context[context_variable_name] = var unless var.nil?
partial.render_to_output_buffer(inner_context, output)
forloop&.send(:increment!)
}
variable = @variable_name_expr ? evaluate(context, @variable_name_expr) : nil
variable = @variable_name_expr ? context.evaluate(@variable_name_expr) : nil
if @for && variable.respond_to?(:each) && variable.respond_to?(:count)
forloop = Liquid::ForloopDrop.new(template_name, variable.count, nil)
variable.each { |var| render_partial_func.call(var, forloop) }
@@ -74,20 +78,6 @@ module Liquid
] + @node.attributes.values
end
end
private
def evaluate(context, value)
context.evaluate(value)
end
def load_partial(template_name, context, parse_context)
PartialCache.load(
template_name,
context: context,
parse_context: parse_context
)
end
end
Template.register_tag('render', Render)

View File

@@ -14,6 +14,10 @@ class RawTagTest < Minitest::Test
assert_template_result('{{ test }}', '{% raw %}{{ test }}{% endraw %}')
end
def test_post_trim
assert_template_result('hi', "{% raw %}hi{% endraw -%}\n")
end
def test_open_tag_in_raw
assert_template_result(' Foobar {% invalid ', '{% raw %} Foobar {% invalid {% endraw %}')
assert_template_result(' Foobar invalid %} ', '{% raw %} Foobar invalid %} {% endraw %}')