class Highway::Steps::Parameters::Single
This class is used in step definition classes to represent a single parameter of a step.
Attributes
Default value of the parameter.
@return [Object, nil]
Type of the parameter.
@return [Highway::Steps::Types::*]
Public Class Methods
Initialize an instance.
@param name [String] Name of the parameter. @param type [Highway::Steps::Types::*] Type of the parameter. @param required [Boolean] Whether parametr is required. @param default [Object, nil] Default value of the parameter.
# File lib/highway/steps/parameters/single.rb, line 24 def initialize(name:, type:, required:, default: nil) @name = name @required = required @type = type @default = default assert_default_value_valid() end
Public Instance Methods
Typecheck and validate a value of the parameter.
This method returns typechecked, coerced and validated value or raises a fatal error if value has invalid type, can't be coerced or is othweriwse invalid.
@param value [Object] A value. @param interface [Highway::Interface] An interface instance. @param keypath [Array<String>] A keypath to be used for debugging purposes.
@return [Object]
# File lib/highway/steps/parameters/single.rb, line 53 def typecheck_and_validate(value, interface:, keypath: []) typechecked = @type.typecheck_and_validate(value) if typechecked != nil typechecked else interface.fatal!("Invalid value: '#{value}' for parameter: '#{Utilities::keypath_to_s(keypath)}'.") end end
Private Instance Methods
# File lib/highway/steps/parameters/single.rb, line 64 def assert_default_value_valid() if @default != nil && @type.typecheck_and_validate(@default) == nil raise ArgumentError.new("Default value: '#{@default}' is not a valid value for parameter: '#{@name}'.") end end