Class: Rake::TaskArguments
- Inherits:
-
Object
- Object
- Rake::TaskArguments
- Includes:
- Enumerable
- Defined in:
- lib/rake/task_arguments.rb
Overview
TaskArguments manage the arguments passed to a task.
Instance Attribute Summary collapse
-
#names ⇒ Object
readonly
Argument names.
Instance Method Summary collapse
-
#[](index) ⇒ Object
Find an argument value by name or index.
-
#each(&block) ⇒ Object
Enumerates the arguments and their values.
-
#extras ⇒ Object
Retrieve the list of values not associated with named arguments.
- #fetch(*args, &block) ⇒ Object
-
#has_key?(key) ⇒ Boolean
(also: #key?)
Returns true if
key
is one of the arguments. -
#initialize(names, values, parent = nil) ⇒ TaskArguments
constructor
Create a TaskArgument object with a list of argument
names
and a set of associatedvalues
. -
#inspect ⇒ Object
:nodoc:.
-
#method_missing(sym, *args) ⇒ Object
Returns the value of the given argument via method_missing.
-
#new_scope(names) ⇒ Object
Create a new argument scope using the prerequisite argument names.
-
#to_a ⇒ Object
Retrieve the complete array of sequential values.
-
#to_hash ⇒ Object
Returns a Hash of arguments and their values.
-
#to_s ⇒ Object
:nodoc:.
-
#values_at(*keys) ⇒ Object
Extracts the argument values at
keys
. -
#with_defaults(defaults) ⇒ Object
Specify a hash of default values for task arguments.
Constructor Details
#initialize(names, values, parent = nil) ⇒ TaskArguments
Create a TaskArgument object with a list of argument names
and a set of associated values
. parent
is the parent argument object.
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/rake/task_arguments.rb', line 15 def initialize(names, values, parent=nil) @names = names @parent = parent @hash = {} @values = values names.each_with_index { |name, i| next if values[i].nil? || values[i] == "" @hash[name.to_sym] = values[i] } end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args) ⇒ Object
Returns the value of the given argument via method_missing
66 67 68 |
# File 'lib/rake/task_arguments.rb', line 66 def method_missing(sym, *args) lookup(sym.to_sym) end |
Instance Attribute Details
#names ⇒ Object (readonly)
Argument names
11 12 13 |
# File 'lib/rake/task_arguments.rb', line 11 def names @names end |
Instance Method Details
#[](index) ⇒ Object
Find an argument value by name or index.
44 45 46 |
# File 'lib/rake/task_arguments.rb', line 44 def [](index) lookup(index.to_sym) end |
#each(&block) ⇒ Object
Enumerates the arguments and their values
56 57 58 |
# File 'lib/rake/task_arguments.rb', line 56 def each(&block) @hash.each(&block) end |
#extras ⇒ Object
Retrieve the list of values not associated with named arguments
32 33 34 |
# File 'lib/rake/task_arguments.rb', line 32 def extras @values[@names.length..-1] || [] end |
#fetch(*args, &block) ⇒ Object
93 94 95 |
# File 'lib/rake/task_arguments.rb', line 93 def fetch(*args, &block) @hash.fetch(*args, &block) end |
#has_key?(key) ⇒ Boolean Also known as: key?
Returns true if key
is one of the arguments
88 89 90 |
# File 'lib/rake/task_arguments.rb', line 88 def has_key?(key) @hash.has_key?(key) end |
#inspect ⇒ Object
:nodoc:
79 80 81 82 83 84 85 |
# File 'lib/rake/task_arguments.rb', line 79 def inspect # :nodoc: inspection = @hash.map do |k,v| "#{k.to_s}: #{v.to_s}" end.join(", ") "#<#{self.class} #{inspection}>" end |
#new_scope(names) ⇒ Object
Create a new argument scope using the prerequisite argument names.
38 39 40 41 |
# File 'lib/rake/task_arguments.rb', line 38 def new_scope(names) values = names.map { |n| self[n] } self.class.new(names, values + extras, self) end |
#to_a ⇒ Object
Retrieve the complete array of sequential values
27 28 29 |
# File 'lib/rake/task_arguments.rb', line 27 def to_a @values.dup end |
#to_hash ⇒ Object
Returns a Hash of arguments and their values
71 72 73 |
# File 'lib/rake/task_arguments.rb', line 71 def to_hash @hash.dup end |
#to_s ⇒ Object
:nodoc:
75 76 77 |
# File 'lib/rake/task_arguments.rb', line 75 def to_s # :nodoc: inspect end |
#values_at(*keys) ⇒ Object
Extracts the argument values at keys
61 62 63 |
# File 'lib/rake/task_arguments.rb', line 61 def values_at(*keys) keys.map { |k| lookup(k) } end |
#with_defaults(defaults) ⇒ Object
Specify a hash of default values for task arguments. Use the defaults only if there is no specific value for the given argument.
51 52 53 |
# File 'lib/rake/task_arguments.rb', line 51 def with_defaults(defaults) @hash = defaults.merge(@hash) end |