dry-types 0.9.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.codeclimate.yml +15 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +43 -0
- data/.travis.yml +15 -14
- data/.yardopts +5 -0
- data/CHANGELOG.md +494 -88
- data/CONTRIBUTING.md +29 -0
- data/Gemfile +7 -6
- data/README.md +1 -3
- data/Rakefile +8 -3
- data/benchmarks/hash_schemas.rb +7 -7
- data/dry-types.gemspec +11 -9
- data/lib/dry/types/any.rb +36 -0
- data/lib/dry/types/array/member.rb +29 -4
- data/lib/dry/types/array.rb +6 -4
- data/lib/dry/types/builder.rb +48 -6
- data/lib/dry/types/builder_methods.rb +111 -0
- data/lib/dry/types/coercions/json.rb +3 -0
- data/lib/dry/types/coercions/{form.rb → params.rb} +23 -3
- data/lib/dry/types/coercions.rb +16 -3
- data/lib/dry/types/compat.rb +0 -0
- data/lib/dry/types/compiler.rb +66 -39
- data/lib/dry/types/constrained/coercible.rb +7 -1
- data/lib/dry/types/constrained.rb +42 -3
- data/lib/dry/types/constraints.rb +3 -0
- data/lib/dry/types/constructor.rb +98 -16
- data/lib/dry/types/container.rb +2 -0
- data/lib/dry/types/core.rb +30 -14
- data/lib/dry/types/decorator.rb +31 -5
- data/lib/dry/types/default.rb +34 -8
- data/lib/dry/types/enum.rb +71 -14
- data/lib/dry/types/errors.rb +23 -6
- data/lib/dry/types/extensions/maybe.rb +35 -16
- data/lib/dry/types/fn_container.rb +34 -0
- data/lib/dry/types/hash/constructor.rb +20 -0
- data/lib/dry/types/hash.rb +103 -23
- data/lib/dry/types/inflector.rb +7 -0
- data/lib/dry/types/json.rb +7 -7
- data/lib/dry/types/map.rb +98 -0
- data/lib/dry/types/module.rb +115 -0
- data/lib/dry/types/nominal.rb +119 -0
- data/lib/dry/types/options.rb +29 -7
- data/lib/dry/types/params.rb +53 -0
- data/lib/dry/types/printable.rb +12 -0
- data/lib/dry/types/printer.rb +309 -0
- data/lib/dry/types/result.rb +12 -2
- data/lib/dry/types/safe.rb +27 -1
- data/lib/dry/types/schema/key.rb +130 -0
- data/lib/dry/types/schema.rb +298 -0
- data/lib/dry/types/spec/types.rb +102 -0
- data/lib/dry/types/sum.rb +75 -13
- data/lib/dry/types/type.rb +6 -0
- data/lib/dry/types/version.rb +1 -1
- data/lib/dry/types.rb +104 -38
- data/log/.gitkeep +0 -0
- metadata +81 -50
- data/lib/dry/types/definition.rb +0 -79
- data/lib/dry/types/form.rb +0 -53
- data/lib/dry/types/hash/schema.rb +0 -156
- data/lib/spec/dry/types.rb +0 -56
data/lib/dry/types/sum.rb
CHANGED
|
@@ -3,74 +3,136 @@ require 'dry/types/options'
|
|
|
3
3
|
module Dry
|
|
4
4
|
module Types
|
|
5
5
|
class Sum
|
|
6
|
-
include
|
|
6
|
+
include Type
|
|
7
7
|
include Builder
|
|
8
8
|
include Options
|
|
9
|
+
include Printable
|
|
10
|
+
include Dry::Equalizer(:left, :right, :options, :meta, inspect: false)
|
|
9
11
|
|
|
12
|
+
# @return [Type]
|
|
10
13
|
attr_reader :left
|
|
11
14
|
|
|
15
|
+
# @return [Type]
|
|
12
16
|
attr_reader :right
|
|
13
17
|
|
|
14
18
|
class Constrained < Sum
|
|
19
|
+
# @return [Dry::Logic::Operations::Or]
|
|
15
20
|
def rule
|
|
16
21
|
left.rule | right.rule
|
|
17
22
|
end
|
|
18
23
|
|
|
24
|
+
# @return [true]
|
|
19
25
|
def constrained?
|
|
20
26
|
true
|
|
21
27
|
end
|
|
28
|
+
|
|
29
|
+
# @param [Object] input
|
|
30
|
+
# @return [Object]
|
|
31
|
+
# @raise [ConstraintError] if given +input+ not passing {#try}
|
|
32
|
+
def call(input)
|
|
33
|
+
try(input) { |result|
|
|
34
|
+
raise ConstraintError.new(result, input)
|
|
35
|
+
}.input
|
|
36
|
+
end
|
|
37
|
+
alias_method :[], :call
|
|
22
38
|
end
|
|
23
39
|
|
|
40
|
+
# @param [Type] left
|
|
41
|
+
# @param [Type] right
|
|
42
|
+
# @param [Hash] options
|
|
24
43
|
def initialize(left, right, options = {})
|
|
25
44
|
super
|
|
26
45
|
@left, @right = left, right
|
|
27
46
|
freeze
|
|
28
47
|
end
|
|
29
48
|
|
|
49
|
+
# @return [String]
|
|
30
50
|
def name
|
|
31
51
|
[left, right].map(&:name).join(' | ')
|
|
32
52
|
end
|
|
33
53
|
|
|
54
|
+
# @return [false]
|
|
34
55
|
def default?
|
|
35
56
|
false
|
|
36
57
|
end
|
|
37
58
|
|
|
38
|
-
|
|
59
|
+
# @return [false]
|
|
60
|
+
def constrained?
|
|
39
61
|
false
|
|
40
62
|
end
|
|
41
63
|
|
|
42
|
-
|
|
43
|
-
|
|
64
|
+
# @return [Boolean]
|
|
65
|
+
def optional?
|
|
66
|
+
primitive?(nil)
|
|
44
67
|
end
|
|
45
68
|
|
|
69
|
+
# @param [Object] input
|
|
70
|
+
# @return [Object]
|
|
46
71
|
def call(input)
|
|
47
|
-
try(input)
|
|
48
|
-
raise ConstraintError.new(result, input)
|
|
49
|
-
end.input
|
|
72
|
+
try(input).input
|
|
50
73
|
end
|
|
51
74
|
alias_method :[], :call
|
|
52
75
|
|
|
53
76
|
def try(input, &block)
|
|
54
|
-
|
|
55
|
-
right.try(input)
|
|
77
|
+
left.try(input) do
|
|
78
|
+
right.try(input) do |failure|
|
|
79
|
+
if block_given?
|
|
80
|
+
yield(failure)
|
|
81
|
+
else
|
|
82
|
+
failure
|
|
83
|
+
end
|
|
84
|
+
end
|
|
56
85
|
end
|
|
86
|
+
end
|
|
57
87
|
|
|
58
|
-
|
|
88
|
+
def success(input)
|
|
89
|
+
if left.valid?(input)
|
|
90
|
+
left.success(input)
|
|
91
|
+
elsif right.valid?(input)
|
|
92
|
+
right.success(input)
|
|
93
|
+
else
|
|
94
|
+
raise ArgumentError, "Invalid success value '#{input}' for #{inspect}"
|
|
95
|
+
end
|
|
96
|
+
end
|
|
59
97
|
|
|
60
|
-
|
|
61
|
-
|
|
98
|
+
def failure(input, _error = nil)
|
|
99
|
+
if !left.valid?(input)
|
|
100
|
+
left.failure(input, left.try(input).error)
|
|
62
101
|
else
|
|
63
|
-
|
|
102
|
+
right.failure(input, right.try(input).error)
|
|
64
103
|
end
|
|
65
104
|
end
|
|
66
105
|
|
|
106
|
+
# @param [Object] value
|
|
107
|
+
# @return [Boolean]
|
|
67
108
|
def primitive?(value)
|
|
68
109
|
left.primitive?(value) || right.primitive?(value)
|
|
69
110
|
end
|
|
70
111
|
|
|
112
|
+
# @param [Object] value
|
|
113
|
+
# @return [Boolean]
|
|
71
114
|
def valid?(value)
|
|
72
115
|
left.valid?(value) || right.valid?(value)
|
|
73
116
|
end
|
|
117
|
+
alias_method :===, :valid?
|
|
118
|
+
|
|
119
|
+
# @api public
|
|
120
|
+
#
|
|
121
|
+
# @see Nominal#to_ast
|
|
122
|
+
def to_ast(meta: true)
|
|
123
|
+
[:sum, [left.to_ast(meta: meta), right.to_ast(meta: meta), meta ? self.meta : EMPTY_HASH]]
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# @param [Hash] options
|
|
127
|
+
# @return [Constrained,Sum]
|
|
128
|
+
# @see Builder#constrained
|
|
129
|
+
def constrained(options)
|
|
130
|
+
if optional?
|
|
131
|
+
right.constrained(options).optional
|
|
132
|
+
else
|
|
133
|
+
super
|
|
134
|
+
end
|
|
135
|
+
end
|
|
74
136
|
end
|
|
75
137
|
end
|
|
76
138
|
end
|
data/lib/dry/types/version.rb
CHANGED
data/lib/dry/types.rb
CHANGED
|
@@ -2,56 +2,68 @@ require 'bigdecimal'
|
|
|
2
2
|
require 'date'
|
|
3
3
|
require 'set'
|
|
4
4
|
|
|
5
|
-
require 'inflecto'
|
|
6
5
|
require 'concurrent'
|
|
7
6
|
|
|
8
7
|
require 'dry-container'
|
|
9
8
|
require 'dry-equalizer'
|
|
10
9
|
require 'dry/core/extensions'
|
|
10
|
+
require 'dry/core/constants'
|
|
11
|
+
require 'dry/core/class_attributes'
|
|
11
12
|
|
|
12
13
|
require 'dry/types/version'
|
|
13
14
|
require 'dry/types/container'
|
|
14
|
-
require 'dry/types/
|
|
15
|
+
require 'dry/types/inflector'
|
|
16
|
+
require 'dry/types/type'
|
|
17
|
+
require 'dry/types/printable'
|
|
18
|
+
require 'dry/types/nominal'
|
|
15
19
|
require 'dry/types/constructor'
|
|
20
|
+
require 'dry/types/module'
|
|
16
21
|
|
|
17
22
|
require 'dry/types/errors'
|
|
18
23
|
|
|
19
24
|
module Dry
|
|
20
25
|
module Types
|
|
21
|
-
extend Dry::Configurable
|
|
22
26
|
extend Dry::Core::Extensions
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
extend Dry::Core::ClassAttributes
|
|
28
|
+
extend Dry::Core::Deprecations[:'dry-types']
|
|
29
|
+
include Dry::Core::Constants
|
|
25
30
|
|
|
26
31
|
TYPE_SPEC_REGEX = %r[(.+)<(.+)>].freeze
|
|
27
32
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
namespace
|
|
33
|
+
# @see Dry.Types
|
|
34
|
+
def self.module(*namespaces, default: :nominal, **aliases)
|
|
35
|
+
Module.new(container, *namespaces, default: default, **aliases)
|
|
32
36
|
end
|
|
37
|
+
deprecate_class_method :module, message: <<~DEPRECATION
|
|
38
|
+
Use Dry.Types() instead. Beware, it exports strict types by default, for old behavior use Dry.Types(default: :nominal). See more options in the changelog
|
|
39
|
+
DEPRECATION
|
|
33
40
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
' to built-in types'
|
|
38
|
-
|
|
39
|
-
define_constants(config.namespace, type_keys)
|
|
41
|
+
# @api private
|
|
42
|
+
def self.included(*)
|
|
43
|
+
raise RuntimeError, "Import Dry.Types, not Dry::Types"
|
|
40
44
|
end
|
|
41
45
|
|
|
46
|
+
# @return [Container{String => Nominal}]
|
|
42
47
|
def self.container
|
|
43
48
|
@container ||= Container.new
|
|
44
49
|
end
|
|
45
50
|
|
|
46
|
-
|
|
47
|
-
|
|
51
|
+
# @api private
|
|
52
|
+
def self.registered?(class_or_identifier)
|
|
53
|
+
container.key?(identifier(class_or_identifier))
|
|
48
54
|
end
|
|
49
55
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
# @param [String] name
|
|
57
|
+
# @param [Type] type
|
|
58
|
+
# @param [#call,nil] block
|
|
59
|
+
# @return [Container{String => Nominal}]
|
|
60
|
+
# @api private
|
|
61
|
+
def self.register(name, type = nil, &block)
|
|
62
|
+
container.register(name, type || block.call)
|
|
53
63
|
end
|
|
54
64
|
|
|
65
|
+
# @param [String,Class] name
|
|
66
|
+
# @return [Type,Class]
|
|
55
67
|
def self.[](name)
|
|
56
68
|
type_map.fetch_or_store(name) do
|
|
57
69
|
case name
|
|
@@ -60,7 +72,7 @@ module Dry
|
|
|
60
72
|
|
|
61
73
|
if result
|
|
62
74
|
type_id, member_id = result[1..2]
|
|
63
|
-
container[type_id].
|
|
75
|
+
container[type_id].of(self[member_id])
|
|
64
76
|
else
|
|
65
77
|
container[name]
|
|
66
78
|
end
|
|
@@ -76,34 +88,88 @@ module Dry
|
|
|
76
88
|
end
|
|
77
89
|
end
|
|
78
90
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
parts = id.split('.')
|
|
82
|
-
[Inflecto.camelize(parts.pop), parts.map(&Inflecto.method(:camelize))]
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
names.map do |(klass, parts)|
|
|
86
|
-
mod = parts.reduce(namespace) do |a, e|
|
|
87
|
-
a.constants.include?(e.to_sym) ? a.const_get(e) : a.const_set(e, Module.new)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
mod.const_set(klass, self[identifier((parts + [klass]).join('::'))])
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
91
|
+
# @param [#to_s] klass
|
|
92
|
+
# @return [String]
|
|
94
93
|
def self.identifier(klass)
|
|
95
|
-
|
|
94
|
+
Inflector.underscore(klass).tr('/', '.')
|
|
96
95
|
end
|
|
97
96
|
|
|
97
|
+
# @return [Concurrent::Map]
|
|
98
98
|
def self.type_map
|
|
99
99
|
@type_map ||= Concurrent::Map.new
|
|
100
100
|
end
|
|
101
101
|
|
|
102
|
+
# List of type keys defined in {Dry::Types.container}
|
|
103
|
+
# @return [<String>]
|
|
102
104
|
def self.type_keys
|
|
103
|
-
container.
|
|
105
|
+
container.keys
|
|
104
106
|
end
|
|
107
|
+
|
|
108
|
+
# @api private
|
|
109
|
+
def self.const_missing(const)
|
|
110
|
+
underscored = Inflector.underscore(const)
|
|
111
|
+
|
|
112
|
+
if container.keys.any? { |key| key.split('.')[0] == underscored }
|
|
113
|
+
raise NameError,
|
|
114
|
+
'dry-types does not define constants for default types. '\
|
|
115
|
+
'You can access the predefined types with [], e.g. Dry::Types["strict.integer"] '\
|
|
116
|
+
'or generate a module with types using Dry::Types.module'
|
|
117
|
+
else
|
|
118
|
+
super
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Export registered types as a module with constants
|
|
124
|
+
#
|
|
125
|
+
# @example no options
|
|
126
|
+
#
|
|
127
|
+
# module Types
|
|
128
|
+
# # imports all types as constants, uses modules for namespaces
|
|
129
|
+
# include Dry::Types.module
|
|
130
|
+
# end
|
|
131
|
+
# # nominal types are exported by default
|
|
132
|
+
# Types::Integer
|
|
133
|
+
# # => #<Dry::Types[Nominal<Integer>]>
|
|
134
|
+
# Types::Strict::Integer
|
|
135
|
+
# # => #<Dry::Types[Constrained<Nominal<Integer> rule=[type?(Integer)]>]>
|
|
136
|
+
#
|
|
137
|
+
# @example changing default types
|
|
138
|
+
#
|
|
139
|
+
# module Types
|
|
140
|
+
# include Dry::Types(default: :strict)
|
|
141
|
+
# end
|
|
142
|
+
# Types::Integer
|
|
143
|
+
# # => #<Dry::Types[Constrained<Nominal<Integer> rule=[type?(Integer)]>]>
|
|
144
|
+
#
|
|
145
|
+
# @example cherry-picking namespaces
|
|
146
|
+
#
|
|
147
|
+
# module Types
|
|
148
|
+
# include Dry::Types.module(:strict, :coercible)
|
|
149
|
+
# end
|
|
150
|
+
# # cherry-picking discards default types,
|
|
151
|
+
# # provide the :default option along with the list of
|
|
152
|
+
# # namespaces if you want the to be exported
|
|
153
|
+
# Types.constants # => [:Coercible, :Strict]
|
|
154
|
+
#
|
|
155
|
+
# @example custom names
|
|
156
|
+
# module Types
|
|
157
|
+
# include Dry::Types.module(coercible: :Kernel)
|
|
158
|
+
# end
|
|
159
|
+
# Types::Kernel::Integer
|
|
160
|
+
# # => #<Dry::Types[Constructor<Nominal<Integer> fn=Kernel.Integer>]>
|
|
161
|
+
#
|
|
162
|
+
# @param [Array<Symbol>] namespaces List of type namespaces to export
|
|
163
|
+
# @param [Symbol] default Default namespace to export
|
|
164
|
+
# @param [Hash{Symbol => Symbol}] aliases Optional renamings, like strict: :Draconian
|
|
165
|
+
# @return [Dry::Types::Module]
|
|
166
|
+
#
|
|
167
|
+
# @see Dry::types::Module
|
|
168
|
+
def self.Types(*namespaces, default: Types::Undefined, **aliases)
|
|
169
|
+
Types::Module.new(Types.container, *namespaces, default: default, **aliases)
|
|
105
170
|
end
|
|
106
171
|
end
|
|
107
172
|
|
|
108
173
|
require 'dry/types/core' # load built-in types
|
|
109
174
|
require 'dry/types/extensions'
|
|
175
|
+
require 'dry/types/printer'
|
data/log/.gitkeep
ADDED
|
File without changes
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dry-types
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.15.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Piotr Solnica
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2019-03-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -30,110 +30,108 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0.
|
|
34
|
-
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0.1'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: dry-container
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
33
|
+
version: '0.4'
|
|
34
|
+
- - ">="
|
|
46
35
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
36
|
+
version: 0.4.4
|
|
48
37
|
type: :runtime
|
|
49
38
|
prerelease: false
|
|
50
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
40
|
requirements:
|
|
52
41
|
- - "~>"
|
|
53
42
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0.
|
|
43
|
+
version: '0.4'
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 0.4.4
|
|
55
47
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: dry-
|
|
48
|
+
name: dry-inflector
|
|
57
49
|
requirement: !ruby/object:Gem::Requirement
|
|
58
50
|
requirements:
|
|
59
51
|
- - "~>"
|
|
60
52
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0.
|
|
53
|
+
version: '0.1'
|
|
54
|
+
- - ">="
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: 0.1.2
|
|
62
57
|
type: :runtime
|
|
63
58
|
prerelease: false
|
|
64
59
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
60
|
requirements:
|
|
66
61
|
- - "~>"
|
|
67
62
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0.
|
|
63
|
+
version: '0.1'
|
|
64
|
+
- - ">="
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: 0.1.2
|
|
69
67
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: dry-
|
|
68
|
+
name: dry-container
|
|
71
69
|
requirement: !ruby/object:Gem::Requirement
|
|
72
70
|
requirements:
|
|
73
71
|
- - "~>"
|
|
74
72
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0.
|
|
73
|
+
version: '0.3'
|
|
76
74
|
type: :runtime
|
|
77
75
|
prerelease: false
|
|
78
76
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
77
|
requirements:
|
|
80
78
|
- - "~>"
|
|
81
79
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0.
|
|
80
|
+
version: '0.3'
|
|
83
81
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: dry-
|
|
82
|
+
name: dry-equalizer
|
|
85
83
|
requirement: !ruby/object:Gem::Requirement
|
|
86
84
|
requirements:
|
|
87
85
|
- - "~>"
|
|
88
86
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0.
|
|
87
|
+
version: '0.2'
|
|
90
88
|
- - ">="
|
|
91
89
|
- !ruby/object:Gem::Version
|
|
92
|
-
version: 0.
|
|
90
|
+
version: 0.2.2
|
|
93
91
|
type: :runtime
|
|
94
92
|
prerelease: false
|
|
95
93
|
version_requirements: !ruby/object:Gem::Requirement
|
|
96
94
|
requirements:
|
|
97
95
|
- - "~>"
|
|
98
96
|
- !ruby/object:Gem::Version
|
|
99
|
-
version: '0.
|
|
97
|
+
version: '0.2'
|
|
100
98
|
- - ">="
|
|
101
99
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: 0.
|
|
100
|
+
version: 0.2.2
|
|
103
101
|
- !ruby/object:Gem::Dependency
|
|
104
|
-
name:
|
|
102
|
+
name: dry-logic
|
|
105
103
|
requirement: !ruby/object:Gem::Requirement
|
|
106
104
|
requirements:
|
|
107
|
-
- - "~>"
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: 0.0.0
|
|
110
105
|
- - ">="
|
|
111
106
|
- !ruby/object:Gem::Version
|
|
112
|
-
version: 0.
|
|
107
|
+
version: '0.5'
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0.5'
|
|
113
111
|
type: :runtime
|
|
114
112
|
prerelease: false
|
|
115
113
|
version_requirements: !ruby/object:Gem::Requirement
|
|
116
114
|
requirements:
|
|
117
|
-
- - "~>"
|
|
118
|
-
- !ruby/object:Gem::Version
|
|
119
|
-
version: 0.0.0
|
|
120
115
|
- - ">="
|
|
121
116
|
- !ruby/object:Gem::Version
|
|
122
|
-
version: 0.
|
|
117
|
+
version: '0.5'
|
|
118
|
+
- - "~>"
|
|
119
|
+
- !ruby/object:Gem::Version
|
|
120
|
+
version: '0.5'
|
|
123
121
|
- !ruby/object:Gem::Dependency
|
|
124
122
|
name: bundler
|
|
125
123
|
requirement: !ruby/object:Gem::Requirement
|
|
126
124
|
requirements:
|
|
127
|
-
- - "
|
|
125
|
+
- - ">="
|
|
128
126
|
- !ruby/object:Gem::Version
|
|
129
|
-
version: '
|
|
127
|
+
version: '0'
|
|
130
128
|
type: :development
|
|
131
129
|
prerelease: false
|
|
132
130
|
version_requirements: !ruby/object:Gem::Requirement
|
|
133
131
|
requirements:
|
|
134
|
-
- - "
|
|
132
|
+
- - ">="
|
|
135
133
|
- !ruby/object:Gem::Version
|
|
136
|
-
version: '
|
|
134
|
+
version: '0'
|
|
137
135
|
- !ruby/object:Gem::Dependency
|
|
138
136
|
name: rake
|
|
139
137
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -176,6 +174,20 @@ dependencies:
|
|
|
176
174
|
- - "~>"
|
|
177
175
|
- !ruby/object:Gem::Version
|
|
178
176
|
version: '0.2'
|
|
177
|
+
- !ruby/object:Gem::Dependency
|
|
178
|
+
name: yard
|
|
179
|
+
requirement: !ruby/object:Gem::Requirement
|
|
180
|
+
requirements:
|
|
181
|
+
- - "~>"
|
|
182
|
+
- !ruby/object:Gem::Version
|
|
183
|
+
version: 0.9.5
|
|
184
|
+
type: :development
|
|
185
|
+
prerelease: false
|
|
186
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
187
|
+
requirements:
|
|
188
|
+
- - "~>"
|
|
189
|
+
- !ruby/object:Gem::Version
|
|
190
|
+
version: 0.9.5
|
|
179
191
|
description: Type system for Ruby supporting coercions, constraints and complex types
|
|
180
192
|
like structs, value objects, enums etc.
|
|
181
193
|
email:
|
|
@@ -184,10 +196,14 @@ executables: []
|
|
|
184
196
|
extensions: []
|
|
185
197
|
extra_rdoc_files: []
|
|
186
198
|
files:
|
|
199
|
+
- ".codeclimate.yml"
|
|
187
200
|
- ".gitignore"
|
|
188
201
|
- ".rspec"
|
|
202
|
+
- ".rubocop.yml"
|
|
189
203
|
- ".travis.yml"
|
|
204
|
+
- ".yardopts"
|
|
190
205
|
- CHANGELOG.md
|
|
206
|
+
- CONTRIBUTING.md
|
|
191
207
|
- Gemfile
|
|
192
208
|
- LICENSE
|
|
193
209
|
- README.md
|
|
@@ -196,12 +212,15 @@ files:
|
|
|
196
212
|
- dry-types.gemspec
|
|
197
213
|
- lib/dry-types.rb
|
|
198
214
|
- lib/dry/types.rb
|
|
215
|
+
- lib/dry/types/any.rb
|
|
199
216
|
- lib/dry/types/array.rb
|
|
200
217
|
- lib/dry/types/array/member.rb
|
|
201
218
|
- lib/dry/types/builder.rb
|
|
219
|
+
- lib/dry/types/builder_methods.rb
|
|
202
220
|
- lib/dry/types/coercions.rb
|
|
203
|
-
- lib/dry/types/coercions/form.rb
|
|
204
221
|
- lib/dry/types/coercions/json.rb
|
|
222
|
+
- lib/dry/types/coercions/params.rb
|
|
223
|
+
- lib/dry/types/compat.rb
|
|
205
224
|
- lib/dry/types/compiler.rb
|
|
206
225
|
- lib/dry/types/constrained.rb
|
|
207
226
|
- lib/dry/types/constrained/coercible.rb
|
|
@@ -211,26 +230,39 @@ files:
|
|
|
211
230
|
- lib/dry/types/core.rb
|
|
212
231
|
- lib/dry/types/decorator.rb
|
|
213
232
|
- lib/dry/types/default.rb
|
|
214
|
-
- lib/dry/types/definition.rb
|
|
215
233
|
- lib/dry/types/enum.rb
|
|
216
234
|
- lib/dry/types/errors.rb
|
|
217
235
|
- lib/dry/types/extensions.rb
|
|
218
236
|
- lib/dry/types/extensions/maybe.rb
|
|
219
|
-
- lib/dry/types/
|
|
237
|
+
- lib/dry/types/fn_container.rb
|
|
220
238
|
- lib/dry/types/hash.rb
|
|
221
|
-
- lib/dry/types/hash/
|
|
239
|
+
- lib/dry/types/hash/constructor.rb
|
|
240
|
+
- lib/dry/types/inflector.rb
|
|
222
241
|
- lib/dry/types/json.rb
|
|
242
|
+
- lib/dry/types/map.rb
|
|
243
|
+
- lib/dry/types/module.rb
|
|
244
|
+
- lib/dry/types/nominal.rb
|
|
223
245
|
- lib/dry/types/options.rb
|
|
246
|
+
- lib/dry/types/params.rb
|
|
247
|
+
- lib/dry/types/printable.rb
|
|
248
|
+
- lib/dry/types/printer.rb
|
|
224
249
|
- lib/dry/types/result.rb
|
|
225
250
|
- lib/dry/types/safe.rb
|
|
251
|
+
- lib/dry/types/schema.rb
|
|
252
|
+
- lib/dry/types/schema/key.rb
|
|
253
|
+
- lib/dry/types/spec/types.rb
|
|
226
254
|
- lib/dry/types/sum.rb
|
|
255
|
+
- lib/dry/types/type.rb
|
|
227
256
|
- lib/dry/types/version.rb
|
|
228
|
-
-
|
|
229
|
-
homepage: https://github.com/
|
|
257
|
+
- log/.gitkeep
|
|
258
|
+
homepage: https://github.com/dry-rb/dry-types
|
|
230
259
|
licenses:
|
|
231
260
|
- MIT
|
|
232
261
|
metadata:
|
|
233
262
|
allowed_push_host: https://rubygems.org
|
|
263
|
+
changelog_uri: https://github.com/dry-rb/dry-types/blob/master/CHANGELOG.md
|
|
264
|
+
source_code_uri: https://github.com/dry-rb/dry-types
|
|
265
|
+
bug_tracker_uri: https://github.com/dry-rb/dry-types/issues
|
|
234
266
|
post_install_message:
|
|
235
267
|
rdoc_options: []
|
|
236
268
|
require_paths:
|
|
@@ -239,15 +271,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
239
271
|
requirements:
|
|
240
272
|
- - ">="
|
|
241
273
|
- !ruby/object:Gem::Version
|
|
242
|
-
version: 2.
|
|
274
|
+
version: 2.3.0
|
|
243
275
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
244
276
|
requirements:
|
|
245
277
|
- - ">="
|
|
246
278
|
- !ruby/object:Gem::Version
|
|
247
279
|
version: '0'
|
|
248
280
|
requirements: []
|
|
249
|
-
|
|
250
|
-
rubygems_version: 2.5.1
|
|
281
|
+
rubygems_version: 3.0.3
|
|
251
282
|
signing_key:
|
|
252
283
|
specification_version: 4
|
|
253
284
|
summary: Type system for Ruby supporting coercions, constraints and complex types
|