diff --git a/lib/liquid/block.rb b/lib/liquid/block.rb index 233d131..737fadf 100644 --- a/lib/liquid/block.rb +++ b/lib/liquid/block.rb @@ -28,9 +28,7 @@ module Liquid # fetch the tag from registered blocks if tag = Template.tags[$1] - new_tag = tag.allocate - new_tag.options = @options || {} - new_tag.send(:initialize, $1, $2, tokens) + new_tag = tag.new_with_options($1, $2, tokens, @options || {}) @blank &&= new_tag.blank? @nodelist << new_tag else diff --git a/lib/liquid/tag.rb b/lib/liquid/tag.rb index 2d2c7a7..db6b754 100644 --- a/lib/liquid/tag.rb +++ b/lib/liquid/tag.rb @@ -2,6 +2,13 @@ module Liquid class Tag attr_accessor :nodelist, :options + def self.new_with_options(tag_name, markup, tokens, options) + new_tag = self.allocate + new_tag.options = options + new_tag.send(:initialize, tag_name, markup, tokens) + new_tag + end + def initialize(tag_name, markup, tokens) @tag_name = tag_name @markup = markup