dry-validation 0.7.4 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +9 -6
  4. data/CHANGELOG.md +58 -0
  5. data/Gemfile +3 -3
  6. data/benchmarks/benchmark_form_invalid.rb +64 -0
  7. data/benchmarks/benchmark_form_valid.rb +64 -0
  8. data/benchmarks/profile_schema_call_invalid.rb +20 -0
  9. data/benchmarks/profile_schema_call_valid.rb +20 -0
  10. data/benchmarks/profile_schema_definition.rb +14 -0
  11. data/benchmarks/profile_schema_messages_invalid.rb +20 -0
  12. data/benchmarks/suite.rb +5 -0
  13. data/config/errors.yml +12 -5
  14. data/dry-validation.gemspec +2 -2
  15. data/examples/basic.rb +2 -2
  16. data/examples/form.rb +2 -2
  17. data/examples/json.rb +2 -2
  18. data/examples/nested.rb +6 -6
  19. data/lib/dry/validation.rb +22 -3
  20. data/lib/dry/validation/deprecations.rb +23 -0
  21. data/lib/dry/validation/error_compiler.rb +31 -11
  22. data/lib/dry/validation/error_compiler/input.rb +44 -57
  23. data/lib/dry/validation/hint_compiler.rb +15 -7
  24. data/lib/dry/validation/input_processor_compiler.rb +13 -6
  25. data/lib/dry/validation/input_processor_compiler/form.rb +2 -0
  26. data/lib/dry/validation/input_processor_compiler/sanitizer.rb +1 -1
  27. data/lib/dry/validation/messages/abstract.rb +9 -1
  28. data/lib/dry/validation/predicate_registry.rb +101 -0
  29. data/lib/dry/validation/result.rb +8 -1
  30. data/lib/dry/validation/schema.rb +110 -44
  31. data/lib/dry/validation/schema/check.rb +4 -2
  32. data/lib/dry/validation/schema/deprecated.rb +31 -0
  33. data/lib/dry/validation/schema/dsl.rb +18 -11
  34. data/lib/dry/validation/schema/form.rb +1 -0
  35. data/lib/dry/validation/schema/json.rb +1 -0
  36. data/lib/dry/validation/schema/key.rb +23 -10
  37. data/lib/dry/validation/schema/rule.rb +81 -20
  38. data/lib/dry/validation/schema/value.rb +110 -25
  39. data/lib/dry/validation/version.rb +1 -1
  40. data/spec/fixtures/locales/en.yml +1 -0
  41. data/spec/fixtures/locales/pl.yml +1 -1
  42. data/spec/integration/custom_error_messages_spec.rb +2 -2
  43. data/spec/integration/custom_predicates_spec.rb +98 -15
  44. data/spec/integration/error_compiler_spec.rb +111 -96
  45. data/spec/integration/form/predicates/array_spec.rb +243 -0
  46. data/spec/integration/form/predicates/empty_spec.rb +263 -0
  47. data/spec/integration/form/predicates/eql_spec.rb +327 -0
  48. data/spec/integration/form/predicates/even_spec.rb +455 -0
  49. data/spec/integration/form/predicates/excluded_from_spec.rb +455 -0
  50. data/spec/integration/form/predicates/excludes_spec.rb +391 -0
  51. data/spec/integration/form/predicates/false_spec.rb +455 -0
  52. data/spec/integration/form/predicates/filled_spec.rb +467 -0
  53. data/spec/integration/form/predicates/format_spec.rb +454 -0
  54. data/spec/integration/form/predicates/gt_spec.rb +519 -0
  55. data/spec/integration/form/predicates/gteq_spec.rb +519 -0
  56. data/spec/integration/form/predicates/included_in_spec.rb +455 -0
  57. data/spec/integration/form/predicates/includes_spec.rb +391 -0
  58. data/spec/integration/form/predicates/key_spec.rb +75 -0
  59. data/spec/integration/form/predicates/lt_spec.rb +519 -0
  60. data/spec/integration/form/predicates/lteq_spec.rb +519 -0
  61. data/spec/integration/form/predicates/max_size_spec.rb +391 -0
  62. data/spec/integration/form/predicates/min_size_spec.rb +391 -0
  63. data/spec/integration/form/predicates/none_spec.rb +265 -0
  64. data/spec/integration/form/predicates/not_eql_spec.rb +327 -0
  65. data/spec/integration/form/predicates/odd_spec.rb +455 -0
  66. data/spec/integration/form/predicates/size/fixed_spec.rb +399 -0
  67. data/spec/integration/form/predicates/size/range_spec.rb +398 -0
  68. data/spec/integration/form/predicates/true_spec.rb +455 -0
  69. data/spec/integration/form/predicates/type_spec.rb +391 -0
  70. data/spec/integration/hints_spec.rb +90 -4
  71. data/spec/integration/injecting_rules_spec.rb +2 -2
  72. data/spec/integration/localized_error_messages_spec.rb +2 -2
  73. data/spec/integration/messages/i18n_spec.rb +3 -3
  74. data/spec/integration/optional_keys_spec.rb +3 -3
  75. data/spec/integration/schema/array_schema_spec.rb +49 -13
  76. data/spec/integration/schema/check_rules_spec.rb +6 -6
  77. data/spec/integration/schema/check_with_nested_el_spec.rb +3 -3
  78. data/spec/integration/schema/check_with_nth_el_spec.rb +1 -1
  79. data/spec/integration/schema/each_with_set_spec.rb +3 -3
  80. data/spec/integration/schema/extending_dsl_spec.rb +27 -0
  81. data/spec/integration/schema/form/explicit_types_spec.rb +182 -0
  82. data/spec/integration/schema/form_spec.rb +90 -18
  83. data/spec/integration/schema/hash_schema_spec.rb +47 -0
  84. data/spec/integration/schema/inheriting_schema_spec.rb +4 -4
  85. data/spec/integration/schema/input_processor_spec.rb +8 -8
  86. data/spec/integration/schema/json/explicit_types_spec.rb +157 -0
  87. data/spec/integration/schema/json_spec.rb +18 -18
  88. data/spec/integration/schema/macros/confirmation_spec.rb +1 -1
  89. data/spec/integration/schema/macros/each_spec.rb +177 -43
  90. data/spec/integration/schema/macros/{required_spec.rb → filled_spec.rb} +34 -6
  91. data/spec/integration/schema/macros/input_spec.rb +21 -0
  92. data/spec/integration/schema/macros/maybe_spec.rb +39 -2
  93. data/spec/integration/schema/macros/value_spec.rb +105 -0
  94. data/spec/integration/schema/macros/when_spec.rb +28 -8
  95. data/spec/integration/schema/nested_values_spec.rb +11 -8
  96. data/spec/integration/schema/not_spec.rb +2 -2
  97. data/spec/integration/schema/numbers_spec.rb +1 -1
  98. data/spec/integration/schema/option_with_default_spec.rb +1 -1
  99. data/spec/integration/schema/predicate_verification_spec.rb +9 -0
  100. data/spec/integration/schema/predicates/array_spec.rb +295 -0
  101. data/spec/integration/schema/predicates/custom_spec.rb +103 -0
  102. data/spec/integration/schema/predicates/empty_spec.rb +263 -0
  103. data/spec/integration/schema/predicates/eql_spec.rb +327 -0
  104. data/spec/integration/schema/predicates/even_spec.rb +455 -0
  105. data/spec/integration/schema/predicates/excluded_from_spec.rb +455 -0
  106. data/spec/integration/schema/predicates/excludes_spec.rb +391 -0
  107. data/spec/integration/schema/predicates/filled_spec.rb +467 -0
  108. data/spec/integration/schema/predicates/format_spec.rb +455 -0
  109. data/spec/integration/schema/predicates/gt_spec.rb +519 -0
  110. data/spec/integration/schema/predicates/gteq_spec.rb +519 -0
  111. data/spec/integration/schema/predicates/hash_spec.rb +69 -0
  112. data/spec/integration/schema/predicates/included_in_spec.rb +455 -0
  113. data/spec/integration/schema/predicates/includes_spec.rb +391 -0
  114. data/spec/integration/schema/predicates/key_spec.rb +88 -0
  115. data/spec/integration/schema/predicates/lt_spec.rb +520 -0
  116. data/spec/integration/schema/predicates/lteq_spec.rb +519 -0
  117. data/spec/integration/schema/predicates/max_size_spec.rb +391 -0
  118. data/spec/integration/schema/predicates/min_size_spec.rb +391 -0
  119. data/spec/integration/schema/predicates/none_spec.rb +265 -0
  120. data/spec/integration/schema/predicates/not_eql_spec.rb +391 -0
  121. data/spec/integration/schema/predicates/odd_spec.rb +455 -0
  122. data/spec/integration/schema/predicates/size/fixed_spec.rb +401 -0
  123. data/spec/integration/schema/predicates/size/range_spec.rb +399 -0
  124. data/spec/integration/schema/predicates/type_spec.rb +391 -0
  125. data/spec/integration/schema/reusing_schema_spec.rb +4 -4
  126. data/spec/integration/schema/using_types_spec.rb +24 -6
  127. data/spec/integration/schema/xor_spec.rb +2 -2
  128. data/spec/integration/schema_builders_spec.rb +15 -0
  129. data/spec/integration/schema_spec.rb +37 -12
  130. data/spec/shared/predicate_helper.rb +13 -0
  131. data/spec/spec_helper.rb +10 -0
  132. data/spec/support/matchers.rb +38 -0
  133. data/spec/support/predicates_integration.rb +7 -0
  134. data/spec/unit/hint_compiler_spec.rb +10 -8
  135. data/spec/unit/input_processor_compiler/form_spec.rb +45 -43
  136. data/spec/unit/input_processor_compiler/json_spec.rb +37 -35
  137. data/spec/unit/predicate_registry_spec.rb +34 -0
  138. data/spec/unit/schema/key_spec.rb +12 -14
  139. data/spec/unit/schema/rule_spec.rb +4 -2
  140. data/spec/unit/schema/value_spec.rb +38 -121
  141. metadata +150 -16
  142. data/lib/dry/validation/schema/attr.rb +0 -15
  143. data/spec/integration/attr_spec.rb +0 -122
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 16d323de18e994f717e80abb07098dc2e82534af
4
- data.tar.gz: ef0e116d3f56eb249b70315bf43af0d74a249c58
3
+ metadata.gz: 16fb2c50b37c5d1aff843031ff3d7af6e87ab05a
4
+ data.tar.gz: 64f74fc7df4b183322908ec96120d4dbbb4b38c2
5
5
  SHA512:
6
- metadata.gz: 2b9690fa21b55e46d09db96f93d4d58f07d7d5fe7291219d3107f154eda2597e6e7209049403fcb1f518936d025a62d31ed2315e8795a02e7bd017c9ead52b33
7
- data.tar.gz: b8ac25905f1f1d602c0f930cc2895b9e6fd27d53fae3dfcc2794e46f255034417e14ce9407491ba19fd2c86276b3e820783890bdac10fb42bf190f72e9577ec3
6
+ metadata.gz: 244e25e33c6a1795436fc015cab5d4c23961c974eaf7208144faf69a81c040ede351c54e7225efc1695283f061225b0543e2ee6120fce29c00069725fc0ee791
7
+ data.tar.gz: fc89edb2c0f6862d1771b46a77863b644947db429861a34d944cab9799d328df01e7bb0554291fa23f12d67ba545a276fe8f3c98435837485fb002bee55b5101
data/.gitignore CHANGED
@@ -3,6 +3,7 @@ coverage
3
3
  /.bundle
4
4
  vendor/bundle
5
5
  bin/
6
+ log/
6
7
  tmp/
7
8
  .idea/
8
9
  Gemfile.lock
data/.travis.yml CHANGED
@@ -1,18 +1,17 @@
1
1
  language: ruby
2
2
  sudo: false
3
3
  cache: bundler
4
- bundler_args: --without console benchmarks
4
+ bundler_args: --full-index --without console benchmarks
5
5
  script:
6
6
  - bundle exec rake spec
7
7
  rvm:
8
8
  - 2.0
9
- - 2.1
10
- - 2.2
11
- - 2.3.0
9
+ - 2.1.10
10
+ - 2.2.5
11
+ - 2.3.1
12
12
  - rbx-2
13
- - jruby-9000
13
+ - jruby-9.1.1.0
14
14
  - ruby-head
15
- - jruby-head
16
15
  env:
17
16
  global:
18
17
  - JRUBY_OPTS='--dev -J-Xmx1024M'
@@ -21,6 +20,10 @@ matrix:
21
20
  - rvm: rbx-2
22
21
  - rvm: ruby-head
23
22
  - rvm: jruby-head
23
+ include:
24
+ - rvm: jruby-head
25
+ before_install: gem install bundler --no-ri --no-rdoc
26
+
24
27
  notifications:
25
28
  email: false
26
29
  webhooks:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,61 @@
1
+ # v0.8.0 2016-07-01
2
+
3
+ ### Added
4
+
5
+ * Explicit interface for type specs used to set up coercions, ie `required(:age, :int)` (solnic)
6
+ * Support new dry-logic predicates: `:excluded_from?`, `:excludes?`, `:included_in?`, `:includes?`, `:not_eql?`, `:odd?`, `:even?` (jodosha, fran-worley)
7
+ * Support for blocks in `value`, `filled` and `maybe` macros (solnic)
8
+ * Support for passing a schema to `value|filled|maybe` macros ie `maybe(SomeSchema)` (solnic)
9
+ * Support for `each(SomeSchema)` (solnic)
10
+ * Support for `value|filled|maybe` macros + `each` inside a block ie: `maybe(:filled?) { each(:int?) }` (solnic)
11
+ * Support for dedicated hint messages via `en.errors.#{predicate}.(hint|failure)` look-up paths (solnic)
12
+ * Support for configuring custom DSL extensions via `dsl_extensions` setting on Schema class (solnic)
13
+ * Support for preconfiguring a predicate for the input value ie `value :hash?` used for prerequisite-checks (solnic)
14
+ * Infer coercion from constrained types (solnic)
15
+ * Add value macro (coop)
16
+ * Enable .schema to accept objects that respond to #schema (ttdonovan)
17
+ * Support for schema predicates which don't need any arguments (fran-worley)
18
+ * Error and hint messages have access to all predicate arguments by default (fran-worley+solnic)
19
+ * Invalid predicate name in DSL will raise an error (solnic)
20
+ * Predicate with invalid arity in DSL will raise an error (solnic)
21
+
22
+ ### Fixed
23
+
24
+ * Support for jRuby 9.1.1.0 (flash-gordon)
25
+ * Fix bug when using predicates with options in each and when (fran-worley)
26
+ * Fix bug when validating custom types (coop)
27
+ * Fix depending on deeply nested values in high-lvl rules (solnic)
28
+ * Fix duplicated error message for lt? when hint was used (solnic)
29
+ * Fix hints for nested schemas (solnic)
30
+ * Fix an issue where rules with same names inside nested schemas have incorrect hints (solnic)
31
+ * Fix a bug where hints were being generated 4 times (solnic)
32
+ * Fix duplicated error messages when message is different than a hint (solnic)
33
+
34
+ ### Changed
35
+
36
+ * Uses new `:weak` hash constructor from dry-types 0.8.0 which can partially coerce invalid hash (solnic)
37
+ * `key` has been deprecated in favor of `required` (coop)
38
+ * `required` has been deprecated in favor of `filled` (coop)
39
+ * Now relies on dry-logic v0.3.0 and dry-types v0.8.0 (fran-worley)
40
+ * Tring to use illogical predicates with maybe and filled macros now raise InvalidSchemaError (fran-worley)
41
+ * Enable coercion on form.true and form.false (fran-worley)
42
+ * Remove attr (will be extracted to a separate gem) (coop)
43
+ * Deprecate required in favour of filled (coop)
44
+ * Deprecate key in favor of required (coop)
45
+ * Remove nested key syntax (solnic)
46
+
47
+ ### Internal
48
+
49
+ * ~15% performance boost via various optimizations (solnic)
50
+ * When using explicit type specs building a schema is ~80-85x faster (solnic)
51
+ * No longer uses `Dry::Types::Predicates` as `:type?` predicate was moved to dry-logic (solnic)
52
+ * Integration specs covering predicates with Form and Schema (jodosha)
53
+ * Use latest ruby versions on travis (flash-gordon)
54
+ * Make pry console optional with IRB as a default (flash-gordon)
55
+ * Remove wrapping rules in :set nodes (solnic)
56
+
57
+ [Compare v0.7.4...master](https://github.com/dryrb/dry-validation/compare/v0.7.4...master)
58
+
1
59
  # v0.7.4 2016-04-06
2
60
 
3
61
  ### Added
data/Gemfile CHANGED
@@ -13,9 +13,9 @@ group :tools do
13
13
  end
14
14
 
15
15
  group :benchmarks do
16
- gem 'hotch'
17
- gem 'activemodel', '5.0.0.beta3'
18
- gem 'actionpack', '5.0.0.beta3'
16
+ gem 'hotch', platform: :mri
17
+ gem 'activemodel', '~> 5.0.0.rc'
18
+ gem 'actionpack', '~> 5.0.0.rc'
19
19
  gem 'benchmark-ips'
20
20
  gem 'virtus'
21
21
  end
@@ -0,0 +1,64 @@
1
+ require 'benchmark/ips'
2
+ require 'active_model'
3
+
4
+ require 'dry-validation'
5
+
6
+ I18n.locale = :en
7
+ I18n.backend.load_translations
8
+
9
+ class User
10
+ include ActiveModel::Validations
11
+
12
+ attr_reader :email, :age
13
+
14
+ validates :email, :age, presence: true
15
+ validates :age, numericality: { greater_than: 18 }
16
+
17
+ def initialize(attrs)
18
+ @email, @age = attrs.values_at('email', 'age')
19
+ end
20
+ end
21
+
22
+ schema = Dry::Validation.Schema do
23
+ configure do
24
+ config.messages = :i18n
25
+ end
26
+
27
+ required(:email).filled
28
+ required(:age).filled(:int?, gt?: 18)
29
+ end
30
+
31
+ form = Dry::Validation.Form do
32
+ configure do
33
+ config.messages = :i18n
34
+ config.type_specs = true
35
+ end
36
+
37
+ required(:email, :string).filled
38
+ required(:age, :int).filled(:int?, gt?: 18)
39
+ end
40
+
41
+ params = { 'email' => '', 'age' => '18' }
42
+ coerced = { email: nil, age: 18 }
43
+
44
+ puts schema.(coerced).inspect
45
+ puts form.(params).inspect
46
+ puts User.new(params).validate
47
+
48
+ Benchmark.ips do |x|
49
+ x.report('ActiveModel::Validations') do
50
+ user = User.new(params)
51
+ user.validate
52
+ user.errors
53
+ end
54
+
55
+ x.report('dry-validation / schema') do
56
+ schema.(coerced).messages
57
+ end
58
+
59
+ x.report('dry-validation / form') do
60
+ form.(params).messages
61
+ end
62
+
63
+ x.compare!
64
+ end
@@ -0,0 +1,64 @@
1
+ require 'benchmark/ips'
2
+ require 'active_model'
3
+
4
+ require 'dry-validation'
5
+
6
+ I18n.locale = :en
7
+ I18n.backend.load_translations
8
+
9
+ class User
10
+ include ActiveModel::Validations
11
+
12
+ attr_reader :email, :age
13
+
14
+ validates :email, :age, presence: true
15
+ validates :age, numericality: { greater_than: 18 }
16
+
17
+ def initialize(attrs)
18
+ @email, @age = attrs.values_at('email', 'age')
19
+ end
20
+ end
21
+
22
+ schema = Dry::Validation.Schema do
23
+ configure do
24
+ config.messages = :i18n
25
+ end
26
+
27
+ required(:email).filled
28
+ required(:age).filled(:int?, gt?: 18)
29
+ end
30
+
31
+ form = Dry::Validation.Form do
32
+ configure do
33
+ config.messages = :i18n
34
+ config.type_specs = true
35
+ end
36
+
37
+ required(:email, :string).filled
38
+ required(:age, :int).filled(:int?, gt?: 18)
39
+ end
40
+
41
+ params = { 'email' => 'foo@bar.baz', 'age' => '19' }
42
+ coerced = { email: 'foo@bar.baz', age: 19 }
43
+
44
+ puts schema.(coerced).inspect
45
+ puts form.(params).inspect
46
+ puts User.new(params).validate
47
+
48
+ Benchmark.ips do |x|
49
+ x.report('ActiveModel::Validations') do
50
+ user = User.new(params)
51
+ user.validate
52
+ user.errors
53
+ end
54
+
55
+ x.report('dry-validation / schema') do
56
+ schema.(coerced).messages
57
+ end
58
+
59
+ x.report('dry-validation / form') do
60
+ form.(params).messages
61
+ end
62
+
63
+ x.compare!
64
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'suite'
2
+ require 'hotch'
3
+
4
+ schema = Dry::Validation.Schema do
5
+ configure { config.messages = :i18n }
6
+
7
+ required(:email).filled
8
+ required(:age).filled(:int?, gt?: 18)
9
+ required(:address).filled(:hash?)
10
+ end
11
+
12
+ input = { email: '', age: 18, address: {} }
13
+
14
+ puts schema.(input).inspect
15
+
16
+ Hotch() do
17
+ 10_000.times do
18
+ schema.(input)
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'suite'
2
+ require 'hotch'
3
+
4
+ schema = Dry::Validation.Schema do
5
+ configure { config.messages = :i18n }
6
+
7
+ required(:email).filled
8
+ required(:age).filled(:int?, gt?: 18)
9
+ required(:address).filled(:hash?)
10
+ end
11
+
12
+ input = { email: 'jane@doe.org', age: 19, address: { city: 'Krakow' } }
13
+
14
+ puts schema.(input).inspect
15
+
16
+ Hotch() do
17
+ 10_000.times do
18
+ schema.(input)
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'suite'
2
+ require 'hotch'
3
+
4
+ Hotch() do
5
+ 1000.times do
6
+ Dry::Validation.Schema do
7
+ configure { config.messages = :i18n }
8
+
9
+ required(:email).filled
10
+ required(:age).filled(:int?, gt?: 18)
11
+ required(:address).filled(:hash?)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'suite'
2
+ require 'hotch'
3
+
4
+ schema = Dry::Validation.Schema do
5
+ configure { config.messages = :i18n }
6
+
7
+ required(:email).filled
8
+ required(:age).filled(:int?, gt?: 18)
9
+ required(:address).filled(:hash?)
10
+ end
11
+
12
+ input = { email: '', age: 18, address: {} }
13
+
14
+ puts schema.(input).inspect
15
+
16
+ Hotch() do
17
+ 10_000.times do
18
+ schema.(input).messages
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ require 'i18n'
2
+ require 'dry-validation'
3
+
4
+ I18n.locale = :en
5
+ I18n.backend.load_translations
data/config/errors.yml CHANGED
@@ -4,9 +4,13 @@ en:
4
4
 
5
5
  empty?: "must be empty"
6
6
 
7
- exclusion?: "must not be one of: %{list}"
7
+ excludes?: "must not include %{value}"
8
8
 
9
- eql?: "must be equal to %{eql_value}"
9
+ excluded_from?: "must not be one of: %{list}"
10
+
11
+ eql?: "must be equal to %{left}"
12
+
13
+ not_eql?: "must not be equal to %{left}"
10
14
 
11
15
  filled?: "must be filled"
12
16
 
@@ -24,8 +28,11 @@ en:
24
28
 
25
29
  hash?: "must be a hash"
26
30
 
31
+ included_in?: "must be one of: %{list}"
27
32
  inclusion?: "must be one of: %{list}"
28
33
 
34
+ includes?: "must include %{value}"
35
+
29
36
  bool?: "must be boolean"
30
37
 
31
38
  true?: "must be true"
@@ -48,7 +55,7 @@ en:
48
55
 
49
56
  attr?: "is missing"
50
57
 
51
- lt?: "must be less than %{num} (%{value} was given)"
58
+ lt?: "must be less than %{num}"
52
59
 
53
60
  lteq?: "must be less than or equal to %{num}"
54
61
 
@@ -64,11 +71,11 @@ en:
64
71
 
65
72
  size?:
66
73
  arg:
67
- default: "size must be %{num}"
74
+ default: "size must be %{size}"
68
75
  range: "size must be within %{left} - %{right}"
69
76
 
70
77
  value:
71
78
  string:
72
79
  arg:
73
- default: "length must be %{num}"
80
+ default: "length must be %{size}"
74
81
  range: "length must be within %{left} - %{right}"
@@ -19,8 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.add_runtime_dependency 'dry-configurable', '~> 0.1', '>= 0.1.3'
20
20
  spec.add_runtime_dependency 'dry-container', '~> 0.2', '>= 0.2.8'
21
21
  spec.add_runtime_dependency 'dry-equalizer', '~> 0.2'
22
- spec.add_runtime_dependency 'dry-logic', '~> 0.2', '>= 0.2.2'
23
- spec.add_runtime_dependency 'dry-types', '~> 0.6', '>= 0.6.0'
22
+ spec.add_runtime_dependency 'dry-logic', '~> 0.3', '>= 0.3.0'
23
+ spec.add_runtime_dependency 'dry-types', '~> 0.8', '>= 0.8.0'
24
24
 
25
25
  spec.add_development_dependency 'bundler'
26
26
  spec.add_development_dependency 'rake'
data/examples/basic.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'dry-validation'
2
2
 
3
3
  schema = Dry::Validation.Schema do
4
- key(:email).required
4
+ required(:email).filled
5
5
 
6
- key(:age).required(:int?, gt?: 18)
6
+ required(:age).filled(:int?, gt?: 18)
7
7
  end
8
8
 
9
9
  errors = schema.call(email: 'jane@doe.org', age: 19).messages
data/examples/form.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'dry-validation'
2
2
 
3
3
  schema = Dry::Validation.Form do
4
- key(:email).required
4
+ required(:email).filled
5
5
 
6
- key(:age).required(:int?, gt?: 18)
6
+ required(:age).filled(:int?, gt?: 18)
7
7
  end
8
8
 
9
9
  errors = schema.call('email' => '', 'age' => '18').messages
data/examples/json.rb CHANGED
@@ -2,9 +2,9 @@ require 'json'
2
2
  require 'dry-validation'
3
3
 
4
4
  schema = Dry::Validation.JSON do
5
- key(:email).required
5
+ required(:email).filled
6
6
 
7
- key(:age).required(:int?, gt?: 18)
7
+ required(:age).filled(:int?, gt?: 18)
8
8
  end
9
9
 
10
10
  errors = schema.call(JSON.parse('{"email": "", "age": "18"}')).messages