mirror of
https://github.com/kemko/liquid.git
synced 2026-01-06 10:15:40 +03:00
Context is no longer lost when moving into a Liquid FileSystem.
This commit is contained in:
committed by
Tobias Lütke
parent
9926d86c91
commit
7bbb4ff84f
@@ -14,7 +14,7 @@ module Liquid
|
|||||||
# This will parse the template with a LocalFileSystem implementation rooted at 'template_path'.
|
# This will parse the template with a LocalFileSystem implementation rooted at 'template_path'.
|
||||||
class BlankFileSystem
|
class BlankFileSystem
|
||||||
# Called by Liquid to retrieve a template file
|
# Called by Liquid to retrieve a template file
|
||||||
def read_template_file(template_path)
|
def read_template_file(context, template_name)
|
||||||
raise FileSystemError, "This liquid context does not allow includes."
|
raise FileSystemError, "This liquid context does not allow includes."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -38,7 +38,8 @@ module Liquid
|
|||||||
@root = root
|
@root = root
|
||||||
end
|
end
|
||||||
|
|
||||||
def read_template_file(template_path)
|
def read_template_file(context, template_name)
|
||||||
|
template_path = context[template_name]
|
||||||
full_path = full_path(template_path)
|
full_path = full_path(template_path)
|
||||||
raise FileSystemError, "No such template '#{template_path}'" unless File.exists?(full_path)
|
raise FileSystemError, "No such template '#{template_path}'" unless File.exists?(full_path)
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ module Liquid
|
|||||||
|
|
||||||
def render(context)
|
def render(context)
|
||||||
file_system = context.registers[:file_system] || Liquid::Template.file_system
|
file_system = context.registers[:file_system] || Liquid::Template.file_system
|
||||||
source = file_system.read_template_file(context[@template_name])
|
source = file_system.read_template_file(context, @template_name)
|
||||||
partial = Liquid::Template.parse(source)
|
partial = Liquid::Template.parse(source)
|
||||||
|
|
||||||
variable = context[@variable_name || @template_name[1..-2]]
|
variable = context[@variable_name || @template_name[1..-2]]
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ class FileSystemTest < Test::Unit::TestCase
|
|||||||
|
|
||||||
def test_default
|
def test_default
|
||||||
assert_raise(FileSystemError) do
|
assert_raise(FileSystemError) do
|
||||||
BlankFileSystem.new.read_template_file("dummy")
|
BlankFileSystem.new.read_template_file({'dummy'=>'smarty'}, "dummy")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class TestFileSystem
|
class TestFileSystem
|
||||||
def read_template_file(template_path)
|
def read_template_file(context, template_name)
|
||||||
|
template_path = context[template_name]
|
||||||
case template_path
|
case template_path
|
||||||
when "product"
|
when "product"
|
||||||
"Product: {{ product.title }} "
|
"Product: {{ product.title }} "
|
||||||
@@ -34,7 +35,8 @@ class TestFileSystem
|
|||||||
end
|
end
|
||||||
|
|
||||||
class OtherFileSystem
|
class OtherFileSystem
|
||||||
def read_template_file(template_path)
|
def read_template_file(context, template_name)
|
||||||
|
template_path = context[template_name]
|
||||||
'from OtherFileSystem'
|
'from OtherFileSystem'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -104,7 +106,7 @@ class IncludeTagTest < Test::Unit::TestCase
|
|||||||
def test_recursively_included_template_does_not_produce_endless_loop
|
def test_recursively_included_template_does_not_produce_endless_loop
|
||||||
|
|
||||||
infinite_file_system = Class.new do
|
infinite_file_system = Class.new do
|
||||||
def read_template_file(template_path)
|
def read_template_file(context, template_name)
|
||||||
"-{% include 'loop' %}"
|
"-{% include 'loop' %}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user