yaml-sugar 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 360282871d8d48b8b93618a84438caa0417be95d
4
- data.tar.gz: 05e22a50b040c9e225cf722670f03523c8219a4f
3
+ metadata.gz: 21569db1e1ced65164e350b7ee9d8c841bda8be5
4
+ data.tar.gz: 90271943eedb38a75a02b52374236b09c77ee3d9
5
5
  SHA512:
6
- metadata.gz: b89f00a1ff34064adb9364f8141a2e2ee85408d95c7baac13d5e24c617caa09b63b54708dff9a735b187376e23db4353f6322b53926d8136dad4ed571822572c
7
- data.tar.gz: 54d9d328af1cee03b7197bd26eb735e8353a204f2e76412522edecb4e2e729d5c0d7732c1c26d3cda65ace7b0738e9c4ac6dbfa3710df55100804ff2d45585c9
6
+ metadata.gz: 31bea7de73aa69d2676b23aacb684e6a1241d71da606a887117ef676337b3ca8788bac6159151a8733d161d5590729ae1732a10ca38658ee3002ccab200d6933
7
+ data.tar.gz: 4970077c75b512fd152eb85870720f9bfa42792739e0e5de70d4697e32dfc5e213d94dcf53f25fc639e40253c2b02c18a88b0cf3ba2d8a22cb239602cb670b1a
@@ -1,4 +1,4 @@
1
1
  # hash-config bundle version
2
2
  module YamlSugar
3
- VERSION = '0.0.3'
3
+ VERSION = '0.0.4'
4
4
  end
@@ -2,24 +2,22 @@ require 'deep_merge'
2
2
  require 'find'
3
3
  require 'hashugar'
4
4
  require 'yaml'
5
+ require 'ostruct'
5
6
 
6
7
  # YamlSugar class
7
8
  module YamlSugar
9
+ attr_reader :config
10
+ class << self
11
+ attr_reader :class_instance_variable
12
+ end
13
+
8
14
  # Define on self, since it's a module method
9
15
  def self.method_missing(method_sym, *_args)
10
- config = {}
11
- @yaml_files.each do |yaml|
12
- if File.basename(yaml, File.extname(yaml)) == method_sym.to_s
13
- config.deep_merge! YAML.load_file(yaml)
14
- end
16
+ if @config.respond_to? method_sym
17
+ @config.send method_sym
18
+ else
19
+ super
15
20
  end
16
-
17
- config = config.to_hashugar
18
- self.class.instance_eval do
19
- define_method(method_sym) { config }
20
- end
21
-
22
- config
23
21
  end
24
22
 
25
23
  def self.set(attr, value)
@@ -28,12 +26,25 @@ module YamlSugar
28
26
  end
29
27
  end
30
28
 
31
- def self.load(dir)
29
+ def self.load(dir, deep_merge: false)
32
30
  fail "Parameter #{File.join(Dir.pwd, dir)} is not a valid directory" unless File.directory? dir
33
31
 
34
32
  @yaml_files ||= []
35
- Find.find(dir) do |path|
36
- @yaml_files << File.join(Dir.pwd, path) if path =~ /.*\.yml$/ or path =~ /.*\.yaml$/
33
+ @config ||= OpenStruct.new
34
+ Find.find(dir) do |yaml_file|
35
+ next unless yaml_file =~ /.*\.yml$/ or yaml_file =~ /.*\.yaml$/
36
+ new_config = YAML.load_file(yaml_file)
37
+
38
+ attr_name = File.basename(yaml_file, File.extname(yaml_file)).to_sym
39
+ if @config.respond_to?(attr_name)
40
+ old_config = @config.send(attr_name).to_hash
41
+ if deep_merge
42
+ new_config = new_config.deep_merge(old_config)
43
+ else
44
+ new_config = old_config.merge(new_config)
45
+ end
46
+ end
47
+ @config.send("#{attr_name}=", new_config.to_hashugar)
37
48
  end
38
49
  end
39
50
  end
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaml-sugar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Han
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-02 00:00:00.000000000 Z
11
+ date: 2016-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashugar
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: deep_merge
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '5.8'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.8'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  description: Read yaml files recursively from a given directory and return an OpenStruct
@@ -72,9 +72,9 @@ executables: []
72
72
  extensions: []
73
73
  extra_rdoc_files: []
74
74
  files:
75
- - lib/yaml-sugar.rb
76
75
  - lib/yaml-sugar/version.rb
77
76
  - lib/yaml-sugar/yaml-sugar.rb
77
+ - lib/yaml-sugar.rb
78
78
  homepage: https://github.com/hex0cter/yaml-sugar
79
79
  licenses:
80
80
  - MIT
@@ -85,17 +85,17 @@ require_paths:
85
85
  - lib
86
86
  required_ruby_version: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - '='
89
89
  - !ruby/object:Gem::Version
90
- version: '0'
90
+ version: 2.2.0
91
91
  required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - ">="
93
+ - - '>='
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  requirements: []
97
97
  rubyforge_project:
98
- rubygems_version: 2.5.1
98
+ rubygems_version: 2.0.14.1
99
99
  signing_key:
100
100
  specification_version: 4
101
101
  summary: Read yaml into an OpenStruct