Class: Fuelcell::Action::ArgsManager
- Inherits:
-
Object
- Object
- Fuelcell::Action::ArgsManager
- Extended by:
- Forwardable
- Defined in:
- lib/fuelcell/action/args_manager.rb
Overview
Used by the Command to manage adding args from its dsl. It is also used during arg parsing to find args, or check if any required args have been missed
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
Returns the value of attribute args.
Instance Method Summary collapse
- #add(arg, config = {}) ⇒ Object (also: #arg)
- #args? ⇒ Boolean
- #create(name, config = {}) ⇒ Object
- #find(name) ⇒ Object (also: #find_arg, #[])
-
#initialize ⇒ ArgsManager
constructor
A new instance of ArgsManager.
- #missing(names) {|list| ... } ⇒ Object
- #remove(name) ⇒ Object
- #required ⇒ Object (also: #required_args)
Constructor Details
#initialize ⇒ ArgsManager
Returns a new instance of ArgsManager.
12 13 14 |
# File 'lib/fuelcell/action/args_manager.rb', line 12 def initialize @args = [] end |
Instance Attribute Details
#args ⇒ Object (readonly)
Returns the value of attribute args.
7 8 9 |
# File 'lib/fuelcell/action/args_manager.rb', line 7 def args @args end |
Instance Method Details
#add(arg, config = {}) ⇒ Object Also known as: arg
36 37 38 39 40 41 42 43 44 |
# File 'lib/fuelcell/action/args_manager.rb', line 36 def add(arg, config = {}) arg = create(arg, config) if arg.is_a?(String) args.each do |item| if item.name == arg.name fail "can not add arg: duplicate exists with name #{arg.name}" end end args << arg end |
#args? ⇒ Boolean
16 17 18 |
# File 'lib/fuelcell/action/args_manager.rb', line 16 def args? !empty? end |
#create(name, config = {}) ⇒ Object
61 62 63 |
# File 'lib/fuelcell/action/args_manager.rb', line 61 def create(name, config = {}) ArgDefinition.new(name, config) end |
#find(name) ⇒ Object Also known as: find_arg, []
53 54 55 56 57 |
# File 'lib/fuelcell/action/args_manager.rb', line 53 def find(name) target = false args.each {|arg| target = arg if arg.name == name } target end |
#missing(names) {|list| ... } ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/fuelcell/action/args_manager.rb', line 25 def missing(names) list = [] args.select do |arg| list << arg if arg.required? && !names.include?(arg.name) end return [] if list.empty? yield list if block_given? list end |
#remove(name) ⇒ Object
47 48 49 50 51 |
# File 'lib/fuelcell/action/args_manager.rb', line 47 def remove(name) # looks like an arg definition so lets use it's name name = name.name if name.respond_to?(:name) args.delete_if {|arg| arg.name == name} end |
#required ⇒ Object Also known as: required_args
20 21 22 |
# File 'lib/fuelcell/action/args_manager.rb', line 20 def required args.select { |arg| arg.required? } end |