xqsr3 0.11.1 → 0.12.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 +4 -4
- data/lib/xqsr3/conversion/bool_parser.rb +120 -0
- data/lib/xqsr3/extensions/string/to_bool.rb +12 -0
- data/lib/xqsr3/extensions/string.rb +1 -0
- data/lib/xqsr3/extensions/test/unit/assert_false.rb +19 -0
- data/lib/xqsr3/extensions/test/unit/assert_true.rb +20 -0
- data/lib/xqsr3/extensions/test/unit.rb +2 -0
- data/lib/xqsr3/version.rb +1 -1
- data/test/unit/conversion/tc_to_bool.rb +46 -0
- data/test/unit/conversion/ts_all.rb +13 -0
- data/test/unit/extensions/hash/tc_deep_transform.rb +0 -0
- data/test/unit/extensions/string/tc_bool.tb +44 -0
- data/test/unit/extensions/string/tc_quote_if.rb +0 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eed03c5b9c2f91c7de5bd5296e8f62a8476b076f
|
4
|
+
data.tar.gz: 8c7dca9f8d9ded07ef666f6b648db4772830edc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb1f52836cc8d7daf89b2b04bbd9034ab643a635bf898abec355274d707acd1634161150ed0094fb03c217eb0fb6be219c942f45b6fb35af190bff5948e0916b
|
7
|
+
data.tar.gz: d840b9ee19383973b2f5251319f301e70ed1066197d71551e88030b1f0d50863eb39cbcf65c68737dc853926e6cec6f338023cc1ea364cebd8e4e55c6ff78eeb
|
@@ -0,0 +1,120 @@
|
|
1
|
+
|
2
|
+
# ######################################################################## #
|
3
|
+
# File: lib/xqsr3/conversion/bool_parser.rb
|
4
|
+
#
|
5
|
+
# Purpose: Definition of the ::Xqsr3::Conversion::BoolParser
|
6
|
+
# module
|
7
|
+
#
|
8
|
+
# Created: 3rd June 2017
|
9
|
+
# Updated: 7th June 2017
|
10
|
+
#
|
11
|
+
# Home: http://github.com/synesissoftware/xqsr3
|
12
|
+
#
|
13
|
+
# Author: Matthew Wilson
|
14
|
+
#
|
15
|
+
# Copyright (c) 2017, Matthew Wilson and Synesis Software
|
16
|
+
# All rights reserved.
|
17
|
+
#
|
18
|
+
# Redistribution and use in source and binary forms, with or without
|
19
|
+
# modification, are permitted provided that the following conditions are
|
20
|
+
# met:
|
21
|
+
#
|
22
|
+
# * Redistributions of source code must retain the above copyright notice,
|
23
|
+
# this list of conditions and the following disclaimer.
|
24
|
+
#
|
25
|
+
# * Redistributions in binary form must reproduce the above copyright
|
26
|
+
# notice, this list of conditions and the following disclaimer in the
|
27
|
+
# documentation and/or other materials provided with the distribution.
|
28
|
+
#
|
29
|
+
# * Neither the names of the copyright holder nor the names of its
|
30
|
+
# contributors may be used to endorse or promote products derived from
|
31
|
+
# this software without specific prior written permission.
|
32
|
+
#
|
33
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
34
|
+
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
35
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
36
|
+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
37
|
+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
38
|
+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
39
|
+
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
40
|
+
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
41
|
+
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
42
|
+
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
43
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
44
|
+
#
|
45
|
+
# ######################################################################## #
|
46
|
+
|
47
|
+
|
48
|
+
# ##########################################################
|
49
|
+
# ::Xqsr3::Conversion::ToBool
|
50
|
+
|
51
|
+
=begin
|
52
|
+
=end
|
53
|
+
|
54
|
+
module Xqsr3
|
55
|
+
module Conversion
|
56
|
+
|
57
|
+
module BoolParser
|
58
|
+
|
59
|
+
private
|
60
|
+
def self.matches_to_ s, expr
|
61
|
+
|
62
|
+
case expr
|
63
|
+
when ::Regexp
|
64
|
+
return expr =~ s
|
65
|
+
else
|
66
|
+
return s == expr
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
public
|
71
|
+
|
72
|
+
DEFAULT_TRUE_VALUES = [ /true/i, '1' ]
|
73
|
+
DEFAULT_FALSE_VALUES = [ /false/i, '0' ]
|
74
|
+
|
75
|
+
# Attempts to parse the given String to a Boolean value, based on the
|
76
|
+
# given +options+
|
77
|
+
#
|
78
|
+
# === Signature
|
79
|
+
#
|
80
|
+
# * *Parameters*:
|
81
|
+
# - +options+:: An options hash, containing any of the following options
|
82
|
+
#
|
83
|
+
# * *Options*:
|
84
|
+
# - +:false_values+:: [::Array] An array of strings or regular
|
85
|
+
# expressions against which to match for false value. Defaults to
|
86
|
+
# +DEFAULT_FALSE_VALUES+
|
87
|
+
# - +:true_values+:: [::Array] An array of strings or regular
|
88
|
+
# expressions against which to match for true value. Defaults to
|
89
|
+
# +DEFAULT_TRUE_VALUES+
|
90
|
+
# - +:default_value+:: An object to be returned if matching fails.
|
91
|
+
# Defaults to +nil+
|
92
|
+
# - +:false_value+:: An object to be returned if matching succeeds to
|
93
|
+
# match against +:false_values+.
|
94
|
+
# - +:true_value+:: An object to be returned if matching succeeds to
|
95
|
+
# match against +:true_values+.
|
96
|
+
def self.to_bool s, **options
|
97
|
+
|
98
|
+
true_values = options[:true_values] || DEFAULT_TRUE_VALUES
|
99
|
+
true_values = [ true_values ] unless true_values.is_a? ::Array
|
100
|
+
false_values = options[:false_values] || DEFAULT_FALSE_VALUES
|
101
|
+
false_values = [ false_values ] unless false_values.is_a? ::Array
|
102
|
+
default_value = options[:default] || nil
|
103
|
+
true_value = options[:true] || true
|
104
|
+
false_value = options[:false] || false
|
105
|
+
|
106
|
+
return true_value if true_values.any? { |v| self.matches_to_ s, v }
|
107
|
+
return false_value if false_values.any? { |v| self.matches_to_ s, v }
|
108
|
+
|
109
|
+
return default_value
|
110
|
+
end
|
111
|
+
|
112
|
+
end # module BoolParser
|
113
|
+
|
114
|
+
end # module Conversion
|
115
|
+
end # module Xqsr3
|
116
|
+
|
117
|
+
# ############################## end of file ############################# #
|
118
|
+
|
119
|
+
|
120
|
+
|
@@ -3,5 +3,6 @@ require 'xqsr3/extensions/string/ends_with'
|
|
3
3
|
require 'xqsr3/extensions/string/map_option_string'
|
4
4
|
require 'xqsr3/extensions/string/quote_if'
|
5
5
|
require 'xqsr3/extensions/string/starts_with'
|
6
|
+
require 'xqsr3/extensions/string/to_bool'
|
6
7
|
require 'xqsr3/extensions/string/to_symbol'
|
7
8
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
module Test
|
3
|
+
module Unit
|
4
|
+
|
5
|
+
module Assertions
|
6
|
+
|
7
|
+
unless respond_to? :assert_false
|
8
|
+
|
9
|
+
def assert_false(expression, failure_message = '')
|
10
|
+
|
11
|
+
assert ::FalseClass === (expression), failure_message
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end # class Assertions
|
16
|
+
end # module Unit
|
17
|
+
end # module Test
|
18
|
+
|
19
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
module Test
|
3
|
+
module Unit
|
4
|
+
|
5
|
+
module Assertions
|
6
|
+
|
7
|
+
unless respond_to? :assert_true
|
8
|
+
|
9
|
+
def assert_true(expression, failure_message = '')
|
10
|
+
|
11
|
+
assert ::TrueClass === (expression), failure_message
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end # class Assertions
|
16
|
+
end # module Unit
|
17
|
+
end # module Test
|
18
|
+
|
19
|
+
|
20
|
+
|
data/lib/xqsr3/version.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '../../../lib')
|
4
|
+
|
5
|
+
require 'xqsr3/conversion/bool_parser'
|
6
|
+
|
7
|
+
require 'xqsr3/extensions/test/unit'
|
8
|
+
require 'test/unit'
|
9
|
+
|
10
|
+
include ::Xqsr3::Conversion
|
11
|
+
|
12
|
+
class Test_Xqsr3_ConversionMultiMap < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def test_parse_normal
|
15
|
+
|
16
|
+
assert_true BoolParser.to_bool 'true'
|
17
|
+
assert_false BoolParser.to_bool 'false'
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_parse_custom_true_false
|
21
|
+
|
22
|
+
true_values = [ 'affirmative', 'yup' ]
|
23
|
+
false_values = [ 'negative', 'nope' ]
|
24
|
+
|
25
|
+
assert_true BoolParser.to_bool 'affirmative', true_values: true_values, false_values: false_values
|
26
|
+
assert_true BoolParser.to_bool 'yup', true_values: true_values, false_values: false_values
|
27
|
+
assert_nil BoolParser.to_bool 'true', true_values: true_values, false_values: false_values
|
28
|
+
assert_false BoolParser.to_bool 'negative', true_values: true_values, false_values: false_values
|
29
|
+
assert_false BoolParser.to_bool 'nope', true_values: true_values, false_values: false_values
|
30
|
+
assert_nil BoolParser.to_bool 'false', true_values: true_values, false_values: false_values
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_parse_custom_true_false_regexes
|
34
|
+
|
35
|
+
true_values = [ /affirm/, /yup/ ]
|
36
|
+
false_values = [ 'negative', /no/ ]
|
37
|
+
|
38
|
+
assert_true BoolParser.to_bool 'affirmative', true_values: true_values, false_values: false_values
|
39
|
+
assert_true BoolParser.to_bool 'yup', true_values: true_values, false_values: false_values
|
40
|
+
assert_nil BoolParser.to_bool 'true', true_values: true_values, false_values: false_values
|
41
|
+
assert_false BoolParser.to_bool 'negative', true_values: true_values, false_values: false_values
|
42
|
+
assert_false BoolParser.to_bool 'nope', true_values: true_values, false_values: false_values
|
43
|
+
assert_nil BoolParser.to_bool 'false', true_values: true_values, false_values: false_values
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# executes all other tests
|
4
|
+
|
5
|
+
this_file = File.expand_path(__FILE__)
|
6
|
+
this_dir = File.expand_path(File.dirname(__FILE__))
|
7
|
+
|
8
|
+
# all tc_*rb in current directory
|
9
|
+
Dir[File.join(this_dir, 'tc_*rb')].each { |file| require file }
|
10
|
+
|
11
|
+
# all ts_*rb in immediate sub-directories
|
12
|
+
Dir[File.join(this_dir, '*', 'ts_*rb')].each { |file| require file }
|
13
|
+
|
File without changes
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '../../../../lib')
|
4
|
+
|
5
|
+
require 'xqsr3/extensions/string/to_bool'
|
6
|
+
|
7
|
+
require 'xqsr3/extensions/test/unit'
|
8
|
+
require 'test/unit'
|
9
|
+
|
10
|
+
class Test_String_to_bool < Test::Unit::TestCase
|
11
|
+
|
12
|
+
def test_parse_normal
|
13
|
+
|
14
|
+
assert_true 'true'.to_bool
|
15
|
+
assert_false 'false'.to_bool
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_parse_custom_true_false
|
19
|
+
|
20
|
+
true_values = [ 'affirmative', 'yup' ]
|
21
|
+
false_values = [ 'negative', 'nope' ]
|
22
|
+
|
23
|
+
assert_true 'affirmative'.to_bool true_values: true_values, false_values: false_values
|
24
|
+
assert_true 'yup'.to_bool true_values: true_values, false_values: false_values
|
25
|
+
assert_nil 'true'.to_bool true_values: true_values, false_values: false_values
|
26
|
+
assert_false 'negative'.to_bool true_values: true_values, false_values: false_values
|
27
|
+
assert_false 'nope'.to_bool true_values: true_values, false_values: false_values
|
28
|
+
assert_nil 'false'.to_bool true_values: true_values, false_values: false_values
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_parse_custom_true_false_regexes
|
32
|
+
|
33
|
+
true_values = [ /affirm/, /yup/ ]
|
34
|
+
false_values = [ 'negative', /no/ ]
|
35
|
+
|
36
|
+
assert_true 'affirmative'.to_bool true_values: true_values, false_values: false_values
|
37
|
+
assert_true 'yup'.to_bool true_values: true_values, false_values: false_values
|
38
|
+
assert_nil 'true'.to_bool true_values: true_values, false_values: false_values
|
39
|
+
assert_false 'negative'.to_bool true_values: true_values, false_values: false_values
|
40
|
+
assert_false 'nope'.to_bool true_values: true_values, false_values: false_values
|
41
|
+
assert_nil 'false'.to_bool true_values: true_values, false_values: false_values
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xqsr3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
eXtensions by fine Quantum for Standard Ruby and 3rd-party libraries is a
|
@@ -24,6 +24,7 @@ files:
|
|
24
24
|
- lib/xqsr3/command_line_utilities/map_option_string.rb
|
25
25
|
- lib/xqsr3/containers/frequency_map.rb
|
26
26
|
- lib/xqsr3/containers/multi_map.rb
|
27
|
+
- lib/xqsr3/conversion/bool_parser.rb
|
27
28
|
- lib/xqsr3/diagnostics/exception_utilities.rb
|
28
29
|
- lib/xqsr3/doc_.rb
|
29
30
|
- lib/xqsr3/extensions/enumerable.rb
|
@@ -39,11 +40,14 @@ files:
|
|
39
40
|
- lib/xqsr3/extensions/string/map_option_string.rb
|
40
41
|
- lib/xqsr3/extensions/string/quote_if.rb
|
41
42
|
- lib/xqsr3/extensions/string/starts_with.rb
|
43
|
+
- lib/xqsr3/extensions/string/to_bool.rb
|
42
44
|
- lib/xqsr3/extensions/string/to_symbol.rb
|
43
45
|
- lib/xqsr3/extensions/test/unit.rb
|
44
46
|
- lib/xqsr3/extensions/test/unit/assert_eql.rb
|
47
|
+
- lib/xqsr3/extensions/test/unit/assert_false.rb
|
45
48
|
- lib/xqsr3/extensions/test/unit/assert_not.rb
|
46
49
|
- lib/xqsr3/extensions/test/unit/assert_not_eql.rb
|
50
|
+
- lib/xqsr3/extensions/test/unit/assert_true.rb
|
47
51
|
- lib/xqsr3/hash_utilities/deep_transform.rb
|
48
52
|
- lib/xqsr3/io/writelines.rb
|
49
53
|
- lib/xqsr3/quality.rb
|
@@ -58,6 +62,8 @@ files:
|
|
58
62
|
- test/unit/containers/tc_frequency_map.rb
|
59
63
|
- test/unit/containers/tc_multi_map.rb
|
60
64
|
- test/unit/containers/ts_all.rb
|
65
|
+
- test/unit/conversion/tc_to_bool.rb
|
66
|
+
- test/unit/conversion/ts_all.rb
|
61
67
|
- test/unit/diagnostics/tc_exception_utilities.rb
|
62
68
|
- test/unit/diagnostics/ts_all.rb
|
63
69
|
- test/unit/extensions/enumerable/tc_collect_with_index.rb
|
@@ -69,6 +75,7 @@ files:
|
|
69
75
|
- test/unit/extensions/io/ts_all.rb
|
70
76
|
- test/unit/extensions/kernel/tc_raise_with_options.rb
|
71
77
|
- test/unit/extensions/kernel/ts_all.rb
|
78
|
+
- test/unit/extensions/string/tc_bool.tb
|
72
79
|
- test/unit/extensions/string/tc_ends_with.rb
|
73
80
|
- test/unit/extensions/string/tc_map_option_string.rb
|
74
81
|
- test/unit/extensions/string/tc_quote_if.rb
|