Context is no longer lost when moving into a Liquid FileSystem.

This commit is contained in:
David Turnbull
2010-08-24 16:31:33 -07:00
committed by Tobias Lütke
parent 9926d86c91
commit 7bbb4ff84f
4 changed files with 10 additions and 7 deletions

View File

@@ -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)

View File

@@ -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]]

View File

@@ -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

View File

@@ -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