Included modules
Enumerable
Create a TaskArgument object with a list of named arguments (given by
:names) and a set of associated values (given by :values). :parent is the
parent argument object.
14: def initialize(names, values, parent=nil)
15: @names = names
16: @parent = parent
17: @hash = {}
18: names.each_with_index { |name, i|
19: @hash[name.to_sym] = values[i] unless values[i].nil?
20: }
21: end
Find an argument value by name or index.
31: def [](index)
32: lookup(index.to_sym)
33: end
42: def each(&block)
43: @hash.each(&block)
44: end
58: def inspect
59: to_s
60: end
46: def method_missing(sym, *args, &block)
47: lookup(sym.to_sym)
48: end
Create a new argument scope using
the prerequisite argument names.
25: def new_scope(names)
26: values = names.collect { |n| self[n] }
27: self.class.new(names, values, self)
28: end
50: def to_hash
51: @hash
52: end
54: def to_s
55: @hash.inspect
56: end
Specify a hash of default values for task arguments. Use the defaults only
if there is no specific value for the given argument.
38: def with_defaults(defaults)
39: @hash = defaults.merge(@hash)
40: end
Protected Instance methods |
64: def lookup(name)
65: if @hash.has_key?(name)
66: @hash[name]
67: elsif @parent
68: @parent.lookup(name)
69: end
70: end