app-configs 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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