opto 1.8.0 → 1.8.1

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
  SHA1:
3
- metadata.gz: 9dedbddd78ab84c43366135f15133aaa367044e7
4
- data.tar.gz: 48e32fd24ef67476c171115dca96de827f2c90ce
3
+ metadata.gz: 6025b403553a3ecfb777534995962166273d72be
4
+ data.tar.gz: a947fa23c88021c9f83eba1e925d478bcaf44dae
5
5
  SHA512:
6
- metadata.gz: 7ea855a635ab51af7342cccf8b1f7aee5ae26def1564bf878c15e5316c116221d7097d6e0ed4276aa7d7591839f4c2e76acdec1924c0e7b0c63bc787a996f6f7
7
- data.tar.gz: 3de6ee644c94c10a4570d370fb4a64609faa6bb940debc785a5bb1394a163243e475c944ea9df704707974f84aff2991b9a6384eb3533d56c4122cafd7e85714
6
+ metadata.gz: e16e7b5ca1c943dbeb4df9da7c40196f9f6eb5e85fcc02e18985be15c301c748bd30218377e9088a5a0dd096a7ea10e01cec6abfbe72d5a04a4f1f1c41a693d6
7
+ data.tar.gz: 7bc3b7d16d8cc8f88a259049509086dc652e1195cc54b60ee744393d14eb91e8845f89ae9428b3aca6cc73a28cc314c31b0239f0d54f6f7bfabd3d0394f02d5f
@@ -4,7 +4,6 @@ rvm:
4
4
  - 2.2.3
5
5
  - 2.3.3
6
6
  - 2.4.0
7
- - jruby-9.1.5.0
8
7
  env:
9
8
  - secure: "bCu1bVzr6SP+gAbMo88GvcHHbhO3LcnJtWp+YuSZ5qW4EHhdBw+DOQeOlzoKHtYhNhptmb/65pZZctRTE6jOOSZzpOUHaeqaqHZpELldkCMu7rE8bXuCV4OfhG0CKWvURS0x5p5F5onEx1a1sjiu+MVEUqktAPDAcdTBNBW1irRwvnSifgjcZRLzfm1aRs1fqzBJpHaAXyD++2GQaWyXDtQsEsc/Eyhmnkac5Y2cTeQiYlDluqBeB885q9K16ruLp2NWx/rnR8RGMP1LSnrye/GEo2mRWOWy1MyIEwNDcVaA6MVDY2GBIQUoXg4PBrZAleVIsO3LzwR4oorFCaSgWxzqYI67g5Kb2zn8fW9Yu5lDcFEJKIHQAwBrlq3n3Mi5it/IxGQDWXQ/2fjBxCwuilvI0WTzOH0m4g8Uf6jHaQLFC6ahdWDjfs6aCzdPpbJls26/r39NIB5k/6ZO29NZkxGBsQ7E7m4wurr7a9ksLODgPOyPiB8/4Txu35Llp+IuJpbshrlkRIMwEIFVWiLi6MZhRBkxaRzlkJQ0bS3RD9W4z9UJyoBujmgXMrv0eHNTGCOC+/4tvrA+pXzJwmFQJA6TnenoDl9hc6o03gyfH/YvmMgrtJLbJ8rGoLRaY8HsQwHWgimpCl1o043kO8/UkhhS7J4wyQXYwqGnA2PC/j0="
10
9
  before_install: gem install bundler -v 1.12.5
@@ -117,7 +117,7 @@ module Opto
117
117
  []
118
118
  when ::Array
119
119
  ifs.map do |iff|
120
- lambda { |grp| !grp.value_of(iff).nil? }
120
+ lambda { |grp| grp.option(iff).true? }
121
121
  end
122
122
  when Hash
123
123
  ifs.each_with_object([]) do |(k, v), arr|
@@ -175,7 +175,7 @@ module Opto
175
175
  end
176
176
  end
177
177
  when String, Symbol
178
- [lambda { |grp| !grp.value_of(ifs.to_s).nil? }]
178
+ normalize_ifs([ifs])
179
179
  else
180
180
  raise TypeError, "Invalid syntax for conditional"
181
181
  end
@@ -233,6 +233,10 @@ module Opto
233
233
  handler.valid?(value)
234
234
  end
235
235
 
236
+ def true?
237
+ handler.truthy?(value)
238
+ end
239
+
236
240
  # Validation errors
237
241
  # @return [Hash]
238
242
  def errors
@@ -70,6 +70,11 @@ module Opto
70
70
  raise TypeError, "Block required" unless block_given?
71
71
  sanitizers << define_method("sanitize_#{name}", &block)
72
72
  end
73
+
74
+ def true_when(&block)
75
+ raise TypeError, "Block required" unless block_given?
76
+ define_method(:truthy?, &block)
77
+ end
73
78
  end
74
79
 
75
80
  # The default :in validator, returns an error unless the
@@ -26,6 +26,10 @@ module Opto
26
26
  compact: false
27
27
  }
28
28
 
29
+ true_when do |value|
30
+ value.kind_of?(::Array) && !value.empty
31
+ end
32
+
29
33
  sanitizer :split do |value|
30
34
  if value.kind_of?(::Array)
31
35
  value
@@ -22,9 +22,13 @@ module Opto
22
22
  blank_is: false,
23
23
  false: 'false',
24
24
  true: 'true',
25
- as: 'string'
25
+ as: 'boolean'
26
26
  }
27
27
 
28
+ true_when do |value|
29
+ sanitize_to_bool(value)
30
+ end
31
+
28
32
  sanitizer :to_bool do |value|
29
33
  if value.nil?
30
34
  options[:nil_is]
@@ -1,6 +1,7 @@
1
1
  require_relative '../type'
2
2
  require 'opto/extensions/snake_case'
3
3
  require 'opto/extensions/hash_string_or_symbol_key'
4
+ require 'opto/types/boolean'
4
5
 
5
6
  module Opto
6
7
  module Types
@@ -42,6 +43,10 @@ module Opto
42
43
  in: []
43
44
  }
44
45
 
46
+ true_when do |value|
47
+ Opto::Types::Boolean.new(options).sanitize_to_bool(value)
48
+ end
49
+
45
50
  def initialize(options={})
46
51
  opts = normalize_opts(options.delete(:options))
47
52
  super(options)
@@ -19,6 +19,10 @@ module Opto
19
19
  nil_is_zero: false
20
20
  }
21
21
 
22
+ true_when do |value|
23
+ !value.nil?
24
+ end
25
+
22
26
  sanitizer :to_i do |value|
23
27
  value.nil? ? (options[:nil_is_zero] ? 0 : nil) : value.to_i
24
28
  end
@@ -2,6 +2,7 @@ require_relative '../type'
2
2
  require 'base64'
3
3
  require 'opto/extensions/snake_case'
4
4
  require 'opto/extensions/hash_string_or_symbol_key'
5
+ require 'opto/types/boolean'
5
6
 
6
7
  module Opto
7
8
  module Types
@@ -33,6 +34,9 @@ module Opto
33
34
  decode_64: false
34
35
  }.merge(Hash[*TRANSFORMATIONS.flat_map {|tr| [tr, false]}])
35
36
 
37
+ true_when do |value|
38
+ !value.nil? && !value.strip.empty? && value != 'false'
39
+ end
36
40
 
37
41
  sanitizer :encode_64 do |value|
38
42
  (options[:encode_64] && value) ? Base64.encode64(value) : value
@@ -16,6 +16,10 @@ module Opto
16
16
  schemes: [ 'http', 'https' ]
17
17
  }
18
18
 
19
+ true_when do |value|
20
+ !value.to_s.strip.empty?
21
+ end
22
+
19
23
  validator :scheme do |value|
20
24
  return nil if options[:schemes].nil? || options[:schemes].empty?
21
25
  scheme = uri(value).scheme
@@ -1,3 +1,3 @@
1
1
  module Opto
2
- VERSION = "1.8.0"
2
+ VERSION = "1.8.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opto
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kimmo Lehto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-24 00:00:00.000000000 Z
11
+ date: 2017-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler