class Ame::Arguments::Optional

The arguments to a method in its {Method::Undefined undefined state} where at least one optional argument has been defined and only further {Optional#optional optional} or {Undefined#splat splat} arguments are allowed. @api internal

Public Class Methods

new(arguments, optional) click to toggle source
# File lib/ame-1.0/arguments/optional.rb, line 8
def initialize(arguments, optional)
  @arguments, @optional = arguments + [optional], optional
end

Public Instance Methods

argument(name, type, description, &validate) click to toggle source

@raise [ArgumentError] If an optional argument has been defined

# File lib/ame-1.0/arguments/optional.rb, line 13
def argument(name, type, description, &validate)
  raise ArgumentError,
    "argument '%s', … may not follow optional '%s', …" % [name, @optional.name]
end
optional(name, default, description, &validate) click to toggle source

Adds a new {Optional} argument to the receiver. @param (see Undefined#optional) @yield (see Undefined#optional) @yieldparam (see Undefined#optional) @raise (see Undefined#optional) @return [self]

# File lib/ame-1.0/arguments/optional.rb, line 30
def optional(name, default, description, &validate)
  self << Ame::Optional.new(name, default, description, &validate)
end
splus(name, default, description, &validate) click to toggle source

@raise [ArgumentError] If an optional argument has been defined

# File lib/ame-1.0/arguments/optional.rb, line 19
def splus(name, default, description, &validate)
  raise ArgumentError,
    "splus '%s', … may not follow optional '%s', …" % [name, @optional.name]
end