env_bang 0.4.0 → 0.4.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/.travis.yml +11 -1
- data/lib/env_bang.rb +3 -0
- data/lib/env_bang/classes.rb +21 -3
- data/lib/env_bang/version.rb +1 -1
- data/test/env_bang_test.rb +44 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40326b30460e728e3e5da019de6cfc93ae84b32c
|
4
|
+
data.tar.gz: 3be97c644bcad37d63d69ec8314cef353596f1a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c43cd17a437cc0b8e6b2ecdc666cd19a9d5f989ba9dad8c51792ca50a9f6ade297df55761f50de2d47581d7b0b94f50afe21921934d5ceca4df759ff54027ad
|
7
|
+
data.tar.gz: 5ce51c4a23064f9402672d56ef018ba2e10a056d972ff07830651ef6b2f976457390147fdbc11520ff55bf627811164bae37d92a285318499d401b1b68dcc275
|
data/.travis.yml
CHANGED
data/lib/env_bang.rb
CHANGED
data/lib/env_bang/classes.rb
CHANGED
@@ -23,10 +23,13 @@ class ENV_BANG
|
|
23
23
|
def Hash(value, options)
|
24
24
|
key_options = options.merge(class: options.fetch(:keys, Symbol))
|
25
25
|
value_options = options.merge(class: options.fetch(:of, default_class))
|
26
|
+
sep = options.fetch(:sep, ',')
|
27
|
+
val_sep = options.fetch(:val_sep, ':')
|
28
|
+
|
26
29
|
{}.tap do |h|
|
27
|
-
value.split(
|
28
|
-
key, value = pair.split(
|
29
|
-
h[cast(key.strip, key_options)] = cast(value.strip, value_options)
|
30
|
+
value.split(sep).each do |pair|
|
31
|
+
key, value = pair.split(val_sep, 2)
|
32
|
+
h[cast(key.to_s.strip, key_options)] = cast(value.to_s.strip, value_options)
|
30
33
|
end
|
31
34
|
end
|
32
35
|
end
|
@@ -66,6 +69,21 @@ class ENV_BANG
|
|
66
69
|
def URI(value, options)
|
67
70
|
Kernel.URI(value)
|
68
71
|
end
|
72
|
+
|
73
|
+
def Date(value, options)
|
74
|
+
require 'date'
|
75
|
+
Date.parse(value)
|
76
|
+
end
|
77
|
+
|
78
|
+
def DateTime(value, options)
|
79
|
+
require 'date'
|
80
|
+
DateTime.parse(value)
|
81
|
+
end
|
82
|
+
|
83
|
+
def Time(value, options)
|
84
|
+
require 'time'
|
85
|
+
Time.parse(value)
|
86
|
+
end
|
69
87
|
end
|
70
88
|
end
|
71
89
|
end
|
data/lib/env_bang/version.rb
CHANGED
data/test/env_bang_test.rb
CHANGED
@@ -21,6 +21,17 @@ describe ENV_BANG do
|
|
21
21
|
}.must_raise KeyError
|
22
22
|
end
|
23
23
|
|
24
|
+
it "Raises exception immediately if value is invalid for the required type" do
|
25
|
+
proc {
|
26
|
+
ENV['NOT_A_DATE'] = '2017-02-30'
|
27
|
+
ENV!.use 'NOT_A_DATE', class: Date
|
28
|
+
}.must_raise ArgumentError
|
29
|
+
|
30
|
+
proc {
|
31
|
+
ENV!.use 'NOT_A_DATE_DEFAULT', class: Date, default: '2017-02-31'
|
32
|
+
}.must_raise ArgumentError
|
33
|
+
end
|
34
|
+
|
24
35
|
it "Uses provided default value if ENV var not already present" do
|
25
36
|
ENV.delete('WASNT_PRESENT')
|
26
37
|
|
@@ -100,10 +111,10 @@ describe ENV_BANG do
|
|
100
111
|
end
|
101
112
|
|
102
113
|
it "Casts Hashes" do
|
103
|
-
ENV['HASH'] = 'one: two, three: four'
|
114
|
+
ENV['HASH'] = 'one: two, three: http://four.com'
|
104
115
|
ENV!.use 'HASH', class: Hash
|
105
116
|
|
106
|
-
ENV!['HASH'].must_equal({one: 'two', three: 'four'})
|
117
|
+
ENV!['HASH'].must_equal({one: 'two', three: 'http://four.com'})
|
107
118
|
end
|
108
119
|
|
109
120
|
it 'Casts Hashes of Integers' do
|
@@ -120,6 +131,13 @@ describe ENV_BANG do
|
|
120
131
|
ENV!['STRKEY_HASH'].must_equal({'one' => 'two', 'three' => 'four'})
|
121
132
|
end
|
122
133
|
|
134
|
+
it 'Casts Hashes with alternate separators' do
|
135
|
+
ENV['ALT_HASH'] = 'one:two = three; four,five=six'
|
136
|
+
ENV!.use 'ALT_HASH', class: Hash, sep: ';', val_sep: '='
|
137
|
+
|
138
|
+
ENV!['ALT_HASH'].must_equal({:'one:two' => 'three', :'four,five' => 'six'})
|
139
|
+
end
|
140
|
+
|
123
141
|
it "Casts true" do
|
124
142
|
ENV['TRUE'] = truthy_values.sample
|
125
143
|
ENV!.use 'TRUE', class: :boolean
|
@@ -148,6 +166,30 @@ describe ENV_BANG do
|
|
148
166
|
ENV!['FALSE'].class.must_equal String
|
149
167
|
end
|
150
168
|
|
169
|
+
it "casts Dates" do
|
170
|
+
ENV['A_DATE'] = '2005-05-05'
|
171
|
+
ENV!.use 'A_DATE', class: Date
|
172
|
+
|
173
|
+
ENV!['A_DATE'].class.must_equal Date
|
174
|
+
ENV!['A_DATE'].must_equal Date.new(2005, 5, 5)
|
175
|
+
end
|
176
|
+
|
177
|
+
it "casts DateTimes" do
|
178
|
+
ENV['A_DATETIME'] = '2005-05-05 5:05pm'
|
179
|
+
ENV!.use 'A_DATETIME', class: DateTime
|
180
|
+
|
181
|
+
ENV!['A_DATETIME'].class.must_equal DateTime
|
182
|
+
ENV!['A_DATETIME'].must_equal DateTime.new(2005, 5, 5, 17, 5)
|
183
|
+
end
|
184
|
+
|
185
|
+
it "casts Times" do
|
186
|
+
ENV['A_TIME'] = '2005-05-05 5:05pm'
|
187
|
+
ENV!.use 'A_TIME', class: Time
|
188
|
+
|
189
|
+
ENV!['A_TIME'].class.must_equal Time
|
190
|
+
ENV!['A_TIME'].must_equal Time.new(2005, 5, 5, 17, 5)
|
191
|
+
end
|
192
|
+
|
151
193
|
it "allows default class to be overridden" do
|
152
194
|
ENV!.default_class.must_equal :StringUnlessFalsey
|
153
195
|
ENV!.config { default_class String }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: env_bang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Camenisch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|