sinatra-param-validator 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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