app-configs 0.1.4 → 0.1.5

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
  SHA256:
3
- metadata.gz: f1445b70f46129c976ec7ff670035c80c77291eba1756b3bda209dd6fbf4855c
4
- data.tar.gz: 7a4d16f7f67add7f2fdf4bb0657893d35322aea7f47f1e05075b3a5e55835bfe
3
+ metadata.gz: 1604af5697161e0aee809f766c8925509481a4f54ed767986739dcdaea6dc906
4
+ data.tar.gz: 66ae81383a077848a80c9ea8241611408dbda5cb5eb2eaf43e30f1df44dbcc8a
5
5
  SHA512:
6
- metadata.gz: 9e8e58aaf80be49bb8c0250b79ae25d1527f20a30dac2d7868720a72ee5238e11527793f00c8c1aa1ba454ddb20c9f10ae1832d446540c05a2bf4865cb5dc4eb
7
- data.tar.gz: 78b2f709f4ba63113963f5b35a9194a99ff698f713925d2ce2c2beea74c71a568a32a0fb57876ad42404e2d094080b8b2a58dbac95237a6d0886889630cb4269
6
+ metadata.gz: 2c9e4056085ab2ed012e8e92c202a3a601083148b6deb19f6ae940103024b606edb109087f0d6064b19ad5eeec26013d936ceee14b282cdfab4e1dc390a73bf2
7
+ data.tar.gz: 4f61dd7411ad7f0dba986cd05fdb2c3aad58cf5deeef38f019e94a8e80558e9f6a4d8dcef4af03770cd9409c59c6ea9182b9fef02011862446e5ee7edd0ce269
data/lib/app/config.rb CHANGED
@@ -1,13 +1,26 @@
1
1
  require "app/config/version"
2
2
  require "app/config/base"
3
- require "app/config/deeply"
4
3
 
5
4
  module App
6
5
  module Config
7
6
  class Error < StandardError; end
8
7
 
8
+ DEFAULT_PATH = "$ROOT/config/defaults:$ROOT/config:$ROOT/var"
9
+
9
10
  class << self
10
- include App::Config::Base
11
+ def new( *args, **opts )
12
+ type = args.shift || :YAML
13
+ case type.to_sym
14
+ when :RUBY
15
+ App::Config::RUBY.new( **opts )
16
+ when :YAML
17
+ App::Config::YAML.new( **opts )
18
+ when :JSON
19
+ App::Config::JSON.new( **opts )
20
+ else
21
+ raise App::Config::Error, "unknown type: #{type}"
22
+ end
23
+ end
11
24
  end
12
25
 
13
26
  autoload :RUBY, "app/config/ruby"
@@ -2,26 +2,12 @@
2
2
  module App
3
3
  module Config
4
4
 
5
- class Error < StandardError; end
6
-
7
- DEFAULT_PATH = "$ROOT/config/defaults:$ROOT/config:$ROOT/var"
8
-
9
5
  module Base
10
-
11
- def new( *args, **opts )
12
- type = args.shift || :YAML
13
- case type.to_sym
14
- when :RUBY
15
- App::Config::RUBY.new( **opts )
16
- when :YAML
17
- App::Config::YAML.new( **opts )
18
- when :JSON
19
- App::Config::JSON.new( **opts )
20
- else
21
- raise App::Config::Error, "unknown type: #{type}"
6
+ def initialize
7
+ self.default_proc = proc do |hash, key|
8
+ hash[key] = {}
22
9
  end
23
10
  end
24
-
25
11
  end
26
12
 
27
13
  end
@@ -1,191 +1,196 @@
1
+ # frozen_string_literal: true
1
2
 
2
- ## deeply_symbolize_keys
3
+ module Deeply
3
4
 
4
- class Hash
5
- def deeply_symbolize_keys!
6
- temp = self.deeply_symbolize_keys
7
- self.clear
8
- self.merge!( temp )
9
- end
5
+ ## deeply_symbolize_keys
6
+
7
+ refine Hash do
8
+ def deeply_symbolize_keys!
9
+ temp = self.deeply_symbolize_keys
10
+ self.clear
11
+ self.merge!( temp )
12
+ end
10
13
 
11
- def deeply_symbolize_keys
12
- self.each_with_object({}) do |(key, obj), hash|
13
- k = key.to_s.to_sym
14
- case obj
15
- when Array, Hash
16
- hash[k] = obj.deeply_symbolize_keys
17
- else
18
- hash[k] = obj
14
+ def deeply_symbolize_keys
15
+ self.each_with_object({}) do |(key, obj), hash|
16
+ k = key.to_s.to_sym
17
+ case obj
18
+ when Array, Hash
19
+ hash[k] = obj.deeply_symbolize_keys
20
+ else
21
+ hash[k] = obj
22
+ end
19
23
  end
20
24
  end
21
25
  end
22
- end
23
26
 
24
- class Array
25
- def deeply_symbolize_keys!
26
- temp = self.deeply_symbolize_keys
27
- self.clear
28
- self.push( *temp )
29
- end
27
+ refine Array do
28
+ def deeply_symbolize_keys!
29
+ temp = self.deeply_symbolize_keys
30
+ self.clear
31
+ self.push( *temp )
32
+ end
30
33
 
31
- def deeply_symbolize_keys
32
- self.map do |obj|
33
- case obj
34
- when Array, Hash
35
- obj.deeply_symbolize_keys
36
- else
37
- obj.dup
34
+ def deeply_symbolize_keys
35
+ self.map do |obj|
36
+ case obj
37
+ when Array, Hash
38
+ obj.deeply_symbolize_keys
39
+ else
40
+ obj.dup
41
+ end
38
42
  end
39
43
  end
40
44
  end
41
- end
42
45
 
43
46
 
44
- ## deeply_stringify_keys
47
+ ## deeply_stringify_keys
45
48
 
46
- class Hash
47
- def deeply_stringify_keys!
48
- temp = self.deeply_stringify_keys
49
- self.clear
50
- self.merge!( temp )
51
- end
49
+ refine Hash do
50
+ def deeply_stringify_keys!
51
+ temp = self.deeply_stringify_keys
52
+ self.clear
53
+ self.merge!( temp )
54
+ end
52
55
 
53
- def deeply_stringify_keys
54
- self.each_with_object({}) do |(key, obj), hash|
55
- k = key.to_s
56
- case obj
57
- when Array, Hash
58
- hash[k] = obj.deeply_stringify_keys
59
- else
60
- hash[k] = obj
56
+ def deeply_stringify_keys
57
+ self.each_with_object({}) do |(key, obj), hash|
58
+ k = key.to_s
59
+ case obj
60
+ when Array, Hash
61
+ hash[k] = obj.deeply_stringify_keys
62
+ else
63
+ hash[k] = obj
64
+ end
61
65
  end
62
66
  end
63
67
  end
64
- end
65
68
 
66
- class Array
67
- def deeply_stringify_keys!
68
- temp = self.deeply_stringify_keys
69
- self.clear
70
- self.push( *temp )
71
- end
69
+ refine Array do
70
+ def deeply_stringify_keys!
71
+ temp = self.deeply_stringify_keys
72
+ self.clear
73
+ self.push( *temp )
74
+ end
72
75
 
73
- def deeply_stringify_keys
74
- self.map do |obj|
75
- case obj
76
- when Array, Hash
77
- obj.deeply_stringify_keys
78
- else
79
- obj.dup
76
+ def deeply_stringify_keys
77
+ self.map do |obj|
78
+ case obj
79
+ when Array, Hash
80
+ obj.deeply_stringify_keys
81
+ else
82
+ obj.dup
83
+ end
80
84
  end
81
85
  end
82
86
  end
83
- end
84
87
 
85
88
 
86
- ## deeply_merge
89
+ ## deeply_merge
87
90
 
88
- class Hash
89
- def deeply_merge( hash )
90
- raise ArgumentError( "type invalid. : %s" % hash ) unless hash.is_a? Hash
91
+ refine Hash do
92
+ def deeply_merge( hash )
93
+ raise ArgumentError( "type invalid. : %s" % hash ) unless hash.is_a? Hash
91
94
 
92
- temp = self.deeply_dup
93
- temp.deeply_merge!( hash )
94
- temp
95
- end
95
+ temp = self.deeply_dup
96
+ temp.deeply_merge!( hash )
97
+ temp
98
+ end
96
99
 
97
- def deeply_merge!( hash )
98
- raise ArgumentError( "type invalid. : %s" % hash ) unless hash.is_a? Hash
99
-
100
- hash.each do |key, obj|
101
- case obj
102
- when NilClass
103
- self[key] = nil
104
- when Hash
105
- self[key] = {} if self[key].nil?
106
- self[key].deeply_merge!(obj)
107
- else
108
- self[key] = obj.dup
100
+ def deeply_merge!( hash )
101
+ raise ArgumentError( "type invalid. : %s" % hash ) unless hash.is_a? Hash
102
+
103
+ hash.each do |key, obj|
104
+ case obj
105
+ when NilClass
106
+ self[key] = nil
107
+ when Hash
108
+ self[key] = {} if self[key].nil?
109
+ self[key].deeply_merge!(obj)
110
+ else
111
+ self[key] = obj.dup
112
+ end
109
113
  end
110
114
  end
111
115
  end
112
- end
113
116
 
114
117
 
115
- ## deeply_map
118
+ ## deeply_map
116
119
 
117
- class Hash
118
- def deeply_map( &block )
119
- temp = self.deeply_dup
120
- temp.deeply_map!( &block )
121
- temp
122
- end
120
+ refine Hash do
121
+ def deeply_map( &block )
122
+ temp = self.deeply_dup
123
+ temp.deeply_map!( &block )
124
+ temp
125
+ end
123
126
 
124
- def deeply_map!( &block )
125
- self.each do |key, obj|
126
- case obj
127
- when NilClass
128
- self[key] = nil
129
- when Array, Hash
130
- self[key].deeply_map!( &block )
131
- else
132
- self[key] = block.call( obj )
127
+ def deeply_map!( &block )
128
+ self.each do |key, obj|
129
+ case obj
130
+ when NilClass
131
+ self[key] = nil
132
+ when Array, Hash
133
+ self[key].deeply_map!( &block )
134
+ else
135
+ self[key] = block.call( obj )
136
+ end
133
137
  end
134
138
  end
135
139
  end
136
- end
137
140
 
138
- class Array
139
- def deeply_map( &block )
140
- temp = self.deeply_dup
141
- temp.deeply_map!( &block )
142
- temp
143
- end
141
+ refine Array do
142
+ def deeply_map( &block )
143
+ temp = self.deeply_dup
144
+ temp.deeply_map!( &block )
145
+ temp
146
+ end
144
147
 
145
- def deeply_map!( &block )
146
- self.map! do |obj|
147
- case obj
148
- when NilClass
149
- nil
150
- when Array, Hash
151
- obj.deeply_map!( &block )
152
- else
153
- block.call( obj )
148
+ def deeply_map!( &block )
149
+ self.map! do |obj|
150
+ case obj
151
+ when NilClass
152
+ nil
153
+ when Array, Hash
154
+ obj.deeply_map!( &block )
155
+ else
156
+ block.call( obj )
157
+ end
154
158
  end
155
159
  end
156
160
  end
157
- end
158
161
 
159
162
 
160
- ## deeply_dup
163
+ ## deeply_dup
161
164
 
162
- class Hash
163
- def deeply_dup
164
- self.each_with_object({}) do |(key, obj), hash|
165
- case obj
166
- when NilClass
167
- hash[key] = nil
168
- when Array, Hash
169
- hash[key] = obj.deeply_dup
170
- else
171
- hash[key] = obj.dup
165
+ refine Hash do
166
+ def deeply_dup
167
+ self.each_with_object({}) do |(key, obj), hash|
168
+ case obj
169
+ when NilClass
170
+ hash[key] = nil
171
+ when Array, Hash
172
+ hash[key] = obj.deeply_dup
173
+ else
174
+ hash[key] = obj.dup
175
+ end
172
176
  end
173
177
  end
174
178
  end
175
- end
176
179
 
177
- class Array
178
- def deeply_dup
179
- self.map do |obj|
180
- case obj
181
- when NilClass
182
- nil
183
- when Array, Hash
184
- obj.deeply_dup
185
- else
186
- obj.dup
180
+ refine Array do
181
+ def deeply_dup
182
+ self.map do |obj|
183
+ case obj
184
+ when NilClass
185
+ nil
186
+ when Array, Hash
187
+ obj.deeply_dup
188
+ else
189
+ obj.dup
190
+ end
187
191
  end
188
192
  end
189
193
  end
194
+
190
195
  end
191
196
 
@@ -3,19 +3,22 @@ require "erb"
3
3
  require "json"
4
4
  require "time"
5
5
  require "date"
6
+ require_relative "deeply"
6
7
 
7
8
  module App
8
9
  module Config
10
+ using Deeply
9
11
 
10
12
  class JSON < ::Hash
13
+ include App::Config::Base
14
+
11
15
  DEFAULT_MASK = "*.json"
12
16
  DEFAULT_SUFFIX = ".json"
17
+ DEFAULT_ENCODE = { allow_nan: true }
18
+ DEFAULT_DECODE = { allow_nan: true }
13
19
 
14
20
  def initialize( **opts )
15
- super
16
- self.default_proc = proc do |hash, key|
17
- hash[key] = {}
18
- end
21
+ super()
19
22
  reload( **opts )
20
23
  end
21
24
 
@@ -30,8 +33,8 @@ module App
30
33
  @vardir = @paths.last
31
34
  Dir.mkdir( @vardir ) unless ::Dir.exist?( @vardir )
32
35
 
33
- @encode = { allow_nan: true }.merge( encode || {} )
34
- @decode = { allow_nan: true }.merge( decode || {} )
36
+ @encode = DEFAULT_ENCODE.merge( encode || {} )
37
+ @decode = DEFAULT_DECODE.merge( decode || {} )
35
38
 
36
39
  load_overlay( DEFAULT_MASK )
37
40
  end
@@ -1,18 +1,21 @@
1
1
  require "fileutils"
2
2
  require "pp"
3
+ require_relative "deeply"
3
4
 
4
5
  module App
5
6
  module Config
7
+ using Deeply
6
8
 
7
9
  class RUBY < ::Hash
10
+ include App::Config::Base
11
+
8
12
  DEFAULT_MASK = "*.rb"
9
13
  DEFAULT_SUFFIX = ".rb"
14
+ DEFAULT_ENCODE = {}
15
+ DEFAULT_DECODE = {}
10
16
 
11
17
  def initialize( **opts )
12
- super
13
- self.default_proc = proc do |hash, key|
14
- hash[key] = {}
15
- end
18
+ super()
16
19
  reload( **opts )
17
20
  end
18
21
 
@@ -27,8 +30,8 @@ module App
27
30
  @vardir = @paths.last
28
31
  Dir.mkdir( @vardir ) unless ::Dir.exist?( @vardir )
29
32
 
30
- @encode = {}.merge( encode || {} )
31
- @decode = {}.merge( decode || {} )
33
+ @encode = DEFAULT_ENCODE.merge( encode || {} )
34
+ @decode = DEFAULT_DECODE.merge( decode || {} )
32
35
 
33
36
  load_overlay( DEFAULT_MASK )
34
37
  end
@@ -65,10 +68,14 @@ module App
65
68
  pathname = savepathname(section)
66
69
  hash = { section => self[section] }.deeply_stringify_keys
67
70
  ::File.open( pathname, "w" ) do |file|
68
- file.puts( hash.pretty_inspect )
71
+ file.puts( pretty_text( hash ) )
69
72
  end
70
73
  end
71
74
 
75
+ def pretty_text( hash )
76
+ hash.pretty_inspect
77
+ end
78
+
72
79
  # remove and load configuration.
73
80
  def reset( section )
74
81
  raise ArgumentError, "'#{ section }' is not String." unless String === section
@@ -1,5 +1,5 @@
1
1
  module App
2
2
  module Config
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
@@ -1,19 +1,22 @@
1
1
  require "fileutils"
2
2
  require "erb"
3
3
  require "yaml"
4
+ require_relative "deeply"
4
5
 
5
6
  module App
6
7
  module Config
8
+ using Deeply
7
9
 
8
10
  class YAML < ::Hash
11
+ include App::Config::Base
12
+
9
13
  DEFAULT_MASK = "*.{yml,yaml}"
10
14
  DEFAULT_SUFFIX = ".yaml"
15
+ DEFAULT_ENCODE = {}
16
+ DEFAULT_DECODE = {}
11
17
 
12
18
  def initialize( **opts )
13
- super
14
- self.default_proc = proc do |hash, key|
15
- hash[key] = {}
16
- end
19
+ super()
17
20
  reload( **opts )
18
21
  end
19
22
 
@@ -28,8 +31,8 @@ module App
28
31
  @vardir = @paths.last
29
32
  Dir.mkdir( @vardir ) unless ::Dir.exist?( @vardir )
30
33
 
31
- @encode = {}.merge( encode || {} )
32
- @decode = {}.merge( decode || {} )
34
+ @encode = DEFAULT_ENCODE.merge( encode || {} )
35
+ @decode = DEFAULT_DECODE.merge( decode || {} )
33
36
 
34
37
  load_overlay( DEFAULT_MASK )
35
38
  end
@@ -67,10 +70,14 @@ module App
67
70
  pathname = savepathname(section)
68
71
  hash = { section => self[section] }.deeply_stringify_keys
69
72
  ::File.open( pathname, "w" ) do |file|
70
- file.puts( ::YAML.dump( hash, **@encode ) )
73
+ file.puts( pretty_text( hash ) )
71
74
  end
72
75
  end
73
76
 
77
+ def pretty_text( hash )
78
+ ::YAML.dump( hash, **@encode )
79
+ end
80
+
74
81
  # remove and load configuration.
75
82
  def reset( section )
76
83
  raise ArgumentError, "'#{ section }' is not String." unless String === section
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app-configs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - arimay
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-27 00:00:00.000000000 Z
11
+ date: 2021-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake