class Ducktape::Expression::IndexerExp
Public Instance Methods
bind(src, type, qual = nil, root = src)
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 8 def bind(src, type, qual = nil, root = src) unbind src = left.bind(src, :path, qual, root) @source = WeakReference.new(src) @type = type params.each { |param| param.bind(root, :path) } src.on_store(self) if src.is_a?(Hookable) && src.respond_to?(:on_store) #convention hook for []= value end
call(parms)
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 32 def call(parms) parms = parms.args.dup parms.pop return unless parms == params_values owner.send("#{@type}_changed") end
owner=(o)
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 39 def owner=(o) @owner, left.owner = o, o params.each { |param| param.owner = o } end
rightmost()
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 44 def rightmost self end
unbind()
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 20 def unbind params.each { |param| param.unbind } return unless @source src = @source.object return @source, @type, @qual = nil unless src src = source src.remove_hook(:on_store, self) if src.is_a?(Hookable) && src.respond_to?(:on_store) nil end
unparse()
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 48 def unparse "#{left.unparse}[#{params.map(&:unparse).join(',')}]" end
value()
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 52 def value source[*params_values] end
value=(v)
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 56 def value=(v) source[*params_values] = v end
Protected Instance Methods
params_values()
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 68 def params_values params.map { |param| param.value } end
source()
click to toggle source
# File lib/ducktape/expression/indexer_exp.rb, line 61 def source raise UnboundError unless @source src = @source.object raise UnboundError unless src src end