Module: ROM::Types::Coercible

Defined in:
lib/rom/types.rb

Constant Summary collapse

JSON =
Coercible.JSON
JSONHash =
Coercible.JSONHash
HashJSON =
Coercible.HashJSON

Class Method Summary collapse

Class Method Details

.HashJSON(type: Types::String) ⇒ Dry::Types::Constructor

Define a hash-to-json attribute type

Returns:

  • (Dry::Types::Constructor)


57
58
59
# File 'lib/rom/types.rb', line 57

def Coercible.HashJSON(type: Types::String)
  Types.Constructor(type) { |value| ::JSON.dump(value) }
end

.JSON(symbol_keys: false) ⇒ Dry::Types::Constructor

Define a json type with json-to-hash read type

Returns:

  • (Dry::Types::Constructor)


66
67
68
# File 'lib/rom/types.rb', line 66

def Coercible.JSON(symbol_keys: false)
  self.HashJSON.meta(read: self.JSONHash(symbol_keys: symbol_keys))
end

.JSONHash(symbol_keys: false, type: Types::Hash) ⇒ Dry::Types::Constructor

Define a json-to-hash attribute type

Returns:

  • (Dry::Types::Constructor)


44
45
46
47
48
49
50
# File 'lib/rom/types.rb', line 44

def Coercible.JSONHash(symbol_keys: false, type: Types::Hash)
  Types.Constructor(type) do |value|
    ::JSON.parse(value.to_s, symbolize_names: symbol_keys)
  rescue ::JSON::ParserError
    value
  end
end