yaml-sugar 0.0.3 → 0.0.4

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
  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