Sha256: f34eb8552024ac52a121e30394d0bf47e1953745e553780e3016e7bcba476db4
Contents?: true
Size: 1.09 KB
Versions: 4
Compression:
Stored size: 1.09 KB
Contents
module Liquid # Assign sets a variable in your template. # # {% assign foo = 'monkey' %} # # You can then use the variable later in the page. # # {{ foo }} # class Assign < Tag Syntax = /(#{VariableSignature}+)\s*=\s*(.*)\s*/om def initialize(tag_name, markup, options) super if markup =~ Syntax @to = $1 @from = Variable.new($2, options) else raise SyntaxError.new options[:locale].t("errors.syntax.assign".freeze) end end def render(context) val = @from.render(context) context.scopes.last[@to] = val context.resource_limits.assign_score += assign_score_of(val) ''.freeze end def blank? true end private def assign_score_of(val) if val.instance_of?(String) val.length elsif val.instance_of?(Array) || val.instance_of?(Hash) sum = 1 # Uses #each to avoid extra allocations. val.each { |child| sum += assign_score_of(child) } sum else 1 end end end Template.register_tag('assign'.freeze, Assign) end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
liquid-4.0.1 | lib/liquid/tags/assign.rb |
liquid-4.0.0 | lib/liquid/tags/assign.rb |
liquid-4.0.0.rc3 | lib/liquid/tags/assign.rb |
liquid-4.0.0.rc2 | lib/liquid/tags/assign.rb |