module SymmetricEncryption::Coerce

For coercing data types to from strings

Constants

TYPE_MAP

Public Class Methods

coerce(value, type, from_type = nil) click to toggle source

Coerce given value into given type Does not coerce json or yaml values

# File lib/symmetric_encryption/coerce.rb, line 16
def self.coerce(value, type, from_type = nil)
  return value if value.nil? || (value == "")

  from_type ||= value.class
  case type
  when :json
    value
  when :yaml
    value
  else
    coercer = Coercible::Coercer.new
    coercer[from_type].send("to_#{type}".to_sym, value)
  end
end
coerce_from_string(value, type) click to toggle source

Uses coercible gem to coerce values from strings into the target type Note: if the type is :string, then the value is returned as is, and the

coercible gem is not used at all.
# File lib/symmetric_encryption/coerce.rb, line 34
def self.coerce_from_string(value, type)
  return value if value.nil? || (value == "")

  case type
  when :string
    value
  when :json
    JSON.load(value)
  when :yaml
    YAML.load(value)
  else
    coerce(value, type, String)
  end
end
coerce_to_string(value, type) click to toggle source

Uses coercible gem to coerce values to strings from the specified type Note: if the type is :string, and value is not nil, then to_s is called

on the value and the coercible gem is not used at all.
# File lib/symmetric_encryption/coerce.rb, line 52
def self.coerce_to_string(value, type)
  return value if value.nil? || (value == "")

  case type
  when :string
    value.to_s
  when :json
    value.to_json
  when :yaml
    value.to_yaml
  else
    coerce(value, :string, coercion_type(type, value))
  end
end
coercion_type(symbol, value) click to toggle source

Returns the correct coercion type to use for the specified symbol and value

# File lib/symmetric_encryption/coerce.rb, line 68
def self.coercion_type(symbol, value)
  if symbol == :boolean
    value.class
  else
    TYPE_MAP[symbol]
  end
end