opt_struct 0.7.1 → 0.7.2
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/opt_struct/class_methods.rb +16 -2
- data/lib/opt_struct/instance_methods.rb +10 -3
- data/opt_struct.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58d04b610dd9e01836ded937683e0454ab6f8ca6
|
4
|
+
data.tar.gz: 1313b9c2d0daab287f437a6ce225ffb23017b0d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c0052e8e964a8af261e45fef6c06c7ab11c801832464352c447a5319e28e34d43added7597e8a7b49b7d14984e54a40ae356f30c566406f0c60d9235b40154c
|
7
|
+
data.tar.gz: c189970eee5b74c925ef31614fa50f419143db679dbdf9cb2d5627d7e8c05d440a5c3406180bdcf25f601fa722b28bd39726f46a7d25a002e835c23003abe6c2
|
@@ -20,7 +20,21 @@ module OptStruct
|
|
20
20
|
check_reserved_words(keys)
|
21
21
|
|
22
22
|
keys.each do |key|
|
23
|
-
define_method(key)
|
23
|
+
define_method(key) do
|
24
|
+
if options.key?(key)
|
25
|
+
options[key]
|
26
|
+
else
|
27
|
+
default = defaults[key]
|
28
|
+
case default
|
29
|
+
when Proc
|
30
|
+
instance_exec(&default)
|
31
|
+
when Symbol
|
32
|
+
respond_to?(default) ? send(default) : default
|
33
|
+
else
|
34
|
+
default
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
24
38
|
end
|
25
39
|
end
|
26
40
|
|
@@ -76,7 +90,7 @@ module OptStruct
|
|
76
90
|
|
77
91
|
private
|
78
92
|
|
79
|
-
RESERVED_WORDS = %i(class options fetch check_required_args check_required_keys)
|
93
|
+
RESERVED_WORDS = %i(class defaults options fetch check_required_args check_required_keys)
|
80
94
|
|
81
95
|
def check_reserved_words(words)
|
82
96
|
Array(words).each do |word|
|
@@ -2,7 +2,7 @@ module OptStruct
|
|
2
2
|
module InstanceMethods
|
3
3
|
def initialize(*arguments, **options)
|
4
4
|
@arguments = arguments
|
5
|
-
@options =
|
5
|
+
@options = options
|
6
6
|
check_required_args
|
7
7
|
check_required_keys
|
8
8
|
end
|
@@ -11,6 +11,10 @@ module OptStruct
|
|
11
11
|
options.fetch(*a, &b)
|
12
12
|
end
|
13
13
|
|
14
|
+
def defaults
|
15
|
+
self.class.defaults
|
16
|
+
end
|
17
|
+
|
14
18
|
private
|
15
19
|
|
16
20
|
def check_required_keys
|
@@ -23,10 +27,13 @@ module OptStruct
|
|
23
27
|
def check_required_args
|
24
28
|
self.class.expected_arguments.each_with_index do |arg, i|
|
25
29
|
if i >= @arguments.length
|
26
|
-
|
30
|
+
if options.key?(arg)
|
31
|
+
@arguments[i] = options.delete(arg)
|
32
|
+
elsif defaults.key?(arg)
|
33
|
+
@arguments[i] = defaults[arg]
|
34
|
+
else
|
27
35
|
raise ArgumentError, "missing required argument: #{arg}"
|
28
36
|
end
|
29
|
-
@arguments[i] = options.delete(arg)
|
30
37
|
end
|
31
38
|
end
|
32
39
|
end
|
data/opt_struct.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opt_struct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carl Zulauf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -85,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
85
|
version: '0'
|
86
86
|
requirements: []
|
87
87
|
rubyforge_project:
|
88
|
-
rubygems_version: 2.6.
|
88
|
+
rubygems_version: 2.6.8
|
89
89
|
signing_key:
|
90
90
|
specification_version: 4
|
91
91
|
summary: The Option Struct
|