yamlcon 0.1.2 → 0.2.0

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: bf073fafcfc37a848b85cda5d8edb43350da69cb
4
- data.tar.gz: 26e7a381b68fbc33f8b99609805ef9633e67f8f2
3
+ metadata.gz: 92e277d4e8098428ee2875233838c32e90d950d1
4
+ data.tar.gz: 2287e132b79af1926a42d513166f5c801425cade
5
5
  SHA512:
6
- metadata.gz: 38f412b87a0beaa229648f84d703aba13dced5473774280a92ac7dc1e24340ad8b2e13d0ae3fc774ddd68c0e2a5957f32c6b59297e6d65d1c2326ded046c9a6f
7
- data.tar.gz: 17340c5900fc5536c7d5b04ba6060069efbb0796e89a37cbce9dc77638a4fbc0960b5b6f94bb9d651b23577355a87e432ac8c14c7836490781c8bf6f771d3920
6
+ metadata.gz: 813118ec6c7b20142233e4e17386d003e646d0bf8562f7c5efcf35098ddf29a477e7389d9f08e3fa107e301bbe1d1b7e63256849b374732352f171f6a3960b4d
7
+ data.tar.gz: 3d90efed5a51300c8160f06d5c37d648936d1131293eaa60aacc6b6d7eed8efce5dd7cc890eee1e28df4daaafc530dc7e96fd73aae7a48b1e38a5c2c8af82782
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  YAMLCon - YAML Config Loader
2
2
  ==================================================
3
3
 
4
- [![Gem Version](https://badge.fury.io/rb/yamlcon.svg)](http://badge.fury.io/rb/yamlcon)
5
- [![Build Status](https://travis-ci.org/DannyBen/yamlcon.svg?branch=master)](https://travis-ci.org/DannyBen/yamlcon)
6
- [![Code Climate](https://codeclimate.com/github/DannyBen/yamlcon/badges/gpa.svg)](https://codeclimate.com/github/DannyBen/yamlcon)
7
- [![Dependency Status](https://gemnasium.com/DannyBen/yamlcon.svg)](https://gemnasium.com/DannyBen/yamlcon)
4
+ [![Gem](https://img.shields.io/gem/v/yamlcon.svg?style=flat-square)](https://rubygems.org/gems/yamlcon)
5
+ [![Travis](https://img.shields.io/travis/DannyBen/yamlcon.svg?style=flat-square)](https://travis-ci.org/DannyBen/yamlcon)
6
+ [![Code Climate](https://img.shields.io/codeclimate/github/DannyBen/yamlcon.svg?style=flat-square)](https://codeclimate.com/github/DannyBen/yamlcon)
7
+ [![Gemnasium](https://img.shields.io/gemnasium/DannyBen/yamlcon.svg?style=flat-square)](https://gemnasium.com/DannyBen/yamlcon)
8
8
 
9
9
  --------------------------------------------------
10
10
 
@@ -22,12 +22,28 @@ gem 'yamlcon'
22
22
  Usage
23
23
  --------------------------------------------------
24
24
 
25
+ Load a single file
26
+
25
27
  ```ruby
26
- # Load
27
28
  config = YAML.load_config 'path/to/config.yml'
28
29
  puts config.any_option.or_nested
30
+ ```
31
+
32
+ You can then modify and save the file
29
33
 
30
- # Modify and save
34
+ ```ruby
31
35
  config.some_setting = 'value'
32
36
  YAML.save_config 'filename.yml', config
33
37
  ```
38
+
39
+ Load multiple files by providing a glob pattern. In this case, each loaded
40
+ file will get its own prefix, using the basename of the file.
41
+
42
+ For example, given two files `config/one.yml` and `config/two.yml`, you can
43
+ do this:
44
+
45
+ ```ruby
46
+ config = YAML.load_config 'config/*.yml'
47
+ puts config.one.option
48
+ puts config.two.option
49
+ ```
@@ -1,3 +1,3 @@
1
1
  module YAMLCon
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -2,9 +2,17 @@ require 'yaml'
2
2
  require 'ostruct'
3
3
 
4
4
  module YAMLCon
5
- def self.load_config(file)
6
- hash = YAML.load_file file
7
- hash_to_struct hash
5
+ def self.load_config(path)
6
+ if path.include? "*"
7
+ result = OpenStruct.new
8
+ Dir[path].each do |file|
9
+ basename = File.basename(file).sub(/\..*/, '')
10
+ result[basename] = hash_to_struct YAML.load_file(file)
11
+ end
12
+ result
13
+ else
14
+ hash_to_struct YAML.load_file(path)
15
+ end
8
16
  end
9
17
 
10
18
  def self.save_config(file, data)
@@ -29,9 +37,19 @@ module YAMLCon
29
37
  end
30
38
 
31
39
  def self.struct_to_hash(dot_notation)
40
+ return dot_notation unless dot_notation.is_a? OpenStruct
41
+
32
42
  hash = {}
33
43
  dot_notation.each_pair do |k, v|
34
- hash[k.to_s] = v.is_a?(OpenStruct) ? struct_to_hash(v) : v
44
+ if v.is_a? OpenStruct
45
+ value = struct_to_hash(v)
46
+ elsif v.is_a? Array
47
+ value = v.map { |val| struct_to_hash val }
48
+ else
49
+ value = v
50
+ end
51
+
52
+ hash[k.to_s] = value
35
53
  end
36
54
  hash
37
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yamlcon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-25 00:00:00.000000000 Z
11
+ date: 2016-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: runfile
@@ -16,28 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.6'
19
+ version: '0.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.6'
26
+ version: '0.7'
27
27
  - !ruby/object:Gem::Dependency
28
- name: run-gem-dev
28
+ name: runfile-tasks
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.3'
33
+ version: '0.4'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.3'
40
+ version: '0.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '9.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '9.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.11'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.11'
41
83
  description: Utility for easily loading YAML files as configuration objects
42
84
  email: db@dannyben.com
43
85
  executables: []
@@ -69,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
111
  version: '0'
70
112
  requirements: []
71
113
  rubyforge_project:
72
- rubygems_version: 2.4.6
114
+ rubygems_version: 2.5.1
73
115
  signing_key:
74
116
  specification_version: 4
75
117
  summary: YAML Config Loader