mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-19 02:40:41 -07:00
Merge old Shopify/liquid
This commit is contained in:
+1
-1
@@ -95,7 +95,7 @@ module Liquid
|
||||
rescue ::StandardError => e
|
||||
context.handle_error(e)
|
||||
end
|
||||
end
|
||||
end.join
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -14,7 +14,7 @@ module Liquid
|
||||
# This will parse the template with a LocalFileSystem implementation rooted at 'template_path'.
|
||||
class BlankFileSystem
|
||||
# Called by Liquid to retrieve a template file
|
||||
def read_template_file(context, template_name)
|
||||
def read_template_file(template_path, context)
|
||||
raise FileSystemError, "This liquid context does not allow includes."
|
||||
end
|
||||
end
|
||||
@@ -38,8 +38,7 @@ module Liquid
|
||||
@root = root
|
||||
end
|
||||
|
||||
def read_template_file(context, template_name)
|
||||
template_path = context[template_name]
|
||||
def read_template_file(template_path, context)
|
||||
full_path = full_path(template_path)
|
||||
raise FileSystemError, "No such template '#{template_path}'" unless File.exists?(full_path)
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ module Liquid
|
||||
row = 1
|
||||
col = 0
|
||||
|
||||
result = ["<tr class=\"row1\">\n"]
|
||||
result = "<tr class=\"row1\">\n"
|
||||
context.stack do
|
||||
|
||||
collection.each_with_index do |item, index|
|
||||
@@ -56,17 +56,18 @@ module Liquid
|
||||
|
||||
col += 1
|
||||
|
||||
result << ["<td class=\"col#{col}\">"] + render_all(@nodelist, context) + ['</td>']
|
||||
result << "<td class=\"col#{col}\">" << render_all(@nodelist, context) << '</td>'
|
||||
|
||||
if col == cols and not (index == length - 1)
|
||||
col = 0
|
||||
row += 1
|
||||
result << ["</tr>\n<tr class=\"row#{row}\">"]
|
||||
result << "</tr>\n<tr class=\"row#{row}\">"
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
result + ["</tr>\n"]
|
||||
result << "</tr>\n"
|
||||
result
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ module Liquid
|
||||
|
||||
def render(context)
|
||||
output = super
|
||||
context.scopes.last[@to] = output.join
|
||||
context.scopes.last[@to] = output
|
||||
''
|
||||
end
|
||||
end
|
||||
|
||||
@@ -31,20 +31,16 @@ module Liquid
|
||||
context.stack do
|
||||
execute_else_block = true
|
||||
|
||||
@blocks.inject([]) do |output, block|
|
||||
|
||||
output = ''
|
||||
@blocks.each do |block|
|
||||
if block.else?
|
||||
|
||||
return render_all(block.attachment, context) if execute_else_block
|
||||
|
||||
elsif block.evaluate(context)
|
||||
|
||||
execute_else_block = false
|
||||
output += render_all(block.attachment, context)
|
||||
output << render_all(block.attachment, context)
|
||||
end
|
||||
|
||||
output
|
||||
end
|
||||
output
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ module Liquid
|
||||
|
||||
segment.reverse! if @reversed
|
||||
|
||||
result = []
|
||||
result = ''
|
||||
|
||||
length = segment.length
|
||||
|
||||
|
||||
+21
-12
@@ -20,14 +20,12 @@ module Liquid
|
||||
super
|
||||
end
|
||||
|
||||
def parse(tokens)
|
||||
def parse(tokens)
|
||||
end
|
||||
|
||||
def render(context)
|
||||
file_system = context.registers[:file_system] || Liquid::Template.file_system
|
||||
source = file_system.read_template_file(context, @template_name)
|
||||
partial = Liquid::Template.parse(source)
|
||||
|
||||
|
||||
def render(context)
|
||||
source = _read_template_from_file_system(context)
|
||||
partial = Liquid::Template.parse(source)
|
||||
variable = context[@variable_name || @template_name[1..-2]]
|
||||
|
||||
context.stack do
|
||||
@@ -36,20 +34,31 @@ module Liquid
|
||||
end
|
||||
|
||||
if variable.is_a?(Array)
|
||||
|
||||
variable.collect do |variable|
|
||||
variable.collect do |variable|
|
||||
context[@template_name[1..-2]] = variable
|
||||
partial.render(context)
|
||||
end
|
||||
|
||||
else
|
||||
|
||||
context[@template_name[1..-2]] = variable
|
||||
partial.render(context)
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def _read_template_from_file_system(context)
|
||||
file_system = context.registers[:file_system] || Liquid::Template.file_system
|
||||
|
||||
# make read_template_file call backwards-compatible.
|
||||
case file_system.method(:read_template_file).arity
|
||||
when 1
|
||||
file_system.read_template_file(context[@template_name])
|
||||
when 2
|
||||
file_system.read_template_file(context[@template_name], context)
|
||||
else
|
||||
raise ArgumentError, "file_system.read_template_file expects two parameters: (template_name, context)"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Template.register_tag('include', Include)
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
module Liquid
|
||||
class Raw < Block
|
||||
def parse(tokens)
|
||||
@nodelist ||= []
|
||||
@nodelist.clear
|
||||
|
||||
while token = tokens.shift
|
||||
if token =~ FullToken
|
||||
if block_delimiter == $1
|
||||
end_tag
|
||||
return
|
||||
end
|
||||
end
|
||||
@nodelist << token if not token.empty?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Template.register_tag('raw', Raw)
|
||||
end
|
||||
|
||||
@@ -13,19 +13,19 @@ module Liquid
|
||||
# First condition is interpreted backwards ( if not )
|
||||
block = @blocks.first
|
||||
unless block.evaluate(context)
|
||||
return render_all(block.attachment, context)
|
||||
return render_all(block.attachment, context)
|
||||
end
|
||||
|
||||
# After the first condition unless works just like if
|
||||
@blocks[1..-1].each do |block|
|
||||
if block.evaluate(context)
|
||||
return render_all(block.attachment, context)
|
||||
if block.evaluate(context)
|
||||
return render_all(block.attachment, context)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
''
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
@@ -121,7 +121,8 @@ module Liquid
|
||||
begin
|
||||
# render the nodelist.
|
||||
# for performance reasons we get a array back here. join will make a string out of it
|
||||
@root.render(context).join
|
||||
result = @root.render(context)
|
||||
result.respond_to?(:join) ? result.join : result
|
||||
ensure
|
||||
@errors = context.errors
|
||||
end
|
||||
|
||||
@@ -37,7 +37,7 @@ module Liquid
|
||||
return '' if @name.nil?
|
||||
@filters.inject(context[@name]) do |output, filter|
|
||||
filterargs = filter[1].to_a.collect do |a|
|
||||
context[a]
|
||||
context[a]
|
||||
end
|
||||
begin
|
||||
output = context.invoke(filter[0], output, *filterargs)
|
||||
|
||||
Reference in New Issue
Block a user