mirror of
https://github.com/Shopify/liquid.git
synced 2026-10-03 00:55:11 -07:00
add name attribute to Template for more flexibility to set context's template name
This commit is contained in:
@@ -16,6 +16,13 @@ module Liquid
|
|||||||
template = template_factory.for(template_name)
|
template = template_factory.for(template_name)
|
||||||
|
|
||||||
partial = template.parse(source, parse_context)
|
partial = template.parse(source, parse_context)
|
||||||
|
|
||||||
|
partial.name ||= if context.registers[:file_system]&.respond_to?(:actual_template_name)
|
||||||
|
context.registers[:file_system].actual_template_name(template_name)
|
||||||
|
else
|
||||||
|
template_name
|
||||||
|
end
|
||||||
|
|
||||||
cached_partials[template_name] = partial
|
cached_partials[template_name] = partial
|
||||||
ensure
|
ensure
|
||||||
parse_context.partial = false
|
parse_context.partial = false
|
||||||
|
|||||||
@@ -72,11 +72,7 @@ module Liquid
|
|||||||
old_partial = context.partial
|
old_partial = context.partial
|
||||||
|
|
||||||
begin
|
begin
|
||||||
context.template_name = if Template.file_system.respond_to?(:actual_template_name)
|
context.template_name = partial.name if partial.name
|
||||||
Template.file_system.actual_template_name(template_name).delete_suffix('.liquid')
|
|
||||||
else
|
|
||||||
template_name
|
|
||||||
end
|
|
||||||
|
|
||||||
context.partial = true
|
context.partial = true
|
||||||
context.stack do
|
context.stack do
|
||||||
|
|||||||
@@ -77,11 +77,7 @@ module Liquid
|
|||||||
render_partial_func = ->(var, forloop) {
|
render_partial_func = ->(var, forloop) {
|
||||||
inner_context = context.new_isolated_subcontext
|
inner_context = context.new_isolated_subcontext
|
||||||
|
|
||||||
inner_context.template_name = if Template.file_system.respond_to?(:actual_template_name)
|
inner_context.template_name = partial.name if partial.name
|
||||||
Template.file_system.actual_template_name(template_name).delete_suffix('.liquid')
|
|
||||||
else
|
|
||||||
template_name
|
|
||||||
end
|
|
||||||
|
|
||||||
inner_context.partial = true
|
inner_context.partial = true
|
||||||
inner_context['forloop'] = forloop if forloop
|
inner_context['forloop'] = forloop if forloop
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ module Liquid
|
|||||||
# template.render('user_name' => 'bob')
|
# template.render('user_name' => 'bob')
|
||||||
#
|
#
|
||||||
class Template
|
class Template
|
||||||
attr_accessor :root
|
attr_accessor :root, :name
|
||||||
attr_reader :resource_limits, :warnings
|
attr_reader :resource_limits, :warnings
|
||||||
|
|
||||||
class TagRegistry
|
class TagRegistry
|
||||||
|
|||||||
@@ -268,12 +268,14 @@ class RenderTagTest < Minitest::Test
|
|||||||
def test_render_tag_renders_actual_template_name_for_error
|
def test_render_tag_renders_actual_template_name_for_error
|
||||||
original_file_system = Liquid::Template.file_system
|
original_file_system = Liquid::Template.file_system
|
||||||
|
|
||||||
Liquid::Template.file_system = MemoryFileSystem.new(
|
context = Liquid::Context.new('errors' => ErrorDrop.new)
|
||||||
|
|
||||||
|
context.registers[:file_system] = MemoryFileSystem.new(
|
||||||
'/some/path/snippets/foo.liquid' => "{{ foo.standard_error }}",
|
'/some/path/snippets/foo.liquid' => "{{ foo.standard_error }}",
|
||||||
)
|
)
|
||||||
|
|
||||||
template = Liquid::Template.parse("{% render 'foo' with errors %}", line_numbers: true)
|
template = Liquid::Template.parse("{% render 'foo' with errors %}", line_numbers: true)
|
||||||
assert_equal('Liquid error (/some/path/snippets/foo line 1): standard error', template.render('errors' => ErrorDrop.new))
|
assert_equal('Liquid error (/some/path/snippets/foo line 1): standard error', template.render(context))
|
||||||
ensure
|
ensure
|
||||||
Liquid::Template.file_system = original_file_system
|
Liquid::Template.file_system = original_file_system
|
||||||
end
|
end
|
||||||
|
|||||||
+1
-1
@@ -233,6 +233,6 @@ class MemoryFileSystem
|
|||||||
end
|
end
|
||||||
|
|
||||||
def actual_template_name(template_name)
|
def actual_template_name(template_name)
|
||||||
@snippets[template_name][:actual_template_name]
|
@snippets[template_name][:actual_template_name].delete_suffix(".liquid")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user