opt_struct 0.8.3 → 0.9.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.
- checksums.yaml +5 -5
- data/lib/opt_struct/class_methods.rb +2 -20
- data/lib/opt_struct/instance_methods.rb +22 -11
- data/lib/opt_struct/version.rb +3 -0
- data/opt_struct.gemspec +5 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 54518e9eca18b69463f611c221bd896a94cbd5293bd804a23319b0dd7441573d
|
4
|
+
data.tar.gz: 36584d846f30ebf6517d541a31668678a1a8dbd9025a4d9bef032eea2372c50f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff0a53a81253354676e0578028d775785eda00d30c7201b3f36414009b26ad551893f789dc9aabf82ec212b7abd5544432a045cfe4f973e59136ffeec1258867
|
7
|
+
data.tar.gz: fbbd6f407b889e2cca7b6b9d5ce891cdad58bb73db10a1e437515d74d1221af442da0cbb7715f8f20db05ea0799035951e094d9ad5bece86775f7c05fdd17c1e
|
@@ -24,16 +24,7 @@ module OptStruct
|
|
24
24
|
if options.key?(key)
|
25
25
|
options[key]
|
26
26
|
elsif defaults.key?(key)
|
27
|
-
|
28
|
-
options[key] =
|
29
|
-
case default
|
30
|
-
when Proc
|
31
|
-
instance_exec(&default)
|
32
|
-
when Symbol
|
33
|
-
respond_to?(default) ? send(default) : default
|
34
|
-
else
|
35
|
-
default
|
36
|
-
end
|
27
|
+
options[key] = read_default_value(key)
|
37
28
|
end
|
38
29
|
end
|
39
30
|
end
|
@@ -72,17 +63,8 @@ module OptStruct
|
|
72
63
|
end
|
73
64
|
|
74
65
|
def expect_arguments(*arguments)
|
75
|
-
|
76
|
-
|
77
|
-
existing = expected_arguments.count
|
66
|
+
required(*arguments)
|
78
67
|
expected_arguments.concat(arguments)
|
79
|
-
|
80
|
-
arguments.each_with_index do |arg, i|
|
81
|
-
n = i + existing
|
82
|
-
define_method(arg) { @arguments[n] }
|
83
|
-
define_method("#{arg}=") { |value| @arguments[n] = value }
|
84
|
-
end
|
85
|
-
|
86
68
|
end
|
87
69
|
|
88
70
|
def expected_arguments
|
@@ -2,9 +2,8 @@ module OptStruct
|
|
2
2
|
module InstanceMethods
|
3
3
|
def initialize(*arguments, **options)
|
4
4
|
with_init_callbacks do
|
5
|
-
@arguments = arguments
|
6
5
|
@options = options
|
7
|
-
|
6
|
+
assign_arguments(arguments)
|
8
7
|
check_required_keys
|
9
8
|
end
|
10
9
|
end
|
@@ -25,20 +24,32 @@ module OptStruct
|
|
25
24
|
raise ArgumentError, "missing required keywords: #{missing.inspect}"
|
26
25
|
end
|
27
26
|
end
|
28
|
-
|
29
|
-
def
|
30
|
-
self.class.expected_arguments.
|
31
|
-
if
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
27
|
+
|
28
|
+
def assign_arguments(args)
|
29
|
+
self.class.expected_arguments.map.with_index do |key, i|
|
30
|
+
if args.length > i
|
31
|
+
options[key] = args[i]
|
32
|
+
elsif !options.key?(key)
|
33
|
+
if defaults.key?(key)
|
34
|
+
options[key] = read_default_value(key)
|
36
35
|
else
|
37
|
-
raise ArgumentError, "missing required argument: #{
|
36
|
+
raise ArgumentError, "missing required argument: #{key}"
|
38
37
|
end
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
41
|
+
|
42
|
+
def read_default_value(key)
|
43
|
+
default = defaults[key]
|
44
|
+
case default
|
45
|
+
when Proc
|
46
|
+
instance_exec(&default)
|
47
|
+
when Symbol
|
48
|
+
respond_to?(default) ? send(default) : default
|
49
|
+
else
|
50
|
+
default
|
51
|
+
end
|
52
|
+
end
|
42
53
|
|
43
54
|
def with_init_callbacks(&init_block)
|
44
55
|
callbacks = self.class.all_callbacks
|
data/opt_struct.gemspec
CHANGED
@@ -1,6 +1,10 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'opt_struct/version'
|
4
|
+
|
1
5
|
Gem::Specification.new do |spec|
|
2
6
|
spec.name = "opt_struct"
|
3
|
-
spec.version =
|
7
|
+
spec.version = OptStruct::VERSION
|
4
8
|
spec.authors = ["Carl Zulauf"]
|
5
9
|
spec.email = ["carl@linkleaf.com"]
|
6
10
|
|
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.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carl Zulauf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -64,6 +64,7 @@ files:
|
|
64
64
|
- lib/opt_struct/class_methods.rb
|
65
65
|
- lib/opt_struct/instance_methods.rb
|
66
66
|
- lib/opt_struct/module_methods.rb
|
67
|
+
- lib/opt_struct/version.rb
|
67
68
|
- opt_struct.gemspec
|
68
69
|
homepage: https://github.com/carlzulauf/opt_struct
|
69
70
|
licenses:
|
@@ -84,8 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
85
|
- !ruby/object:Gem::Version
|
85
86
|
version: '0'
|
86
87
|
requirements: []
|
87
|
-
|
88
|
-
rubygems_version: 2.6.13
|
88
|
+
rubygems_version: 3.0.3
|
89
89
|
signing_key:
|
90
90
|
specification_version: 4
|
91
91
|
summary: The Option Struct
|