Sha256: e7b2d8a257654d03e416c3fe34f9fececee74e5c0f8be598525c4a8f011630dd
Contents?: true
Size: 1.91 KB
Versions: 3
Compression:
Stored size: 1.91 KB
Contents
module SymmetricEncryption # For coercing data types to from strings module Coerce TYPE_MAP = { string: String, integer: Integer, float: Float, decimal: BigDecimal, datetime: DateTime, time: Time, date: Date } # Coerce given value into given type # Does not coerce json or yaml values def self.coerce(value, type, from_type=nil) return if value.nil? || (value.is_a?(String) && (value !~ /[^[:space:]]/)) 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 # 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. def self.coerce_from_string(value, type) return if value.nil? case type when :string value when :json JSON.load(value) when :yaml YAML.load(value) else self.coerce(value, type, String) end end # 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. def self.coerce_to_string(value, type) return if value.nil? case type when :string value.to_s when :json value.to_json when :yaml value.to_yaml else self.coerce(value, :string, coercion_type(type, value)) end end # Returns the correct coercion type to use for the specified symbol and value def self.coercion_type(symbol, value) if symbol == :boolean value.class else TYPE_MAP[symbol] end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
symmetric-encryption-3.8.2 | lib/symmetric_encryption/coerce.rb |
symmetric-encryption-3.8.1 | lib/symmetric_encryption/coerce.rb |
symmetric-encryption-3.8.0 | lib/symmetric_encryption/coerce.rb |