sinatra-param-validator 0.9.0 → 0.12.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f17b821ad13e5656480453ed3067bc2cb724cfc51dc71b89673ebbd29bf06cff
4
- data.tar.gz: b4a333cc414c4fdb0ba9ba9cbc5da317037bbc0a08879f8f120c70996ce41073
3
+ metadata.gz: b892596c037b0e00101f33a36c3fef30985e3514e3f0b74d706e55c27e03f921
4
+ data.tar.gz: 8c6d082dc416b889ca799fb49de1fef7f11af81656c5be29d30f8c191529a4c1
5
5
  SHA512:
6
- metadata.gz: fd06efb152939cecc5ea1169426c4cded4177ad2a71b678a217899e246c4def5826457339b8a9f5a2afedc3044af53e4a41728f04ae6180cfdfc2efc5048e6f6
7
- data.tar.gz: 90133f0e8bda179eafc1e193bcb4caa2466ece28efc20c17e3521e30a18a505d58d26f0ba6e0ff79fb88119bdcbeb9f2b4932ca7b6882e98c351eed0d1509a0d
6
+ metadata.gz: 85089ee9a10e79bd4cf56684e3e63a6487ea6015c093bebd17b720ea52851679790316f0c65bfc4b47bcfe399bc13d4a4c2062127c69c0c1743957663522cc14
7
+ data.tar.gz: 608f712978969fe990aefa8e2d1c90daa99871d9c9588c86b82fe0ae30873a256f8b27d4c834ad445014c32895a53a626090b32a1993469d8e40dd50bb079191
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.12.0] - 2022-07-15
4
+
5
+ - Switch from a delegator to extending the context
6
+
7
+ ## [0.11.0] - 2022-07-15
8
+
9
+ - Fix setting param values to false
10
+
11
+ ## [0.10.0] - 2022-07-12
12
+
13
+ - Remove the `block` option from validators
14
+
3
15
  ## [0.9.0] - 2022-07-09
4
16
 
5
17
  - Change parser to parse the definition outside of the initialize block
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sinatra-param-validator (0.9.0)
4
+ sinatra-param-validator (0.12.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -85,4 +85,4 @@ DEPENDENCIES
85
85
  sinatra-param-validator!
86
86
 
87
87
  BUNDLED WITH
88
- 2.3.17
88
+ 2.3.16
data/README.md CHANGED
@@ -126,15 +126,6 @@ param :number, Integer, required: true do |validator|
126
126
  end
127
127
  ```
128
128
 
129
- If you need to run some code in the route context, you can just use the `block` keyword:
130
-
131
- ```ruby
132
- block do |validator|
133
- #...
134
- validator.param :val, Integer
135
- end
136
- ```
137
-
138
129
  ## Rules
139
130
 
140
131
  Rules work on multiple parameters:
@@ -8,68 +8,66 @@ require_relative 'rule'
8
8
 
9
9
  module Sinatra
10
10
  module ParamValidator
11
- # Run the definition in the given scope
12
- class Parser < SimpleDelegator
13
- attr_reader :errors
14
-
15
- def initialize(context)
16
- super(context)
17
- @context = context
18
- @errors = {}
19
- end
20
-
21
- def parse(definition, *args)
22
- instance_exec(*args, &definition)
23
-
24
- self
25
- end
26
-
27
- def add_error(key, error)
28
- @errors[key] = @errors.fetch(key, []).concat(Array(error))
29
- end
30
-
31
- def block(&block)
32
- run_block :block, block
11
+ # Methods to add to the context for handling parameters
12
+ module ValidatorMethods
13
+ def _add_error(key, error)
14
+ @__validator_errors[key] = @__validator_errors.fetch(key, []).concat(Array(error))
33
15
  end
34
16
 
35
17
  def param(key, type, default: nil, message: nil, **args, &block)
36
- parameter = Parameter.new(@context.params[key], type, **args)
37
- update_params_hash key, parameter, default
18
+ parameter = Parameter.new(params[key], type, **args)
19
+ _update_params_hash key, parameter, default
38
20
  if parameter.valid?
39
- run_block(key, block) if block
21
+ _run_block(key, block) if block
40
22
  else
41
- add_error key, message || parameter.errors
23
+ _add_error key, message || parameter.errors
42
24
  end
43
25
  rescue NameError
44
26
  raise 'Invalid parameter type'
45
27
  end
46
28
 
47
29
  def rule(name, *args, **kwargs)
48
- rule = Rule.new(name, @context.params, *args, **kwargs)
30
+ rule = Rule.new(name, params, *args, **kwargs)
49
31
  unless rule.passes?
50
- @errors[:rules] ||= []
51
- @errors[:rules].push(rule.errors)
32
+ @__validator_errors[:rules] ||= []
33
+ @__validator_errors[:rules].push(rule.errors)
52
34
  end
53
35
  rescue NameError
54
36
  raise 'Invalid rule type'
55
37
  end
56
38
 
57
- private
58
-
59
- def run_block(key, block)
39
+ def _run_block(key, block)
60
40
  args = block.arity == 1 ? [self] : []
61
- @context.instance_exec(*args, &block)
41
+ instance_exec(*args, &block)
62
42
  rescue InvalidParameterError => e
63
- add_error key, e.message
43
+ _add_error key, e.message
64
44
  end
65
45
 
66
- def update_params_hash(key, parameter, default)
67
- if @context.params.key?(key)
68
- @context.params[key] = parameter.coerced if parameter.coerced
46
+ def _update_params_hash(key, parameter, default)
47
+ if params.key?(key)
48
+ params[key] = parameter.coerced unless parameter.coerced.nil?
69
49
  elsif !default.nil?
70
- @context.params[key] = default.respond_to?(:call) ? default.call : default
50
+ params[key] = default.respond_to?(:call) ? default.call : default
71
51
  end
72
52
  end
73
53
  end
54
+
55
+ # Run the definition in the given scope
56
+ class Parser
57
+ attr_reader :errors
58
+
59
+ def initialize(context)
60
+ @context = context
61
+ end
62
+
63
+ def parse(definition, *args)
64
+ @context.extend(ValidatorMethods)
65
+ @context.instance_variable_set(:@__validator_errors, {})
66
+ @context.instance_exec(*args, &definition)
67
+ @errors = @context.instance_variable_get(:@__validator_errors)
68
+
69
+ self
70
+ end
71
+ end
74
72
  end
75
73
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sinatra
4
4
  module ParamValidator
5
- VERSION = '0.9.0'
5
+ VERSION = '0.12.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-param-validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Selby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-09 00:00:00.000000000 Z
11
+ date: 2022-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack-test