dry-validation 1.0.0.alpha1 → 1.0.0.alpha2
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 +17 -1
 - data/lib/dry/validation/constants.rb +2 -0
 - data/lib/dry/validation/contract.rb +11 -5
 - data/lib/dry/validation/result.rb +19 -2
 - data/lib/dry/validation/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 288a3f0d9af21271cfeb794d48752ba6bfa93c8e4fa088e8faa9f6eb9a05e083
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 1949525da40fb528c5eda20c610a5c017c260600613ba4fc392f23cd6a84a8d7
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f4884bb2c55f0b987b0aad70bceaedc0d1bc5adc5056bd47e9606e126a9ce9bcb450f5ec7c2035b35572eb4677c4ee0c1525856fe83866b07bf559a75b97a260
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f8f79772a1950752dfa03204269df85d7480c52114c4369d2e895e1edd02b6f02ee3bc03049a2c4ed0994042b104b82dd0e22fcb1c31882b7b0c741d414c8ae1
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,3 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # v1.0.0.alpha2 2019-03-05
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            First round of bug fixes. Thanks for testing <3!
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ### Fixed
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            * Errors with nested messages are correctly built (flash-gordon)
         
     | 
| 
      
 8 
     | 
    
         
            +
            * Messages for nested keys are correctly resolved (solnic)
         
     | 
| 
      
 9 
     | 
    
         
            +
            * A message for a nested key is resolved when it's defined under `errors.rule.%{key}` too, but a message under nested key will override it (solnic)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ### Changed
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            * When a message template is not found a more meaningful error is raised that includes both rule identifier and key path (solnic)
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            [Compare v1.0.0.alpha1...v1.0.0.alpha2](https://github.com/dry-rb/dry-validation/compare/v1.0.0.alpha1...v1.0.0.alpha2)
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       1 
17 
     | 
    
         
             
            # v1.0.0.alpha1 2019-03-04
         
     | 
| 
       2 
18 
     | 
    
         | 
| 
       3 
19 
     | 
    
         
             
            Complete rewrite on top of `dry-schema`.
         
     | 
| 
         @@ -26,7 +42,7 @@ Complete rewrite on top of `dry-schema`. 
     | 
|
| 
       26 
42 
     | 
    
         | 
| 
       27 
43 
     | 
    
         
             
            ### Changed
         
     | 
| 
       28 
44 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
            * [internal]  
     | 
| 
      
 45 
     | 
    
         
            +
            * [internal] dry-logic was pinned to `~> 0.4.2` (flash-gordon)
         
     | 
| 
       30 
46 
     | 
    
         | 
| 
       31 
47 
     | 
    
         
             
            [Compare v0.12.2...v0.12.3](https://github.com/dry-rb/dry-validation/compare/v0.12.2...v0.12.3)
         
     | 
| 
       32 
48 
     | 
    
         | 
| 
         @@ -119,13 +119,19 @@ module Dry 
     | 
|
| 
       119 
119 
     | 
    
         
             
                  #
         
     | 
| 
       120 
120 
     | 
    
         
             
                  # @api private
         
     | 
| 
       121 
121 
     | 
    
         
             
                  def message(key, tokens: EMPTY_HASH, **opts)
         
     | 
| 
       122 
     | 
    
         
            -
                     
     | 
| 
      
 122 
     | 
    
         
            +
                    msg_opts = opts.merge(tokens)
         
     | 
| 
      
 123 
     | 
    
         
            +
                    rule_path = Array(opts.fetch(:rule)).flatten
         
     | 
| 
       123 
124 
     | 
    
         | 
| 
       124 
     | 
    
         
            -
                     
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
      
 125 
     | 
    
         
            +
                    template = messages[key, msg_opts.merge(rule: rule_path.join(DOT))]
         
     | 
| 
      
 126 
     | 
    
         
            +
                    template ||= messages[key, msg_opts.merge(rule: rule_path.last)]
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                    unless template
         
     | 
| 
      
 129 
     | 
    
         
            +
                      raise MissingMessageError, <<~STR
         
     | 
| 
      
 130 
     | 
    
         
            +
                        Message template for #{key.inspect} under #{rule_path.join(DOT).inspect} was not found
         
     | 
| 
      
 131 
     | 
    
         
            +
                      STR
         
     | 
| 
       128 
132 
     | 
    
         
             
                    end
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
                    template.(template.data(tokens))
         
     | 
| 
       129 
135 
     | 
    
         
             
                  end
         
     | 
| 
       130 
136 
     | 
    
         
             
                end
         
     | 
| 
       131 
137 
     | 
    
         
             
              end
         
     | 
| 
         @@ -74,7 +74,7 @@ module Dry 
     | 
|
| 
       74 
74 
     | 
    
         
             
                  #
         
     | 
| 
       75 
75 
     | 
    
         
             
                  # @api private
         
     | 
| 
       76 
76 
     | 
    
         
             
                  def add_error(key, message)
         
     | 
| 
       77 
     | 
    
         
            -
                    (errors 
     | 
| 
      
 77 
     | 
    
         
            +
                    add_to(errors, key, message)
         
     | 
| 
       78 
78 
     | 
    
         
             
                    self
         
     | 
| 
       79 
79 
     | 
    
         
             
                  end
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
         @@ -86,7 +86,13 @@ module Dry 
     | 
|
| 
       86 
86 
     | 
    
         
             
                  #
         
     | 
| 
       87 
87 
     | 
    
         
             
                  # @api public
         
     | 
| 
       88 
88 
     | 
    
         
             
                  def [](key)
         
     | 
| 
       89 
     | 
    
         
            -
                     
     | 
| 
      
 89 
     | 
    
         
            +
                    if values.key?(key)
         
     | 
| 
      
 90 
     | 
    
         
            +
                      values[key]
         
     | 
| 
      
 91 
     | 
    
         
            +
                    elsif storage.key?(key)
         
     | 
| 
      
 92 
     | 
    
         
            +
                      storage[key]
         
     | 
| 
      
 93 
     | 
    
         
            +
                    else
         
     | 
| 
      
 94 
     | 
    
         
            +
                      nil
         
     | 
| 
      
 95 
     | 
    
         
            +
                    end
         
     | 
| 
       90 
96 
     | 
    
         
             
                  end
         
     | 
| 
       91 
97 
     | 
    
         | 
| 
       92 
98 
     | 
    
         
             
                  # Store value under specified key
         
     | 
| 
         @@ -142,6 +148,17 @@ module Dry 
     | 
|
| 
       142 
148 
     | 
    
         
             
                  def storage
         
     | 
| 
       143 
149 
     | 
    
         
             
                    @storage ||= EMPTY_HASH.dup
         
     | 
| 
       144 
150 
     | 
    
         
             
                  end
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
                  # @api private
         
     | 
| 
      
 153 
     | 
    
         
            +
                  def add_to(hash, path, value)
         
     | 
| 
      
 154 
     | 
    
         
            +
                    if path.is_a?(Hash)
         
     | 
| 
      
 155 
     | 
    
         
            +
                      key = path.keys[0]
         
     | 
| 
      
 156 
     | 
    
         
            +
                      messages = (hash[key] ||= EMPTY_HASH.dup)
         
     | 
| 
      
 157 
     | 
    
         
            +
                      add_to(messages, path[key], value)
         
     | 
| 
      
 158 
     | 
    
         
            +
                    else
         
     | 
| 
      
 159 
     | 
    
         
            +
                      (hash[path] ||= EMPTY_ARRAY.dup) << value
         
     | 
| 
      
 160 
     | 
    
         
            +
                    end
         
     | 
| 
      
 161 
     | 
    
         
            +
                  end
         
     | 
| 
       145 
162 
     | 
    
         
             
                end
         
     | 
| 
       146 
163 
     | 
    
         
             
              end
         
     | 
| 
       147 
164 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: dry-validation
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0.alpha2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Piotr Solnica
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019-03- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-03-05 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: concurrent-ruby
         
     |