Parent

Methods

Liquid::Variable

Holds variables. Variables are only loaded "just in time" and are not evaluated as part of the render stage

{{ monkey }}
{{ user.name }}

Variables can be combined with filters:

{{ user | link }}

Constants

FilterParser

Attributes

filters[RW]
name[RW]

Public Class Methods

new(markup) click to toggle source
# File lib/liquid/variable.rb, line 17
def initialize(markup)
  @markup  = markup
  @name    = nil
  @filters = []
  if match = markup.match(/\s*(#{QuotedFragment})(.*)/)
    @name = match[1]
    if match[2].match(/#{FilterSeparator}\s*(.*)/)
      filters = Regexp.last_match(1).scan(FilterParser)
      filters.each do |f|
        if matches = f.match(/\s*(\w+)(?:\s*#{FilterArgumentSeparator}(.*))?/)
          filtername = matches[1]
          filterargs = matches[2].to_s.scan(/(?:\A|#{ArgumentSeparator})\s*((?:\w+\s*\:\s*)?#{QuotedFragment})/).flatten
          @filters << [filtername, filterargs]
        end
      end
    end
  end
end

Public Instance Methods

render(context) click to toggle source
# File lib/liquid/variable.rb, line 36
def render(context)
  return '' if @name.nil?
  @filters.inject(context[@name]) do |output, filter|
    filterargs = []
    keyword_args = {}
    filter[1].to_a.each do |a|
      if matches = a.match(/\A#{TagAttributes}\z/)
        keyword_args[matches[1]] = context[matches[2]]
      else
        filterargs << context[a]
      end
    end
    filterargs << keyword_args unless keyword_args.empty?
    begin
      output = context.invoke(filter[0], output, *filterargs)
    rescue FilterNotFound
      raise FilterNotFound, "Error - filter '#{filter[0]}' in '#{@markup.strip}' could not be found."
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.