dotconfig 0.0.2
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/.gitignore +17 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile +11 -0
- data/LICENSE.txt +22 -0
- data/README.md +67 -0
- data/Rakefile +12 -0
- data/dotconfig.gemspec +27 -0
- data/lib/dot_config.rb +28 -0
- data/lib/dot_config/configuration.rb +78 -0
- data/lib/dot_config/version.rb +21 -0
- data/test/dot_config/configuration_test.rb +85 -0
- data/test/dot_config/version_test.rb +27 -0
- data/test/dot_config_test.rb +16 -0
- data/test/test_helper.rb +12 -0
- metadata +83 -0
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Geoffrey Roguelon
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# DotConfig
|
2
|
+
|
3
|
+
The DotConfig gem give you access to your configuration via the dot syntax. You instantiate DotConfig::Configuration with a Hash and you will retrieve the values in calling the key as method name.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'dot_config'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install dot_config
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
# Instantiate the configuration with the shortcut:
|
23
|
+
app_config = DotConfig.new(language: 'Ruby', framework: 'Ruby on Rails')
|
24
|
+
|
25
|
+
app_config.language #=> 'Ruby'
|
26
|
+
app_config.framework #=> 'Ruby on Rails'
|
27
|
+
app_config.version #=> NoMethodError: undefined method `version' for #<DotConfig::Configuration:0x007fb1fed55dd8>
|
28
|
+
|
29
|
+
# Instantiate the configuration without the shortcut:
|
30
|
+
app_config = DotConfig::Configuration.new(config: { language: 'Ruby', framework: 'Ruby on Rails' })
|
31
|
+
|
32
|
+
# Instantiate the configuration with an instance of DotConfig::Configuration:
|
33
|
+
app_config = DotConfig::Configuration.new
|
34
|
+
app_config.config = { language: 'Ruby', framework: 'Ruby on Rails' }
|
35
|
+
|
36
|
+
# Instantiate the configuration with a YAML file:
|
37
|
+
app_config = DotConfig.new('PATH/TO/YOUR/FILE.yml')
|
38
|
+
|
39
|
+
# Use a nested Hash:
|
40
|
+
app_config = DotConfig.new(language: { ruby: 'Ruby on Rails' })
|
41
|
+
|
42
|
+
app_config.language #=> #<DotConfig::Configuration:0x007fb1fed55dd8>
|
43
|
+
app_config.language.ruby #=> 'Ruby on Rails'
|
44
|
+
|
45
|
+
# Enable the modification:
|
46
|
+
app_config = DotConfig.new({ language: 'Ruby', framework: 'Ruby on Rails' }, true)
|
47
|
+
# or
|
48
|
+
app_config = DotConfig.new(true)
|
49
|
+
app_config.config = { language: 'Ruby', framework: 'Ruby on Rails' }
|
50
|
+
|
51
|
+
app_config.language #=> 'Ruby'
|
52
|
+
app_config.language = 'Python'
|
53
|
+
app_config.language #=> 'Python'
|
54
|
+
|
55
|
+
# Export the configuration:
|
56
|
+
app_config = DotConfig.new(language: { ruby: 'Ruby on Rails' })
|
57
|
+
|
58
|
+
app_config.to_hash #=> { language: { ruby: 'Ruby on Rails' } }
|
59
|
+
```
|
60
|
+
|
61
|
+
## Contributing
|
62
|
+
|
63
|
+
1. Fork it
|
64
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
65
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
66
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
67
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/dotconfig.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require 'dot_config/version'
|
7
|
+
|
8
|
+
Gem::Specification.new do |gem|
|
9
|
+
gem.name = 'dotconfig'
|
10
|
+
gem.version = DotConfig::Version::STRING
|
11
|
+
gem.authors = 'Geoffrey Roguelon'
|
12
|
+
gem.email = 'geoffrey.roguelon@gmail.com'
|
13
|
+
gem.description = %q{Simplify your configuration with: DotConfig.new(language: :ruby).language #=> 'Ruby'.}
|
14
|
+
gem.summary = %q{The DotConfig gem give you access to your configuration via the dot syntax. You instantiate DotConfig::Configuration with a Hash and you will retrieve the values in calling the key as method name.}
|
15
|
+
gem.license = 'MIT'
|
16
|
+
gem.homepage = 'http://github.com/GRoguelon/DotConfig'
|
17
|
+
gem.has_rdoc = false
|
18
|
+
|
19
|
+
gem.files = `git ls-files`.split($/)
|
20
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
21
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
22
|
+
gem.require_paths = %w{lib}
|
23
|
+
|
24
|
+
gem.add_development_dependency 'activesupport', '~> 3.0'
|
25
|
+
|
26
|
+
gem.required_ruby_version = '>= 1.9.1'
|
27
|
+
end
|
data/lib/dot_config.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'dot_config/configuration'
|
4
|
+
require 'dot_config/version'
|
5
|
+
require 'yaml'
|
6
|
+
|
7
|
+
# This module provides a way to define a set of configuration with read access
|
8
|
+
# only.
|
9
|
+
#
|
10
|
+
# @author {mailto:geoffrey.roguelon@gmail.com Geoffrey Roguelon}
|
11
|
+
module DotConfig
|
12
|
+
|
13
|
+
# Returns an instance of +Configuration+.
|
14
|
+
#
|
15
|
+
# @param [Hash] config The +Hash+ to convert in configuration or a +String+
|
16
|
+
# which represent the YAML file to load.
|
17
|
+
# @param [Boolean] writing Determines if the +Configuration+ is mutable.
|
18
|
+
# @return [Configuration] The +Configuration+ instance.
|
19
|
+
def self.new(config, writing = false)
|
20
|
+
if config.is_a?(Hash)
|
21
|
+
Configuration.new(config: config, writing: writing)
|
22
|
+
elsif config.is_a?(String) && File.exists?(config)
|
23
|
+
Configuration.new(config: YAML.load(File.read(config)), writing: writing)
|
24
|
+
else
|
25
|
+
raise ArgumentError, 'Unable to process the config argument'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module DotConfig
|
4
|
+
|
5
|
+
# This class gives you access to the configuration with dot syntax.
|
6
|
+
#
|
7
|
+
# @author {mailto:geoffrey.roguelon@gmail.com Geoffrey Roguelon}
|
8
|
+
class Configuration
|
9
|
+
|
10
|
+
# @!attribute config [r]
|
11
|
+
# @return [Hash] Stores the configuration like a +Hash+.
|
12
|
+
# @!attribute writing [r]
|
13
|
+
# @return [Hash] Determines if the configuration is mutable.
|
14
|
+
attr_reader :config, :writing
|
15
|
+
|
16
|
+
# Class constructor.
|
17
|
+
#
|
18
|
+
# @return [self]
|
19
|
+
def initialize(options = {})
|
20
|
+
raise ArgumentError, 'Invalid argument' if !options.is_a?(Hash)
|
21
|
+
|
22
|
+
@writing = options[:writing] ? true : false
|
23
|
+
self.config = options[:config] if options[:config].is_a?(Hash)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Assigns the configuration to the instance.
|
27
|
+
#
|
28
|
+
# @param [Hash] hash The +Hash+ configuration.
|
29
|
+
# @return [Hash] The +Hash+ configuration.
|
30
|
+
def config=(hash)
|
31
|
+
raise ArgumentError, 'Invalid argument' if !hash.is_a?(Hash) || hash.empty?
|
32
|
+
|
33
|
+
keys = (hash.keys + hash.keys.map { |key| "#{key}=" }).map(&:to_sym)
|
34
|
+
system = self.instance_variables + self.class.instance_methods(true)
|
35
|
+
|
36
|
+
if (conflict = keys & system).empty?
|
37
|
+
@config = Hash.new
|
38
|
+
hash.each do |key, value|
|
39
|
+
if value.is_a?(Hash)
|
40
|
+
@config[key.to_sym] = self.class.new(config: value, writing: @writing)
|
41
|
+
else
|
42
|
+
@config[key.to_sym] = value
|
43
|
+
end
|
44
|
+
end
|
45
|
+
else
|
46
|
+
raise "The key(s) (#{conflict.join(', ')}) is already used by Ruby"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Post treatment of call method which have failed.
|
51
|
+
#
|
52
|
+
# @param [Symbol] name The name of the method called.
|
53
|
+
# @param [Array] arguments The arguments provided with the call.
|
54
|
+
# @return [Object] The value of the config or call the super method.
|
55
|
+
def method_missing(name, *arguments)
|
56
|
+
if name[-1, 1] == '=' && @config.key?(name[0..-2].to_sym)
|
57
|
+
if @writing
|
58
|
+
@config[name[0..-2].to_sym] = arguments.first
|
59
|
+
else
|
60
|
+
raise 'The configuration is not allowed in writing'
|
61
|
+
end
|
62
|
+
elsif @config.key?(name)
|
63
|
+
@config[name]
|
64
|
+
else
|
65
|
+
super
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# Returns the config like a +Hash+.
|
70
|
+
#
|
71
|
+
# @return [Hash] The original hash with keys symbolized.
|
72
|
+
def to_hash
|
73
|
+
hash = Hash.new
|
74
|
+
@config.each { |k, v| hash[k] = v.is_a?(self.class) ? v.to_hash : v }
|
75
|
+
hash
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module DotConfig
|
4
|
+
|
5
|
+
# This module defines the version of the gem.
|
6
|
+
#
|
7
|
+
# @author {mailto:geoffrey.roguelon@gmail.com Geoffrey Roguelon}
|
8
|
+
module Version
|
9
|
+
|
10
|
+
# The major number version.
|
11
|
+
MAJOR = 0
|
12
|
+
# The minor number version.
|
13
|
+
MINOR = 0
|
14
|
+
# The tiny number version.
|
15
|
+
TINY = 2
|
16
|
+
# The pre realese number version.
|
17
|
+
PRE = nil
|
18
|
+
# The complete number version.
|
19
|
+
STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class DotConfig::ConfigurationTest < ActiveSupport::TestCase
|
6
|
+
|
7
|
+
test 'class is defined' do
|
8
|
+
assert DotConfig.const_defined?(:Configuration), 'Class undefined'
|
9
|
+
end
|
10
|
+
|
11
|
+
test 'default writing value' do
|
12
|
+
assert_equal false, Configuration.new.writing
|
13
|
+
assert_equal false, Configuration.new(writing: false).writing
|
14
|
+
assert_equal true, Configuration.new(writing: true).writing
|
15
|
+
end
|
16
|
+
|
17
|
+
test 'has new method' do
|
18
|
+
assert_respond_to Configuration, :new, 'Method undefined'
|
19
|
+
|
20
|
+
assert_nothing_raised(ArgumentError) do
|
21
|
+
Configuration.new
|
22
|
+
Configuration.new(writing: true)
|
23
|
+
Configuration.new(config: { hello: :world })
|
24
|
+
Configuration.new(config: { hello: :world }, writing: true)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
test 'new with config' do
|
29
|
+
simple_hash = { language: 'Ruby', framework: 'Ruby on Rails' }
|
30
|
+
config = Configuration.new(config: simple_hash)
|
31
|
+
|
32
|
+
assert_equal simple_hash.keys, config.config.keys, 'Loosen keys'
|
33
|
+
simple_hash.each { |key, value| assert_equal value, config.send(key.to_sym) }
|
34
|
+
end
|
35
|
+
|
36
|
+
test 'has config= method' do
|
37
|
+
assert_respond_to Configuration.new, :config=, 'Method undefined'
|
38
|
+
|
39
|
+
assert_nothing_raised(ArgumentError) do
|
40
|
+
Configuration.new.config = { hello: :world }
|
41
|
+
Configuration.new(writing: true).config = { hello: :world }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
test 'with nested config' do
|
46
|
+
nested_hash = { language: 'Ruby',
|
47
|
+
framework: { rails: [:active_record, :active_support] } }
|
48
|
+
config = Configuration.new(config: nested_hash)
|
49
|
+
|
50
|
+
assert_instance_of Configuration, config.framework, 'Not a Configuration'
|
51
|
+
assert_equal nested_hash[:framework][:rails], config.framework.rails
|
52
|
+
end
|
53
|
+
|
54
|
+
test 'getter method' do
|
55
|
+
nested_hash = { language: 'Ruby',
|
56
|
+
framework: { rails: [:active_record, :active_support] } }
|
57
|
+
config = Configuration.new(config: nested_hash)
|
58
|
+
|
59
|
+
assert_instance_of nested_hash[:language].class, config.language
|
60
|
+
assert_instance_of Configuration, config.framework
|
61
|
+
assert_instance_of nested_hash[:framework][:rails].class, config.framework.rails
|
62
|
+
end
|
63
|
+
|
64
|
+
test 'setter method' do
|
65
|
+
nested_hash = { language: 'Ruby',
|
66
|
+
framework: { rails: [:active_record, :active_support] } }
|
67
|
+
|
68
|
+
config = Configuration.new(config: nested_hash)
|
69
|
+
assert_raise(RuntimeError) { config.language = 'Python' }
|
70
|
+
assert_equal nested_hash[:language], config.language
|
71
|
+
|
72
|
+
config = Configuration.new(config: nested_hash, writing: true)
|
73
|
+
config.language = 'Python'
|
74
|
+
assert_equal 'Python', config.language
|
75
|
+
end
|
76
|
+
|
77
|
+
test 'to_hash method' do
|
78
|
+
assert_respond_to Configuration.new, :to_hash, 'Method undefined'
|
79
|
+
|
80
|
+
nested_hash = { language: 'Ruby',
|
81
|
+
framework: { rails: [:active_record, :active_support] } }
|
82
|
+
config = Configuration.new(config: nested_hash)
|
83
|
+
assert_equal config.to_hash, nested_hash
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class DotConfig::VersionTest < ActiveSupport::TestCase
|
6
|
+
|
7
|
+
test 'Version is defined' do
|
8
|
+
assert DotConfig.const_defined?(:Version), 'Module undefined'
|
9
|
+
end
|
10
|
+
|
11
|
+
test 'version constants is defined' do
|
12
|
+
assert Version.const_defined?(:MAJOR), 'MAJOR undefined'
|
13
|
+
assert Version.const_defined?(:MINOR), 'MINOR undefined'
|
14
|
+
assert Version.const_defined?(:TINY), 'TINY undefined'
|
15
|
+
assert Version.const_defined?(:PRE), 'PRE undefined'
|
16
|
+
assert Version.const_defined?(:STRING), 'STRING undefined'
|
17
|
+
end
|
18
|
+
|
19
|
+
test 'version string is equal' do
|
20
|
+
major, minor, tiny, pre = Version::STRING.split('.')
|
21
|
+
|
22
|
+
assert_equal Version::MAJOR.to_s, major, 'Major not equal'
|
23
|
+
assert_equal Version::MINOR.to_s, minor, 'Minor not equal'
|
24
|
+
assert_equal Version::TINY.to_s, tiny, 'Tiny not equal'
|
25
|
+
assert_equal Version::PRE, pre, 'Pre not equal'
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class DotConfigTest < ActiveSupport::TestCase
|
6
|
+
|
7
|
+
test 'module is defined' do
|
8
|
+
assert Object.const_defined?(:DotConfig), 'Module undefined'
|
9
|
+
end
|
10
|
+
|
11
|
+
test 'has new method' do
|
12
|
+
assert_respond_to DotConfig, :new, 'Method undefined'
|
13
|
+
assert_instance_of DotConfig::Configuration, DotConfig.new(world: 'hello')
|
14
|
+
assert_raise(ArgumentError) { DotConfig.new(:world) }
|
15
|
+
end
|
16
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'dot_config'
|
4
|
+
require 'active_support/test_case'
|
5
|
+
require 'test/unit'
|
6
|
+
|
7
|
+
# Add extra methods to ActiveSupport::TestCase.
|
8
|
+
#
|
9
|
+
# @author {mailto:geoffrey.roguelon@gmail.com Geoffrey Roguelon}
|
10
|
+
class ActiveSupport::TestCase
|
11
|
+
include DotConfig
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dotconfig
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Geoffrey Roguelon
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-12-25 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.0'
|
30
|
+
description: ! 'Simplify your configuration with: DotConfig.new(language: :ruby).language
|
31
|
+
#=> ''Ruby''.'
|
32
|
+
email: geoffrey.roguelon@gmail.com
|
33
|
+
executables: []
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files: []
|
36
|
+
files:
|
37
|
+
- .gitignore
|
38
|
+
- CHANGELOG.md
|
39
|
+
- Gemfile
|
40
|
+
- LICENSE.txt
|
41
|
+
- README.md
|
42
|
+
- Rakefile
|
43
|
+
- dotconfig.gemspec
|
44
|
+
- lib/dot_config.rb
|
45
|
+
- lib/dot_config/configuration.rb
|
46
|
+
- lib/dot_config/version.rb
|
47
|
+
- test/dot_config/configuration_test.rb
|
48
|
+
- test/dot_config/version_test.rb
|
49
|
+
- test/dot_config_test.rb
|
50
|
+
- test/test_helper.rb
|
51
|
+
homepage: http://github.com/GRoguelon/DotConfig
|
52
|
+
licenses:
|
53
|
+
- MIT
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options: []
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 1.9.1
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
requirements: []
|
71
|
+
rubyforge_project:
|
72
|
+
rubygems_version: 1.8.23
|
73
|
+
signing_key:
|
74
|
+
specification_version: 3
|
75
|
+
summary: The DotConfig gem give you access to your configuration via the dot syntax.
|
76
|
+
You instantiate DotConfig::Configuration with a Hash and you will retrieve the values
|
77
|
+
in calling the key as method name.
|
78
|
+
test_files:
|
79
|
+
- test/dot_config/configuration_test.rb
|
80
|
+
- test/dot_config/version_test.rb
|
81
|
+
- test/dot_config_test.rb
|
82
|
+
- test/test_helper.rb
|
83
|
+
has_rdoc: false
|