yaml-ostruct 0.2.0 → 0.3.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/lib/yaml/ostruct.rb +9 -4
- data/lib/yaml/version.rb +1 -1
- data/lib/yaml/yaml_ostruct_impl.rb +13 -11
- metadata +2 -2
data/lib/yaml/ostruct.rb
CHANGED
@@ -4,8 +4,8 @@ require 'yaml/yaml_ostruct_impl'
|
|
4
4
|
module YamlOstruct
|
5
5
|
attr_reader :config
|
6
6
|
|
7
|
-
def self.new
|
8
|
-
YamlOstructImpl.new
|
7
|
+
def self.new(args = {})
|
8
|
+
YamlOstructImpl.new args
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.clear
|
@@ -17,8 +17,13 @@ module YamlOstruct
|
|
17
17
|
@config.send method_sym, *args
|
18
18
|
end
|
19
19
|
|
20
|
-
def self.load(dir
|
20
|
+
def self.load(dir)
|
21
21
|
@config ||= YamlOstructImpl.new
|
22
|
-
@config.load(dir
|
22
|
+
@config.load(dir)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.configure
|
26
|
+
@config ||= YamlOstructImpl.new
|
27
|
+
yield @config
|
23
28
|
end
|
24
29
|
end
|
data/lib/yaml/version.rb
CHANGED
@@ -8,10 +8,13 @@ module YamlOstruct
|
|
8
8
|
# YamlOstructImpl class
|
9
9
|
class YamlOstructImpl
|
10
10
|
attr_reader :config
|
11
|
-
|
11
|
+
attr_accessor :omit_path
|
12
|
+
attr_accessor :deep_merge
|
12
13
|
|
13
|
-
def initialize
|
14
|
+
def initialize(args = {})
|
14
15
|
@config = OpenStruct.new
|
16
|
+
@omit_path = args.fetch :omit_path, false
|
17
|
+
@deep_merge = args.fetch :deep_merge, false
|
15
18
|
end
|
16
19
|
|
17
20
|
def method_missing(method_sym, *args)
|
@@ -26,18 +29,17 @@ module YamlOstruct
|
|
26
29
|
end
|
27
30
|
end
|
28
31
|
|
29
|
-
def load(dir
|
32
|
+
def load(dir)
|
30
33
|
fail "Parameter #{File.join(Dir.pwd, dir)} is not a valid directory" unless File.directory? dir
|
31
34
|
|
32
|
-
if
|
33
|
-
load_omit_path(dir, @config
|
35
|
+
if @omit_path
|
36
|
+
load_omit_path(dir, @config)
|
34
37
|
else
|
35
|
-
|
38
|
+
load_recursively_with_path(dir, @config)
|
36
39
|
end
|
37
40
|
end
|
38
41
|
|
39
|
-
def load_omit_path(dir, config
|
40
|
-
deep_merge = args.fetch :deep_merge, false
|
42
|
+
def load_omit_path(dir, config)
|
41
43
|
fail "Parameter #{File.join(Dir.pwd, dir)} is not a valid directory" unless File.directory? dir
|
42
44
|
|
43
45
|
Find.find(dir) do |yaml_file|
|
@@ -47,7 +49,7 @@ module YamlOstruct
|
|
47
49
|
attr_name = File.basename(yaml_file, File.extname(yaml_file)).to_sym
|
48
50
|
if config.respond_to?(attr_name)
|
49
51
|
old_config = config.send(attr_name).to_hash
|
50
|
-
new_config = if deep_merge
|
52
|
+
new_config = if @deep_merge
|
51
53
|
new_config.deep_merge(old_config)
|
52
54
|
else
|
53
55
|
old_config.merge(new_config)
|
@@ -57,13 +59,13 @@ module YamlOstruct
|
|
57
59
|
end
|
58
60
|
end
|
59
61
|
|
60
|
-
def
|
62
|
+
def load_recursively_with_path(dir, config)
|
61
63
|
files = Dir.entries(dir)
|
62
64
|
files.each do |file_name|
|
63
65
|
next if file_name.start_with?('.')
|
64
66
|
if File.directory?("#{dir}/#{file_name}")
|
65
67
|
new_config = OpenStruct.new
|
66
|
-
config.send("#{file_name}=",
|
68
|
+
config.send("#{file_name}=", load_recursively_with_path("#{dir}/#{file_name}", new_config))
|
67
69
|
end
|
68
70
|
|
69
71
|
extension = File.extname(file_name)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yaml-ostruct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-06-
|
12
|
+
date: 2016-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hashugar
|