trick_bag 0.58.0 → 0.58.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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3bc667fb430486e4cc7923ea12c615bc658cdd7e
|
|
4
|
+
data.tar.gz: 4db0fde0dd906dda2a46ebacb975908ac18eb154
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f51ab665365c45131ac6f90932a58c2f33d604ea2ce13ad00cd0eac622b4816ece6e79d0ced9e73d487fed1ff71ec071a485e54f87bb890387b194a08d6d3d68
|
|
7
|
+
data.tar.gz: 44d8d27beb484babc4be8a78f773129ac0d2c790a989208c23fd2ac233a0634cc79fc5fa055b19f5b7a25cbdac53f3fd1cdb5e3e9710dd9f49add4898b11bdc6
|
data/RELEASE_NOTES.md
CHANGED
|
@@ -35,18 +35,19 @@ module KmgtNumericString
|
|
|
35
35
|
object.is_a?(String) ? ToNumberConverter.new(object).to_number : object
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
# Returns whether or not this is a number range. Specifically, tests that
|
|
38
|
+
# Returns whether or not this is a number range string. Specifically, tests that
|
|
39
39
|
# the string contains only 2 numeric strings separated by '..'.
|
|
40
40
|
def range_string?(string)
|
|
41
|
+
return false unless string.is_a?(String)
|
|
41
42
|
number_strings = string.split('..')
|
|
42
43
|
number_strings.size == 2 && number_strings.all? { |str| VALID_STRING_REGEX.match(str) }
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
# Converts the passed string to a range (see range_string? above for the string's format).
|
|
46
|
-
# If the passed parameter is a Range already, returns it unchanged.
|
|
47
|
+
# If the passed parameter is nil or is a Range already, returns it unchanged.
|
|
47
48
|
# This eliminates the need for the caller to do their own type test.
|
|
48
49
|
def to_range(object)
|
|
49
|
-
return object if object.is_a?(Range)
|
|
50
|
+
return object if object.is_a?(Range) || object.nil?
|
|
50
51
|
unless range_string?(object)
|
|
51
52
|
raise ArgumentError.new("Invalid argument (#{object}); Range must be 2 numbers separated by '..', e.g. 10..20 or 900K..1M")
|
|
52
53
|
end
|
|
@@ -55,11 +56,11 @@ module KmgtNumericString
|
|
|
55
56
|
end
|
|
56
57
|
|
|
57
58
|
# Converts a string such as '3' or '1k..2k' into a number or range.
|
|
58
|
-
# If an Integer or Range is passed, it is returned unchanged.
|
|
59
|
+
# If nil or an Integer or Range is passed, it is returned unchanged.
|
|
59
60
|
# This eliminates the need for the caller to do their own type test.
|
|
60
61
|
def to_number_or_range(object)
|
|
61
62
|
case object
|
|
62
|
-
when Integer, Range
|
|
63
|
+
when Integer, Range, NilClass
|
|
63
64
|
object
|
|
64
65
|
when String
|
|
65
66
|
range_string?(object) ? to_range(object) : to_number(object)
|
data/lib/trick_bag/version.rb
CHANGED
|
@@ -39,6 +39,10 @@ end
|
|
|
39
39
|
expect(to_number('-10k')).to eq(-10 * 1000)
|
|
40
40
|
expect(to_number('-10')).to eq(-10)
|
|
41
41
|
end
|
|
42
|
+
|
|
43
|
+
specify 'nil is returned unchanged' do
|
|
44
|
+
expect(to_number(nil)).to eq(nil)
|
|
45
|
+
end
|
|
42
46
|
end
|
|
43
47
|
|
|
44
48
|
|
|
@@ -58,6 +62,10 @@ end
|
|
|
58
62
|
expect(range_string?('-1..1')).to eq(true)
|
|
59
63
|
expect(range_string?('10K..10M')).to eq(true)
|
|
60
64
|
end
|
|
65
|
+
|
|
66
|
+
specify 'nil returns false' do
|
|
67
|
+
expect(range_string?(nil)).to eq(false)
|
|
68
|
+
end
|
|
61
69
|
end
|
|
62
70
|
|
|
63
71
|
|
|
@@ -70,6 +78,10 @@ end
|
|
|
70
78
|
specify 'ascending ranges are supported' do
|
|
71
79
|
expect(to_range('3k..4k')).to eq((3000..4000))
|
|
72
80
|
end
|
|
81
|
+
|
|
82
|
+
specify 'nil is returned unchanged' do
|
|
83
|
+
expect(to_range(nil)).to eq(nil)
|
|
84
|
+
end
|
|
73
85
|
end
|
|
74
86
|
|
|
75
87
|
context '.to_number_or_range' do
|
|
@@ -78,6 +90,10 @@ end
|
|
|
78
90
|
expect(to_number_or_range('12k')).to eq(12_000)
|
|
79
91
|
expect(to_number_or_range('12k..24k')).to eq(12_000..24_000)
|
|
80
92
|
end
|
|
93
|
+
|
|
94
|
+
specify 'nil is returned unchanged' do
|
|
95
|
+
expect(to_number_or_range(nil)).to eq(nil)
|
|
96
|
+
end
|
|
81
97
|
end
|
|
82
98
|
end
|
|
83
99
|
end
|