Class: AudioFeedManager::ArgumentsSpecification

Inherits:
Object
  • Object
show all
Extended by:
GetterSetterMethod
Defined in:
lib/audio_feed_manager/cli/arguments_specification.rb

Defined Under Namespace

Classes: Argument, Varargs

Class Method Summary collapse

Instance Method Summary collapse

Methods included from GetterSetterMethod

get_set

Class Method Details

.no_argumentsObject



37
38
39
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 37

def self.no_arguments
  new
end

.specify {|specification| ... } ⇒ Object

Yields:

  • (specification)


41
42
43
44
45
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 41

def self.specify
  specification = no_arguments
  yield specification
  specification
end

Instance Method Details

#argument(name, required: false, description: "", default: nil) ⇒ Object



50
51
52
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 50

def argument(name, required: false, description: "", default: nil)
  arguments << Argument.new(name, required, description, default)
end

#argumentsObject



74
75
76
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 74

def arguments
  @arguments ||= []
end

#has_arguments?Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 82

def has_arguments?
  !arguments.empty?
end

#minimum_varags_countObject



58
59
60
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 58

def minimum_varags_count
  varargs_arguments.map(&:minimum).reduce(0, :+)
end

#optional_argumentsObject



66
67
68
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 66

def optional_arguments
  arguments.select(&:optional)
end

#required_argumentsObject



62
63
64
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 62

def required_arguments
  arguments.select(&:required)
end

#usage_lineObject



78
79
80
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 78

def usage_line
  name + required_arguments_line + optional_arguments_line + varargs_line
end

#varargs(name, minimum: 1, description: "") ⇒ Object



54
55
56
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 54

def varargs(name, minimum: 1, description: "")
  arguments << Varargs.new(name, minimum, description)
end

#varargs_argumentsObject



70
71
72
# File 'lib/audio_feed_manager/cli/arguments_specification.rb', line 70

def varargs_arguments
  arguments.select(&:varargs)
end