Class: Fuelcell::Action::ArgsManager

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initializeArgsManager

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

#argsObject (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

Returns:

  • (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

Yields:

  • (list)


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

#requiredObject 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