Sha256: 1f40ac6684d40eb95ffaf40d0712c3605d6683ef1e6dc309055701a53d8230fa
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 KB
Contents
require 'dry-types' require 'json' module ROM module Types include Dry::Types.module def self.included(other) other.extend(Methods) super end def self.Definition(primitive) Dry::Types::Definition.new(primitive) end def self.Constructor(primitive, &block) Types.Definition(primitive).constructor(&block) end module Methods def ForeignKey(relation, type = Types::Int) type.meta(foreign_key: true, target: relation) end end 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 def Coercible.HashJSON(type: Types::String) Types.Constructor(type) { |value| ::JSON.dump(value) } end def Coercible.JSON(symbol_keys: false) self.HashJSON.meta(read: self.JSONHash(symbol_keys: symbol_keys)) end Coercible::JSON = Coercible.JSON Coercible::JSONHash = Coercible.JSONHash Coercible::HashJSON = Coercible.HashJSON end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-3.3.3 | lib/rom/types.rb |