Class: DSLCompose::DSL::Arguments
- Inherits:
-
Object
- Object
- DSLCompose::DSL::Arguments
- Defined in:
- lib/dsl_compose/dsl/arguments.rb,
lib/dsl_compose/dsl/arguments/argument.rb,
lib/dsl_compose/dsl/arguments/argument/interpreter.rb,
lib/dsl_compose/dsl/arguments/argument/in_validation.rb,
lib/dsl_compose/dsl/arguments/argument/is_a_validation.rb,
lib/dsl_compose/dsl/arguments/argument/format_validation.rb,
lib/dsl_compose/dsl/arguments/argument/length_validation.rb,
lib/dsl_compose/dsl/arguments/argument/not_in_validation.rb,
lib/dsl_compose/dsl/arguments/argument/end_with_validation.rb,
lib/dsl_compose/dsl/arguments/argument/equal_to_validation.rb,
lib/dsl_compose/dsl/arguments/argument/less_than_validation.rb,
lib/dsl_compose/dsl/arguments/argument/start_with_validation.rb,
lib/dsl_compose/dsl/arguments/argument/greater_than_validation.rb,
lib/dsl_compose/dsl/arguments/argument/not_end_with_validation.rb,
lib/dsl_compose/dsl/arguments/argument/not_start_with_validation.rb,
lib/dsl_compose/dsl/arguments/argument/less_than_or_equal_to_validation.rb,
lib/dsl_compose/dsl/arguments/argument/greater_than_or_equal_to_validation.rb
Defined Under Namespace
Classes: Argument, ArgumentAlreadyExistsError, ArgumentDoesNotExistError, ArgumentOrderingError, RequestedOptionalArgumentIsRequiredError, RequestedRequiredArgumentIsOptionalError
Instance Method Summary collapse
-
#add_argument(name, required, type, array: false, &block) ⇒ Object
Takes a method name, unique flag, required flag, and a block and creates a new Argument object.
-
#any? ⇒ Boolean
returns true if there are any arguments, otherwise returns false.
-
#argument(name) ⇒ Object
returns a specific Argument by it’s name, if the Argument does not exist, then an error is raised.
-
#arguments ⇒ Object
Returns an array of all this DSLMethods Argument objects.
-
#has_argument?(name) ⇒ Boolean
Returns ‘true` if an Argument with the provided name exists in this DSLMethod, otherwise it returns `false`.
-
#initialize ⇒ Arguments
constructor
A new instance of Arguments.
-
#optional_argument(name) ⇒ Object
returns a specific optional Argument by it’s name, if the Argument does not exist, or if it is required, then an error is raised.
-
#optional_arguments ⇒ Object
Returns an array of only the optional Argument objects on this DSLMethod.
-
#required_argument(name) ⇒ Object
returns a specific required Argument by it’s name, if the Argument does not exist, or if it is optional, then an error is raised.
-
#required_arguments ⇒ Object
Returns an array of only the required Argument objects on this DSLMethod.
Constructor Details
#initialize ⇒ Arguments
Returns a new instance of Arguments.
21 22 23 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 21 def initialize @arguments = {} end |
Instance Method Details
#add_argument(name, required, type, array: false, &block) ⇒ Object
Takes a method name, unique flag, required flag, and a block and creates a new Argument object.
Argument ‘name` must be unique within the DSLMethod. `required` must be a boolean, and determines if this argument will be required or optional on the method which is exposed in our DSL.
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 89 def add_argument name, required, type, array: false, &block if @arguments.key? name raise ArgumentAlreadyExistsError, "An argument with the name `#{name}` already exists for this DSL method" end # required arguments may not come after optional ones if required && optional_arguments.any? raise ArgumentOrderingError, "Required arguments can not be added after optional ones" end @arguments[name] = Argument.new(name, required, type, array: array, &block) end |
#any? ⇒ Boolean
returns true if there are any arguments, otherwise returns false
26 27 28 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 26 def any? @arguments.values.any? end |
#argument(name) ⇒ Object
returns a specific Argument by it’s name, if the Argument does not exist, then an error is raised
47 48 49 50 51 52 53 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 47 def argument name if has_argument? name @arguments[name] else raise ArgumentDoesNotExistError, "The argument `#{name}` does not exist for this DSLMethod" end end |
#arguments ⇒ Object
Returns an array of all this DSLMethods Argument objects.
31 32 33 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 31 def arguments @arguments.values end |
#has_argument?(name) ⇒ Boolean
Returns ‘true` if an Argument with the provided name exists in this DSLMethod, otherwise it returns `false`.
79 80 81 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 79 def has_argument? name @arguments.key? name end |
#optional_argument(name) ⇒ Object
returns a specific optional Argument by it’s name, if the Argument does not exist, or if it is required, then an error is raised
57 58 59 60 61 62 63 64 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 57 def optional_argument name arg = argument name if arg.optional? @arguments[name] else raise RequestedOptionalArgumentIsRequiredError, "A specific argument `#{name}` which was expected to be optional was requested, but the argument found was flagged as required" end end |
#optional_arguments ⇒ Object
Returns an array of only the optional Argument objects on this DSLMethod.
36 37 38 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 36 def optional_arguments arguments.filter(&:optional?) end |
#required_argument(name) ⇒ Object
returns a specific required Argument by it’s name, if the Argument does not exist, or if it is optional, then an error is raised
68 69 70 71 72 73 74 75 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 68 def required_argument name arg = argument name if arg.required? @arguments[name] else raise RequestedRequiredArgumentIsOptionalError, "A specific argument `#{name}` which was expected to be required was requested, but the argument found was flagged as optional" end end |
#required_arguments ⇒ Object
Returns an array of only the required Argument objects on this DSLMethod.
41 42 43 |
# File 'lib/dsl_compose/dsl/arguments.rb', line 41 def required_arguments arguments.filter(&:required?) end |