opto 1.8.0 → 1.8.1

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
  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