module TTY::Option::ParamConversion

Public Class Methods

[](param, value)
Alias for: call
call(param, value) click to toggle source

Convert parameter value to another type

@example

param = Parameter::Argument.create(:foo, convert: :int)
result = ParamConversion[param, "12"]
result.value # => 12

@api public

# File lib/tty/option/param_conversion.rb, line 17
def call(param, value)
  return Result.success(value) if !param.convert? || value.nil?

  cast = param.convert
  cast = cast.is_a?(Proc) ? cast : Conversions[cast]
  converted = cast.(value)

  if converted == Const::Undefined
    Result.failure(InvalidConversionArgument.new(param, value))
  else
    Result.success(converted)
  end
end
Also aliased as: []

Private Instance Methods

[](param, value)
Alias for: call
call(param, value) click to toggle source

Convert parameter value to another type

@example

param = Parameter::Argument.create(:foo, convert: :int)
result = ParamConversion[param, "12"]
result.value # => 12

@api public

# File lib/tty/option/param_conversion.rb, line 17
def call(param, value)
  return Result.success(value) if !param.convert? || value.nil?

  cast = param.convert
  cast = cast.is_a?(Proc) ? cast : Conversions[cast]
  converted = cast.(value)

  if converted == Const::Undefined
    Result.failure(InvalidConversionArgument.new(param, value))
  else
    Result.success(converted)
  end
end
Also aliased as: []