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)

59
60
61
# File 'lib/rom/types.rb', line 59

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)

68
69
70
# File 'lib/rom/types.rb', line 68

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
51
52
# File 'lib/rom/types.rb', line 44

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