module Dry::Transformer::Coercions

Coercion functions for common types

@api public

Constants

BOOLEAN_MAP
FALSE_VALUES
TRUE_VALUES

Public Class Methods

identity(value = nil) click to toggle source

Does nothing and returns a value

@example

fn = Coercions[:identity]
fn[:foo] # => :foo

@param [Object] value

@return [Object]

@api public

# File lib/dry/transformer/coercions.rb, line 34
def self.identity(value = nil)
  value
end
to_boolean(value) click to toggle source

Coerce value into a boolean

@example

Dry::Transformer(:to_boolean)['true']
# => true
Dry::Transformer(:to_boolean)['f']
# => false

@param [Object] value The input value

@return [TrueClass,FalseClass]

@api public

# File lib/dry/transformer/coercions.rb, line 126
def self.to_boolean(value)
  BOOLEAN_MAP.fetch(value)
end
to_date(value) click to toggle source

Coerce value into a date

@example

Dry::Transformer(:to_date)['2015-04-14']
# => #<Date: 2015-04-14 ((2457127j,0s,0n),+0s,2299161j)>

@param [Object] value The input value

@return [Date]

@api public

# File lib/dry/transformer/coercions.rb, line 141
def self.to_date(value)
  Date.parse(value)
end
to_datetime(value) click to toggle source

Coerce value into a datetime

@example

Dry::Transformer(:to_datetime)['2015-04-14 12:01:45']
# => #<DateTime: 2015-04-14T12:01:45+00:00 ((2457127j,43305s,0n),+0s,2299161j)>

@param [Object] value The input value

@return [DateTime]

@api public

# File lib/dry/transformer/coercions.rb, line 171
def self.to_datetime(value)
  DateTime.parse(value)
end
to_decimal(value) click to toggle source

Coerce value into a decimal

@example

Dry::Transformer(:to_decimal)[1.2]
# => #<BigDecimal:7fca32acea50,'0.12E1',18(36)>

@param [Object] value The input value

@return [Decimal]

@api public

# File lib/dry/transformer/coercions.rb, line 109
def self.to_decimal(value)
  value.to_d
end
to_float(value) click to toggle source

Coerce value into a float

@example

Dry::Transformer(:to_float)['1.2']
# => 1.2

@param [Object] value The input value

@return [Float]

@api public

# File lib/dry/transformer/coercions.rb, line 94
def self.to_float(value)
  value.to_f
end
to_integer(value) click to toggle source

Coerce value into a integer

@example

Dry::Transformer(:to_integer)['1']
# => 1

@param [Object] value The input value

@return [Integer]

@api public

# File lib/dry/transformer/coercions.rb, line 79
def self.to_integer(value)
  value.to_i
end
to_string(value) click to toggle source

Coerce value into a string

@example

Dry::Transformer(:to_string)[1]
# => "1"

@param [Object] value The input value

@return [String]

@api public

# File lib/dry/transformer/coercions.rb, line 49
def self.to_string(value)
  value.to_s
end
to_symbol(value) click to toggle source

Coerce value into a symbol

@example

Dry::Transformer(:to_symbol)['foo']
# => :foo

@param [#to_s] value The input value

@return [Symbol]

@api public

# File lib/dry/transformer/coercions.rb, line 64
def self.to_symbol(value)
  value.to_s.to_sym
end
to_time(value) click to toggle source

Coerce value into a time

@example

Dry::Transformer(:to_time)['2015-04-14 12:01:45']
# => 2015-04-14 12:01:45 +0200

@param [Object] value The input value

@return [Time]

@api public

# File lib/dry/transformer/coercions.rb, line 156
def self.to_time(value)
  Time.parse(value)
end
to_tuples(value) click to toggle source

Coerce value into an array containing tuples only

If the source is not an array, or doesn't contain a tuple, returns an array with one empty tuple

@example

Dry::Transformer(:to_tuples)[:foo]                  # => [{}]
Dry::Transformer(:to_tuples)[[]]                    # => [{}]
Dry::Transformer(:to_tuples)[[{ foo: :FOO, :bar }]] # => [{ foo: :FOO }]

@param [Object] value

@return [Array<Hash>]

# File lib/dry/transformer/coercions.rb, line 189
def self.to_tuples(value)
  array = value.is_a?(Array) ? Array[*value] : [{}]
  array.select! { |item| item.is_a?(Hash) }
  array.any? ? array : [{}]
end