class LtdTemplate::Code::Variable
Public Class Methods
new(template, name)
click to toggle source
Calls superclass method
LtdTemplate::Code::new
# File lib/ltdtemplate/code/variable.rb, line 11 def initialize (template, name) super template if name.size > 1 && (name[0] == '@' || name[0] == '^') # @var is in the root namespace # ^var is in the parent namespace @modifier = name[0] @name = name[1..-1] @name = @name.to_i if @name =~ /^(?:0|[1-9]\d*)$/ else # Standard bottom-to-top namespace search variable @modifier = nil @name = name end end
Public Instance Methods
evaluate(opts = {})
click to toggle source
Evaluate
# File lib/ltdtemplate/code/variable.rb, line 29 def evaluate (opts = {}) case opts[:method] when '=', '?=' if opts[:method] != '?=' || self.namespace[@name].nil? params = opts[:parameters] params = params[0] if params.is_a? LtdTemplate::Univalue self.namespace[@name] = params end nil else self.namespace[@name] = "" if opts[:method] == 'methods' && self.namespace[@name].nil? rubyversed(self.namespace[@name]).evaluate opts end end
namespace()
click to toggle source
Return the namespace in which this variable currently resides (or would reside, if it doesn't currently exist).
# File lib/ltdtemplate/code/variable.rb, line 49 def namespace case @modifier when '@' then base = @template.namespace.root when '^' then base = @template.namespace.parent || @template.namespace else base = @template.namespace end base.find_item(@name) || base end