ns-options 0.1.1 → 0.2.0
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.
- data/README.markdown +273 -16
- data/lib/ns-options/boolean.rb +25 -0
- data/lib/ns-options/errors/invalid_name.rb +15 -0
- data/lib/ns-options/has_options.rb +33 -7
- data/lib/ns-options/helper/advisor.rb +68 -0
- data/lib/ns-options/helper.rb +42 -19
- data/lib/ns-options/namespace.rb +55 -33
- data/lib/ns-options/namespaces.rb +1 -1
- data/lib/ns-options/option.rb +30 -28
- data/lib/ns-options/options.rb +29 -17
- data/lib/ns-options/version.rb +1 -1
- data/lib/ns-options.rb +9 -0
- data/log/.gitkeep +0 -0
- data/ns-options.gemspec +1 -1
- data/test/helper.rb +3 -8
- data/test/integration/app_test.rb +12 -6
- data/test/integration/user_test.rb +40 -2
- data/test/irb.rb +9 -0
- data/test/support/app.rb +8 -2
- data/test/support/user.rb +12 -3
- data/test/unit/ns-options/{option/boolean_test.rb → boolean_test.rb} +21 -5
- data/test/unit/ns-options/helper/advisor_test.rb +144 -0
- data/test/unit/ns-options/helper_test.rb +29 -40
- data/test/unit/ns-options/namespace_test.rb +186 -17
- data/test/unit/ns-options/namespaces_test.rb +1 -1
- data/test/unit/ns-options/option_test.rb +145 -52
- data/test/unit/ns-options/options_test.rb +83 -89
- metadata +18 -11
- data/lib/ns-options/option/boolean.rb +0 -27
@@ -27,6 +27,10 @@ class NsOptions::Option
|
|
27
27
|
should "return true with a call to #required?" do
|
28
28
|
assert_equal true, subject.required?
|
29
29
|
end
|
30
|
+
should "allow setting the value to nil" do
|
31
|
+
subject.value = nil
|
32
|
+
assert_nil subject.value
|
33
|
+
end
|
30
34
|
end
|
31
35
|
|
32
36
|
class IsSetTest < BaseTest
|
@@ -40,22 +44,28 @@ class NsOptions::Option
|
|
40
44
|
|
41
45
|
end
|
42
46
|
@special = NsOptions::Option.new(:no_blank, @type_class)
|
47
|
+
|
48
|
+
@boolean = NsOptions::Option.new(:boolean, NsOptions::Boolean)
|
43
49
|
end
|
44
50
|
|
45
|
-
should "return
|
46
|
-
@option.value =
|
47
|
-
assert_equal true, @option.is_set?
|
48
|
-
@option.value = false
|
51
|
+
should "return appropriately" do
|
52
|
+
@option.value = "abc"
|
49
53
|
assert_equal true, @option.is_set?
|
50
54
|
@option.value = nil
|
51
55
|
assert_equal false, @option.is_set?
|
56
|
+
@boolean.value = true
|
57
|
+
assert_equal true, @boolean.is_set?
|
58
|
+
@boolean.value = false
|
59
|
+
assert_equal true, @boolean.is_set?
|
52
60
|
end
|
53
|
-
|
61
|
+
|
62
|
+
should "use the type class's is_set method if available" do
|
54
63
|
@special.value = "not blank"
|
55
64
|
assert_equal true, @special.is_set?
|
56
65
|
@special.value = " "
|
57
66
|
assert_equal false, @special.is_set?
|
58
67
|
end
|
68
|
+
|
59
69
|
end
|
60
70
|
|
61
71
|
class EqualityOperatorTest < BaseTest
|
@@ -101,30 +111,30 @@ class NsOptions::Option
|
|
101
111
|
end
|
102
112
|
end
|
103
113
|
|
104
|
-
class
|
105
|
-
desc "with
|
114
|
+
class WithSymbolTypeClasstest < BaseTest
|
115
|
+
desc "with a Symbol as a type class"
|
106
116
|
setup do
|
107
|
-
@option = NsOptions::Option.new(:something,
|
117
|
+
@option = NsOptions::Option.new(:something, Symbol)
|
108
118
|
end
|
109
|
-
subject{ @option }
|
110
119
|
|
111
|
-
should "
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
subject.value =
|
117
|
-
assert_equal
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
120
|
+
should "allow setting it with any object that responds to #to_sym" do
|
121
|
+
value = "amazing"
|
122
|
+
subject.value = value
|
123
|
+
assert_equal value.to_sym, subject.value
|
124
|
+
value = :another
|
125
|
+
subject.value = value
|
126
|
+
assert_equal value, subject.value
|
127
|
+
object_class = Class.new do
|
128
|
+
def to_sym; :object_sym; end
|
129
|
+
end
|
130
|
+
value = object_class.new
|
131
|
+
subject.value = value
|
132
|
+
assert_equal object_class.new.to_sym, subject.value
|
123
133
|
end
|
124
|
-
should "
|
125
|
-
|
126
|
-
|
127
|
-
|
134
|
+
should "error on anything that doesn't define #to_sym" do
|
135
|
+
assert_raises(NoMethodError) do
|
136
|
+
subject.value = true
|
137
|
+
end
|
128
138
|
end
|
129
139
|
end
|
130
140
|
|
@@ -156,26 +166,6 @@ class NsOptions::Option
|
|
156
166
|
end
|
157
167
|
end
|
158
168
|
|
159
|
-
class WithTrueFalseClassTest < BaseTest
|
160
|
-
desc "with a TrueClass/FalseClass as a type class (happens with dynamic writers)"
|
161
|
-
setup do
|
162
|
-
@true_option = NsOptions::Option.new(:something, TrueClass)
|
163
|
-
@true_option.value = true
|
164
|
-
@false_option = NsOptions::Option.new(:else, FalseClass)
|
165
|
-
@false_option.value = false
|
166
|
-
end
|
167
|
-
subject{ @true_option }
|
168
|
-
|
169
|
-
should "have used NsOptions::Option::Boolean for their type class" do
|
170
|
-
assert_equal NsOptions::Option::Boolean, @true_option.type_class
|
171
|
-
assert_equal NsOptions::Option::Boolean, @false_option.type_class
|
172
|
-
end
|
173
|
-
should "return the 'true' or 'false' value instead of the NsOptions::Option::Boolean object" do
|
174
|
-
assert_equal true, @true_option.value
|
175
|
-
assert_equal false, @false_option.value
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
169
|
class WithoutTypeClassTest < BaseTest
|
180
170
|
desc "without a type class provided"
|
181
171
|
setup do
|
@@ -183,33 +173,33 @@ class NsOptions::Option
|
|
183
173
|
end
|
184
174
|
subject{ @option }
|
185
175
|
|
186
|
-
should "have default it to
|
187
|
-
assert_equal
|
176
|
+
should "have default it to Object" do
|
177
|
+
assert_equal Object, subject.type_class
|
188
178
|
end
|
189
179
|
end
|
190
|
-
|
180
|
+
|
191
181
|
class WithAValueOfTheSameClassTest < BaseTest
|
192
182
|
desc "with a value of the same class"
|
193
183
|
setup do
|
194
184
|
@class = Class.new
|
195
185
|
@option = NsOptions::Option.new(:something, @class)
|
196
186
|
end
|
197
|
-
|
187
|
+
|
198
188
|
should "use the object passed to it instead of creating a new one" do
|
199
189
|
value = @class.new
|
200
190
|
@option.value = value
|
201
191
|
assert_same value, @option.value
|
202
192
|
end
|
203
193
|
end
|
204
|
-
|
194
|
+
|
205
195
|
class WithAValueKindOfTest < BaseTest
|
206
|
-
desc "with a value is a kind of the class"
|
196
|
+
desc "with a value that is a kind of the class"
|
207
197
|
setup do
|
208
198
|
@class = Class.new
|
209
199
|
@child_class = Class.new(@class)
|
210
200
|
@option = NsOptions::Option.new(:something, @class)
|
211
201
|
end
|
212
|
-
|
202
|
+
|
213
203
|
should "use the object passed to it instead of creating a new one" do
|
214
204
|
value = @child_class.new
|
215
205
|
@option.value = value
|
@@ -217,4 +207,107 @@ class NsOptions::Option
|
|
217
207
|
end
|
218
208
|
end
|
219
209
|
|
210
|
+
class ProcHandlingTests < BaseTest
|
211
|
+
setup do
|
212
|
+
class KindOfProc < Proc; end
|
213
|
+
@a_string = "a string"
|
214
|
+
@direct_proc = Proc.new { "I can haz eval: #{@a_string}" }
|
215
|
+
@subclass_proc = KindOfProc.new { 12345 }
|
216
|
+
@direct_opt = NsOptions::Option.new(:direct, Proc)
|
217
|
+
@subclass_opt = NsOptions::Option.new(:subclass, KindOfProc)
|
218
|
+
end
|
219
|
+
|
220
|
+
end
|
221
|
+
|
222
|
+
class WithProcTypeClassTests < ProcHandlingTests
|
223
|
+
desc "with Proc as a type class"
|
224
|
+
setup do
|
225
|
+
@direct_opt.value = @direct_proc
|
226
|
+
@subclass_opt.value = @subclass_proc
|
227
|
+
end
|
228
|
+
|
229
|
+
should "allow setting it with a proc" do
|
230
|
+
assert_kind_of Proc, @direct_opt.value
|
231
|
+
assert_kind_of KindOfProc, @subclass_opt.value
|
232
|
+
assert_equal @direct_proc, @direct_opt.value
|
233
|
+
assert_equal @subclass_proc, @subclass_opt.value
|
234
|
+
end
|
235
|
+
|
236
|
+
end
|
237
|
+
|
238
|
+
class WithLazyProcTests < ProcHandlingTests
|
239
|
+
desc "with a Proc value but no Proc-ancestor type class"
|
240
|
+
setup do
|
241
|
+
@string_opt = NsOptions::Option.new(:string, String)
|
242
|
+
end
|
243
|
+
|
244
|
+
should "set the Proc and coerce the Proc return val when read" do
|
245
|
+
@string_opt.value = @direct_proc
|
246
|
+
assert_kind_of String, @string_opt.value
|
247
|
+
assert_equal "I can haz eval: a string", @string_opt.value
|
248
|
+
|
249
|
+
@a_string = "a new string"
|
250
|
+
assert_equal "I can haz eval: a new string", @string_opt.value
|
251
|
+
|
252
|
+
@string_opt.value = @subclass_proc
|
253
|
+
assert_kind_of String, @string_opt.value
|
254
|
+
assert_equal "12345", @string_opt.value
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
258
|
+
class WithArgsTest < BaseTest
|
259
|
+
desc "with args rule"
|
260
|
+
setup do
|
261
|
+
@class = Class.new do
|
262
|
+
attr_accessor :args
|
263
|
+
def initialize(*args)
|
264
|
+
self.args = args
|
265
|
+
end
|
266
|
+
end
|
267
|
+
@value = "amazing"
|
268
|
+
end
|
269
|
+
|
270
|
+
class AsArrayTest < WithArgsTest
|
271
|
+
desc "as an array"
|
272
|
+
setup do
|
273
|
+
@args = [ true, false, { :hash => "yes" } ]
|
274
|
+
@option = NsOptions::Option.new(:something, @class, { :args => @args })
|
275
|
+
@option.value = @value
|
276
|
+
end
|
277
|
+
|
278
|
+
should "pass the args to the type class with the value" do
|
279
|
+
expected = @args.dup.insert(0, @value)
|
280
|
+
assert_equal expected, subject.value.args
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
class AsSingleValueTest < WithArgsTest
|
285
|
+
desc "as a single value"
|
286
|
+
setup do
|
287
|
+
@args = lambda{ "something" }
|
288
|
+
@option = NsOptions::Option.new(:something, @class, { :args => @args })
|
289
|
+
@option.value = @value
|
290
|
+
end
|
291
|
+
|
292
|
+
should "pass the single value to the type class with the value" do
|
293
|
+
expected = [*@args].insert(0, @value)
|
294
|
+
assert_equal expected, subject.value.args
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
class AsNilValueTest < WithArgsTest
|
299
|
+
desc "as a nil value"
|
300
|
+
setup do
|
301
|
+
@args = nil
|
302
|
+
@option = NsOptions::Option.new(:something, @class, { :args => @args })
|
303
|
+
@option.value = @value
|
304
|
+
end
|
305
|
+
|
306
|
+
should "just pass the value to the type class" do
|
307
|
+
expected = [@value]
|
308
|
+
assert_equal expected, subject.value.args
|
309
|
+
end
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
220
313
|
end
|
@@ -9,9 +9,9 @@ class NsOptions::Options
|
|
9
9
|
end
|
10
10
|
subject{ @options }
|
11
11
|
|
12
|
-
should have_accessors :key, :parent, :
|
13
|
-
should have_instance_method :
|
14
|
-
:
|
12
|
+
should have_accessors :key, :parent, :namespaces
|
13
|
+
should have_instance_method :add, :del, :remove, :get, :set, :fetch, :is_defined?,
|
14
|
+
:add_namespace, :get_namespace, :build_from
|
15
15
|
|
16
16
|
should "be a kind of Hash" do
|
17
17
|
assert_kind_of Hash, subject
|
@@ -31,7 +31,7 @@ class NsOptions::Options
|
|
31
31
|
assert_nil subject.parent
|
32
32
|
end
|
33
33
|
should "return a kind of NsOption::Namespaces with a call to #children" do
|
34
|
-
assert_kind_of NsOptions::Namespaces, subject.
|
34
|
+
assert_kind_of NsOptions::Namespaces, subject.namespaces
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -44,20 +44,20 @@ class NsOptions::Options
|
|
44
44
|
end
|
45
45
|
subject{ @options }
|
46
46
|
|
47
|
-
should "have added a
|
47
|
+
should "have added a object option on itself when adding :my_string" do
|
48
48
|
assert(option = subject[:my_string])
|
49
|
-
assert_equal
|
50
|
-
assert_equal({}, option.rules)
|
49
|
+
assert_equal Object, option.type_class
|
50
|
+
assert_equal({ :args => [] }, option.rules)
|
51
51
|
end
|
52
52
|
should "have added an integer option on itself when adding :my_integer" do
|
53
53
|
assert(option = subject[:my_integer])
|
54
54
|
assert_equal Integer, option.type_class
|
55
|
-
assert_equal({}, option.rules)
|
55
|
+
assert_equal({ :args => [] }, option.rules)
|
56
56
|
end
|
57
57
|
should "have added a float option on itself when adding :my_float" do
|
58
58
|
assert(option = subject[:my_float])
|
59
59
|
assert_equal Float, option.type_class
|
60
|
-
assert_equal(
|
60
|
+
assert_equal(1.0, option.rules[:default])
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -86,21 +86,6 @@ class NsOptions::Options
|
|
86
86
|
should "have returned the option's value" do
|
87
87
|
assert_equal @value, subject
|
88
88
|
end
|
89
|
-
|
90
|
-
class WithParentTest < GetTest
|
91
|
-
desc "with a parent"
|
92
|
-
setup do
|
93
|
-
@parent = NsOptions::Namespace.new(:child)
|
94
|
-
@parent.options = @options
|
95
|
-
@options = NsOptions::Options.new(:child, @parent)
|
96
|
-
@result = @options.get(:my_string)
|
97
|
-
end
|
98
|
-
subject{ @result }
|
99
|
-
|
100
|
-
should "have returned the parent's option's value" do
|
101
|
-
assert_equal @value, subject
|
102
|
-
end
|
103
|
-
end
|
104
89
|
end
|
105
90
|
|
106
91
|
class SetTest < BaseTest
|
@@ -116,36 +101,6 @@ class NsOptions::Options
|
|
116
101
|
end
|
117
102
|
end
|
118
103
|
|
119
|
-
class FetchTest < BaseTest
|
120
|
-
desc "fetch method"
|
121
|
-
setup do
|
122
|
-
option = @options.add(:my_string)
|
123
|
-
@result = @options.fetch(:my_string)
|
124
|
-
end
|
125
|
-
subject{ @result }
|
126
|
-
|
127
|
-
should "return the option definition for my_string" do
|
128
|
-
assert_kind_of NsOptions::Option, subject
|
129
|
-
assert_equal "my_string", subject.name
|
130
|
-
end
|
131
|
-
|
132
|
-
class WithAParentTest < FetchTest
|
133
|
-
desc "with a parent"
|
134
|
-
setup do
|
135
|
-
@parent = NsOptions::Namespace.new(:child)
|
136
|
-
@parent.options = @options
|
137
|
-
@options = NsOptions::Options.new(:child, @parent)
|
138
|
-
@result = @options.fetch(:my_string)
|
139
|
-
end
|
140
|
-
subject{ @result }
|
141
|
-
|
142
|
-
should "return the option definition for my_string from it's parent" do
|
143
|
-
assert_kind_of NsOptions::Option, subject
|
144
|
-
assert_equal "my_string", subject.name
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
104
|
class IsDefinedTest < BaseTest
|
150
105
|
desc "fetch method"
|
151
106
|
setup do
|
@@ -159,41 +114,6 @@ class NsOptions::Options
|
|
159
114
|
should "return false for an undefined option" do
|
160
115
|
assert_equal false, subject.is_defined?(:undefined)
|
161
116
|
end
|
162
|
-
|
163
|
-
class WithAParentTest < IsDefinedTest
|
164
|
-
desc "with a parent"
|
165
|
-
setup do
|
166
|
-
@parent = NsOptions::Namespace.new(:child)
|
167
|
-
@parent.options = @options
|
168
|
-
@options = NsOptions::Options.new(:child, @parent)
|
169
|
-
end
|
170
|
-
|
171
|
-
should "return true for an option defined on it's parent" do
|
172
|
-
assert_equal true, subject.is_defined?(:my_string)
|
173
|
-
end
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
class ParentOptionsTest < BaseTest
|
178
|
-
desc "parent_options method"
|
179
|
-
subject{ @options }
|
180
|
-
|
181
|
-
should "return nil" do
|
182
|
-
assert_nil subject.parent_options
|
183
|
-
end
|
184
|
-
|
185
|
-
class WithAParentTest < ParentOptionsTest
|
186
|
-
desc "with a parent"
|
187
|
-
setup do
|
188
|
-
@parent = NsOptions::Namespace.new(:child)
|
189
|
-
@parent.options = @options
|
190
|
-
@options = NsOptions::Options.new(:child, @parent)
|
191
|
-
end
|
192
|
-
|
193
|
-
should "return it's parent's options" do
|
194
|
-
assert_equal @parent.options, subject.parent_options
|
195
|
-
end
|
196
|
-
end
|
197
117
|
end
|
198
118
|
|
199
119
|
class RequiredSetTest < BaseTest
|
@@ -223,5 +143,79 @@ class NsOptions::Options
|
|
223
143
|
assert_equal true, subject.required_set?
|
224
144
|
end
|
225
145
|
end
|
146
|
+
|
147
|
+
class WithNamespaceTest < BaseTest
|
148
|
+
setup do
|
149
|
+
@namespace = @options.add_namespace(:something, :something)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
class AddNamespaceTest < WithNamespaceTest
|
154
|
+
desc "add_namespace method"
|
155
|
+
subject{ @options }
|
156
|
+
|
157
|
+
should "create a new namespace and add it to the options namespaces collection" do
|
158
|
+
assert_instance_of NsOptions::Namespace, @namespace
|
159
|
+
assert_equal @namespace, subject.namespaces[:something]
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
class GetNamespaceTest < WithNamespaceTest
|
164
|
+
desc "get_namespace method"
|
165
|
+
setup do
|
166
|
+
@got_namespace = @options.get_namespace(:something)
|
167
|
+
end
|
168
|
+
subject{ @got_namespace }
|
169
|
+
|
170
|
+
should "allow retrieving a namespace without having to access the namespaces directly" do
|
171
|
+
assert_equal @namespace, subject
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
class IsNamespaceDefinedTest < WithNamespaceTest
|
176
|
+
desc "is_namespace_defined? method"
|
177
|
+
setup do
|
178
|
+
@has_something = @options.is_namespace_defined?(:something)
|
179
|
+
@has_nothing = @options.is_namespace_defined?(:nothing)
|
180
|
+
end
|
181
|
+
|
182
|
+
should "return a boolean of whether or not the namespace is defined" do
|
183
|
+
assert_equal true, @has_something
|
184
|
+
assert_equal false, @has_nothing
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
class BuildFromTest < BaseTest
|
189
|
+
desc "build_from method"
|
190
|
+
setup do
|
191
|
+
@namespace = NsOptions::Namespace.new("something")
|
192
|
+
@from = NsOptions::Options.new(:something)
|
193
|
+
@from.add(:root)
|
194
|
+
@from.add_namespace(:else) do
|
195
|
+
option :stage
|
196
|
+
end
|
197
|
+
@options = @namespace.options
|
198
|
+
@options.build_from(@from, @namespace)
|
199
|
+
end
|
200
|
+
subject{ @options }
|
201
|
+
|
202
|
+
should "have copied the options" do
|
203
|
+
@from.each do |key, from_option|
|
204
|
+
option = subject[key]
|
205
|
+
assert_equal from_option.name, option.name
|
206
|
+
assert_equal from_option.type_class, option.type_class
|
207
|
+
assert_equal from_option.rules, option.rules
|
208
|
+
assert_not_same from_option, option
|
209
|
+
end
|
210
|
+
end
|
211
|
+
should "have copied the namespaces" do
|
212
|
+
@from.namespaces.each do |name, from_namespace|
|
213
|
+
namespace = subject.get_namespace(name)
|
214
|
+
assert_equal from_namespace.options.key, namespace.options.key
|
215
|
+
assert_equal from_namespace.options.parent, namespace.options.parent
|
216
|
+
assert_not_same from_namespace, namespace
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
226
220
|
|
227
221
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ns-options
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Collin Redding
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-11-28 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
type: :development
|
@@ -25,11 +25,11 @@ dependencies:
|
|
25
25
|
requirements:
|
26
26
|
- - ~>
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
hash:
|
28
|
+
hash: 5
|
29
29
|
segments:
|
30
30
|
- 0
|
31
|
-
-
|
32
|
-
version: "0.
|
31
|
+
- 7
|
32
|
+
version: "0.7"
|
33
33
|
version_requirements: *id001
|
34
34
|
name: assert
|
35
35
|
- !ruby/object:Gem::Dependency
|
@@ -62,25 +62,30 @@ files:
|
|
62
62
|
- README.markdown
|
63
63
|
- Rakefile
|
64
64
|
- lib/ns-options.rb
|
65
|
+
- lib/ns-options/boolean.rb
|
66
|
+
- lib/ns-options/errors/invalid_name.rb
|
65
67
|
- lib/ns-options/has_options.rb
|
66
68
|
- lib/ns-options/helper.rb
|
69
|
+
- lib/ns-options/helper/advisor.rb
|
67
70
|
- lib/ns-options/namespace.rb
|
68
71
|
- lib/ns-options/namespaces.rb
|
69
72
|
- lib/ns-options/option.rb
|
70
|
-
- lib/ns-options/option/boolean.rb
|
71
73
|
- lib/ns-options/options.rb
|
72
74
|
- lib/ns-options/version.rb
|
75
|
+
- log/.gitkeep
|
73
76
|
- ns-options.gemspec
|
74
77
|
- test/helper.rb
|
75
78
|
- test/integration/app_test.rb
|
76
79
|
- test/integration/user_test.rb
|
80
|
+
- test/irb.rb
|
77
81
|
- test/support/app.rb
|
78
82
|
- test/support/user.rb
|
83
|
+
- test/unit/ns-options/boolean_test.rb
|
79
84
|
- test/unit/ns-options/has_options_test.rb
|
85
|
+
- test/unit/ns-options/helper/advisor_test.rb
|
80
86
|
- test/unit/ns-options/helper_test.rb
|
81
87
|
- test/unit/ns-options/namespace_test.rb
|
82
88
|
- test/unit/ns-options/namespaces_test.rb
|
83
|
-
- test/unit/ns-options/option/boolean_test.rb
|
84
89
|
- test/unit/ns-options/option_test.rb
|
85
90
|
- test/unit/ns-options/options_test.rb
|
86
91
|
homepage:
|
@@ -120,12 +125,14 @@ test_files:
|
|
120
125
|
- test/helper.rb
|
121
126
|
- test/integration/app_test.rb
|
122
127
|
- test/integration/user_test.rb
|
128
|
+
- test/irb.rb
|
123
129
|
- test/support/app.rb
|
124
130
|
- test/support/user.rb
|
131
|
+
- test/unit/ns-options/boolean_test.rb
|
125
132
|
- test/unit/ns-options/has_options_test.rb
|
133
|
+
- test/unit/ns-options/helper/advisor_test.rb
|
126
134
|
- test/unit/ns-options/helper_test.rb
|
127
135
|
- test/unit/ns-options/namespace_test.rb
|
128
136
|
- test/unit/ns-options/namespaces_test.rb
|
129
|
-
- test/unit/ns-options/option/boolean_test.rb
|
130
137
|
- test/unit/ns-options/option_test.rb
|
131
138
|
- test/unit/ns-options/options_test.rb
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module NsOptions
|
2
|
-
class Option
|
3
|
-
|
4
|
-
class Boolean
|
5
|
-
attr_accessor :actual
|
6
|
-
|
7
|
-
def initialize(value)
|
8
|
-
self.actual = value
|
9
|
-
end
|
10
|
-
|
11
|
-
def actual=(new_value)
|
12
|
-
@actual = self.convert(new_value)
|
13
|
-
end
|
14
|
-
|
15
|
-
protected
|
16
|
-
|
17
|
-
def convert(value)
|
18
|
-
if [ nil, 0, '0', false, 'false' ].include?(value)
|
19
|
-
false
|
20
|
-
elsif value
|
21
|
-
true
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|