class Fuelcell::Action::ArgsManager

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

Attributes

args[R]

Public Class Methods

new() click to toggle source
# File lib/fuelcell/action/args_manager.rb, line 12
def initialize
  @args = []
end

Public Instance Methods

[](name)
Alias for: find
add(arg, config = {}) click to toggle source
# 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
Also aliased as: arg
arg(arg, config = {})
Alias for: add
args?() click to toggle source
# File lib/fuelcell/action/args_manager.rb, line 16
def args?
  !empty?
end
create(name, config = {}) click to toggle source
# File lib/fuelcell/action/args_manager.rb, line 61
def create(name, config = {})
  ArgDefinition.new(name, config)
end
find(name) click to toggle source
# 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
Also aliased as: find_arg, []
find_arg(name)
Alias for: find
missing(names) { |list| ... } click to toggle source
# 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) click to toggle source
# 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() click to toggle source
# File lib/fuelcell/action/args_manager.rb, line 20
def required
  args.select { |arg| arg.required? }
end
Also aliased as: required_args
required_args()
Alias for: required