dry-types 1.2.2 → 1.5.1
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 +4 -4
- data/CHANGELOG.md +405 -225
- data/LICENSE +1 -1
- data/README.md +14 -12
- data/dry-types.gemspec +26 -31
- data/lib/dry-types.rb +1 -1
- data/lib/dry/types.rb +55 -40
- data/lib/dry/types/any.rb +2 -2
- data/lib/dry/types/array.rb +2 -2
- data/lib/dry/types/array/constructor.rb +1 -1
- data/lib/dry/types/array/member.rb +1 -1
- data/lib/dry/types/builder.rb +70 -18
- data/lib/dry/types/builder_methods.rb +1 -2
- data/lib/dry/types/coercions.rb +0 -17
- data/lib/dry/types/coercions/json.rb +22 -5
- data/lib/dry/types/coercions/params.rb +20 -3
- data/lib/dry/types/compiler.rb +10 -10
- data/lib/dry/types/constrained.rb +6 -9
- data/lib/dry/types/constraints.rb +3 -3
- data/lib/dry/types/constructor.rb +40 -6
- data/lib/dry/types/constructor/function.rb +48 -32
- data/lib/dry/types/constructor/wrapper.rb +94 -0
- data/lib/dry/types/container.rb +1 -1
- data/lib/dry/types/core.rb +15 -13
- data/lib/dry/types/decorator.rb +2 -9
- data/lib/dry/types/default.rb +14 -1
- data/lib/dry/types/enum.rb +4 -3
- data/lib/dry/types/errors.rb +1 -1
- data/lib/dry/types/extensions.rb +2 -2
- data/lib/dry/types/extensions/maybe.rb +18 -17
- data/lib/dry/types/extensions/monads.rb +1 -1
- data/lib/dry/types/fn_container.rb +1 -1
- data/lib/dry/types/hash.rb +9 -15
- data/lib/dry/types/hash/constructor.rb +1 -1
- data/lib/dry/types/inflector.rb +1 -1
- data/lib/dry/types/json.rb +15 -15
- data/lib/dry/types/lax.rb +3 -6
- data/lib/dry/types/map.rb +2 -2
- data/lib/dry/types/meta.rb +3 -3
- data/lib/dry/types/module.rb +6 -6
- data/lib/dry/types/nominal.rb +11 -11
- data/lib/dry/types/params.rb +31 -28
- data/lib/dry/types/predicate_inferrer.rb +52 -11
- data/lib/dry/types/predicate_registry.rb +1 -1
- data/lib/dry/types/primitive_inferrer.rb +1 -1
- data/lib/dry/types/printer.rb +25 -25
- data/lib/dry/types/result.rb +3 -3
- data/lib/dry/types/schema.rb +26 -13
- data/lib/dry/types/schema/key.rb +15 -6
- data/lib/dry/types/spec/types.rb +65 -42
- data/lib/dry/types/sum.rb +6 -5
- data/lib/dry/types/type.rb +1 -1
- data/lib/dry/types/version.rb +1 -1
- metadata +27 -78
- data/.codeclimate.yml +0 -12
- data/.github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md +0 -10
- data/.github/ISSUE_TEMPLATE/---bug-report.md +0 -30
- data/.github/ISSUE_TEMPLATE/---feature-request.md +0 -18
- data/.github/workflows/custom_ci.yml +0 -76
- data/.github/workflows/docsite.yml +0 -34
- data/.github/workflows/sync_configs.yml +0 -34
- data/.gitignore +0 -11
- data/.rspec +0 -4
- data/.rubocop.yml +0 -92
- data/.yardopts +0 -9
- data/CODE_OF_CONDUCT.md +0 -13
- data/CONTRIBUTING.md +0 -29
- data/Gemfile +0 -34
- data/Rakefile +0 -22
- data/benchmarks/hash_schemas.rb +0 -55
- data/benchmarks/lax_schema.rb +0 -15
- data/benchmarks/profile_invalid_input.rb +0 -15
- data/benchmarks/profile_lax_schema_valid.rb +0 -16
- data/benchmarks/profile_valid_input.rb +0 -15
- data/benchmarks/schema_valid_vs_invalid.rb +0 -21
- data/benchmarks/setup.rb +0 -17
- data/docsite/source/array-with-member.html.md +0 -13
- data/docsite/source/built-in-types.html.md +0 -116
- data/docsite/source/constraints.html.md +0 -31
- data/docsite/source/custom-types.html.md +0 -93
- data/docsite/source/default-values.html.md +0 -91
- data/docsite/source/enum.html.md +0 -69
- data/docsite/source/extensions.html.md +0 -15
- data/docsite/source/extensions/maybe.html.md +0 -57
- data/docsite/source/extensions/monads.html.md +0 -61
- data/docsite/source/getting-started.html.md +0 -57
- data/docsite/source/hash-schemas.html.md +0 -169
- data/docsite/source/index.html.md +0 -156
- data/docsite/source/map.html.md +0 -17
- data/docsite/source/optional-values.html.md +0 -35
- data/docsite/source/sum.html.md +0 -21
data/docsite/source/map.html.md
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Map
|
3
|
-
layout: gem-single
|
4
|
-
name: dry-types
|
5
|
-
---
|
6
|
-
|
7
|
-
`Map` describes a homogeneous hashmap. This means only types of keys and values are known. You can simply imagine a map input as a list of key-value pairs.
|
8
|
-
|
9
|
-
```ruby
|
10
|
-
int_float_hash = Types::Hash.map(Types::Integer, Types::Float)
|
11
|
-
int_float_hash[100 => 300.0, 42 => 70.0]
|
12
|
-
# => {100=>300.0, 42=>70.0}
|
13
|
-
|
14
|
-
# Only accepts mappings of integers to floats
|
15
|
-
int_float_hash[name: 'Jane']
|
16
|
-
# => Dry::Types::MapError: input key :name is invalid: type?(Integer, :name)
|
17
|
-
```
|
@@ -1,35 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Type Attributes
|
3
|
-
layout: gem-single
|
4
|
-
name: dry-types
|
5
|
-
---
|
6
|
-
|
7
|
-
Types themselves have optional attributes you can apply to get further functionality.
|
8
|
-
|
9
|
-
### Append `.optional` to a _Type_ to allow `nil`
|
10
|
-
|
11
|
-
By default, nil values raise an error:
|
12
|
-
|
13
|
-
``` ruby
|
14
|
-
Types::Strict::String[nil]
|
15
|
-
# => raises Dry::Types::ConstraintError
|
16
|
-
```
|
17
|
-
|
18
|
-
Add `.optional` and `nil` values become valid:
|
19
|
-
|
20
|
-
```ruby
|
21
|
-
optional_string = Types::Strict::String.optional
|
22
|
-
|
23
|
-
optional_string[nil]
|
24
|
-
# => nil
|
25
|
-
optional_string['something']
|
26
|
-
# => "something"
|
27
|
-
optional_string[123]
|
28
|
-
# raises Dry::Types::ConstraintError
|
29
|
-
```
|
30
|
-
|
31
|
-
`Types::String.optional` is just syntactic sugar for `Types::Strict::Nil | Types::Strict::String`.
|
32
|
-
|
33
|
-
### Handle optional values using Monads
|
34
|
-
|
35
|
-
See [Maybe](docs::extensions/maybe) extension for another approach to handling optional values by returning a [_Monad_](/gems/dry-monads/) object.
|
data/docsite/source/sum.html.md
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Sum
|
3
|
-
layout: gem-single
|
4
|
-
name: dry-types
|
5
|
-
order: 7
|
6
|
-
---
|
7
|
-
|
8
|
-
You can specify sum types using `|` operator, it is an explicit way of defining what the valid types of a value are.
|
9
|
-
|
10
|
-
For example `dry-types` defines the `Bool` type which is a sum consisting of the `True` and `False` types, expressed as `Types::True | Types::False`.
|
11
|
-
|
12
|
-
Another common case is defining that something can be either `nil` or something else:
|
13
|
-
|
14
|
-
``` ruby
|
15
|
-
nil_or_string = Types::Nil | Types::String
|
16
|
-
|
17
|
-
nil_or_string[nil] # => nil
|
18
|
-
nil_or_string["hello"] # => "hello"
|
19
|
-
|
20
|
-
nil_or_string[123] # raises Dry::Types::ConstraintError
|
21
|
-
```
|