sinatra-param-validator 0.6.0 → 0.7.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: 2f824395ffa6b3e38d61c1e4cd81ee2237987c47b04c51abb4cd43d2fdedd2ec
4
- data.tar.gz: 9294cc7618a05d263df6f7e7415fdab88b0f6e846b05fce4cac2763d8a79b740
3
+ metadata.gz: d0704f790d84c6f56cc3f0d68f55ed3bcd95b5fa76fb9d185bb3b5421bb62348
4
+ data.tar.gz: 352199c3b098d9adb0e1666ee538b373a72afdb13c1cbd62ea686943fc7e4954
5
5
  SHA512:
6
- metadata.gz: 17ed2207a700e74b5114ac4b10fb9f8a3f6089d6661df044017a5b36ea558ffec2452e62d7ec0814a5ce30536ab039569cfa45f031960e791caaf57ae253afac
7
- data.tar.gz: 8dd242fdf3f379612962ca5897e23e86782b061b16373bfc3dbf4b6e3e22b95e39787027e1499cca36872c9d88b7246871bbb882f6472caadbd5004de7763be4
6
+ metadata.gz: 8df45995e8e88d7ead9edfdd8985f2b43a5904e08005f205a815286f2fa0fb36acb98494538f5bb30ee7733db8f8faf061cfc09ce48763f26176538881c9135e
7
+ data.tar.gz: 03caf360ce521261397eca9558f5dfe8f74df3bd6a3c1932cd5fda802f257f3025199cbd0c8f29098b231ccf6fea982947ff52fc5b19ea5309e746a8e5384293
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.7.0] - 2022-06-09
4
+
5
+ - Add `default` option for parameters
6
+ - Allow `default` option to be a proc or a lambda
7
+
3
8
  ## [0.6.0] - 2022-06-09
4
9
 
5
10
  - Add `block` to run blocks of code in the route context
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sinatra-param-validator (0.6.0)
4
+ sinatra-param-validator (0.7.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -69,6 +69,9 @@ param :number, Integer, required: true, in: 0..100
69
69
 
70
70
  All parameters have the following validations available:
71
71
 
72
+ * `default`
73
+ * Set a default value if this parameter was not provided
74
+ * This can be a lambda or a proc if required
72
75
  * `nillable`
73
76
  * If this is set, all other validations are skipped if the value is nil
74
77
  * `required`
@@ -28,9 +28,9 @@ module Sinatra
28
28
  run_block :block, block
29
29
  end
30
30
 
31
- def param(key, type, message: nil, **args, &block)
31
+ def param(key, type, default: nil, message: nil, **args, &block)
32
32
  parameter = Parameter.new(@context.params[key], type, **args)
33
- @context.params[key] = parameter.coerced if @context.params.key?(key) && parameter.coerced
33
+ update_params_hash key, parameter, default
34
34
  if parameter.valid?
35
35
  run_block(key, block) if block
36
36
  else
@@ -50,12 +50,22 @@ module Sinatra
50
50
  raise 'Invalid rule type'
51
51
  end
52
52
 
53
+ private
54
+
53
55
  def run_block(key, block)
54
56
  args = block.arity == 1 ? [self] : []
55
57
  @context.instance_exec(*args, &block)
56
58
  rescue InvalidParameterError => e
57
59
  add_error key, e.message
58
60
  end
61
+
62
+ def update_params_hash(key, parameter, default)
63
+ if @context.params.key?(key)
64
+ @context.params[key] = parameter.coerced if parameter.coerced
65
+ elsif !default.nil?
66
+ @context.params[key] = default.respond_to?(:call) ? default.call : default
67
+ end
68
+ end
59
69
  end
60
70
  end
61
71
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sinatra
4
4
  module ParamValidator
5
- VERSION = '0.6.0'
5
+ VERSION = '0.7.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-param-validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Selby