configur 1.0.1 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3a9c1460ec16fed1e4c4a75a48049d2852ca6dd
4
- data.tar.gz: 7ede67283b2cbd74736d8e6b7a6477ac5f318883
3
+ metadata.gz: c6698a8297a088e84fa914a38a43c6e5c38817ca
4
+ data.tar.gz: 614cc98e6c27554e001e4b44f7ce31aed8272650
5
5
  SHA512:
6
- metadata.gz: 2bbb432dc59330db92ec99a99b8ffca2328e87d32a73122030ec122a5083f597bb8a83308fc10fe5b240dc15a6160e30ff2c4996cd3d0c6137c221c71a12ef18
7
- data.tar.gz: f5bd07a6a9613aadc13b5a60192c7b9b17fe8b949e703b3fa119d06f112d3012e8c00510c895acf0d23c0cb463bfe49068748bb02bbdeddee2cf4d9c7d37f121
6
+ metadata.gz: 34edbee88944d39e76b77cbbf54f2e0237ac26bb8be8af8c90124f5d17d2b3a68fa14e99f7cfc1463c1e80a91f16b1c0cc15fb331c8edcc86d885b194c5da388
7
+ data.tar.gz: fc73ac7e23d6080544cf1bd2be9af947bd7684cf19e4260bbd5a4e2655a369d1cdb206590834394bb4aec114c835f652f7d7b810e1bdcd001b9948cec70dd9b1
data/README.md CHANGED
@@ -22,23 +22,41 @@ No explanation, just an example to show you how easy it is:
22
22
 
23
23
  require 'configur'
24
24
 
25
- class MyClass
25
+ module MyModule
26
26
  extend Configur
27
27
  end
28
28
 
29
- MyClass.configur do |config|
29
+ MyModule.configur do |config|
30
30
  config.debug = true
31
31
  config.app_name = 'myawesomeapp'
32
32
  end
33
33
 
34
- And it also works for modules. Nevermind
34
+ For a class, here is the corresponding snippet
35
+
36
+ require 'configur'
37
+
38
+ class MyClass
39
+ include Configur
40
+ end
41
+
42
+ my_class = MyClass.new
43
+
44
+ my_class.configur do |config|
45
+ config.debug = true
46
+ config.app_name = 'myawesomeapp'
47
+ end
35
48
 
36
49
  ## Methods
37
50
 
38
51
  After configuring your class or module, you can "query" with the following methods:
39
52
 
40
- puts MyClass.get_config :app_name
41
- puts MyClass.get_configs
53
+ puts MyModule.get_config :app_name
54
+ puts MyModule.get_configs
55
+
56
+ or
57
+
58
+ puts my_class.get_config :app_name
59
+ puts my_class.get_configs
42
60
 
43
61
  Easy, isn't it?
44
62
 
data/lib/configur.rb CHANGED
@@ -1,22 +1,24 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  # File: configur.rb
4
- # Time-stamp: <2014-11-26 00:04:32 pierre>
4
+ # Time-stamp: <2014-11-27 16:26:10 pierre>
5
5
  # Copyright (C) 2014 Pierre Lecocq
6
6
  # Description: Configur gem module
7
7
 
8
8
  # Configur module
9
9
  module Configur
10
10
  # Version constant
11
- VERSION = [1, 0, 1].join '.'
11
+ VERSION = [1, 1, 0].join '.'
12
12
 
13
13
  # Configur
14
14
  def configur(&block)
15
- @@_configur_data ||= {}
15
+ @@_cdata ||= {}
16
+ @@_oid = self.object_id
16
17
 
17
18
  def block.method_missing(m, *args, &block)
18
- name = m.to_s.gsub '=', ''
19
- Configur.set_config name, args[0]
19
+ name = m.to_s
20
+ super if name[-1] != '='
21
+ Configur.set_config @@_oid, name.gsub('=', ''), args[0]
20
22
  end
21
23
 
22
24
  yield block
@@ -24,16 +26,17 @@ module Configur
24
26
 
25
27
  # Get all configs
26
28
  def get_configs
27
- @@_configur_data || {}
29
+ @@_cdata[self.object_id] || {}
28
30
  end
29
31
 
30
32
  # Get a config value
31
33
  def get_config(name)
32
- @@_configur_data[name.to_sym] || nil
34
+ @@_cdata[self.object_id][name.to_sym] || nil
33
35
  end
34
36
 
35
37
  # Set a config value
36
- def self.set_config(name, value)
37
- @@_configur_data[name.to_sym] = value
38
+ def self.set_config(oid, name, value)
39
+ @@_cdata[oid] ||= {}
40
+ @@_cdata[oid][name.to_sym] = value
38
41
  end
39
42
  end
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # File: configur_spec.rb
4
+ # Time-stamp: <2014-11-27 16:33:40 pierre>
5
+ # Copyright (C) 2014 Pierre Lecocq
6
+ # Description: Configure spec test file
7
+
8
+ require_relative '../lib/configur'
9
+
10
+ describe Configur do
11
+ describe 'Module configuration' do
12
+ # Set module
13
+ my_test_module = Module.new
14
+ my_test_module.extend Configur
15
+
16
+ # Test extension
17
+ it { expect(my_test_module.methods).to include :configur }
18
+
19
+ # Set module configuration
20
+ my_test_module.configur do |c|
21
+ c.name = 'My test module'
22
+ c.autor = 'Pierre Lecocq'
23
+ end
24
+
25
+ # Test configuration queries
26
+ it {expect(my_test_module.get_config :name).to eql 'My test module'}
27
+ it {expect(my_test_module.get_config :unknown).to be nil }
28
+ it {expect(my_test_module.get_configs).to be_a Hash }
29
+ it {expect(my_test_module.get_configs.keys.length).to eql 2 }
30
+ end
31
+
32
+ describe 'Class configuration' do
33
+ # Set class
34
+
35
+ class MyClass
36
+ include Configur
37
+ end
38
+ my_test_class = MyClass.new
39
+
40
+ # Test extension
41
+ it { expect(my_test_class.methods).to include :configur }
42
+
43
+ # Set class configuration
44
+ my_test_class.configur do |c|
45
+ c.name = 'My test class'
46
+ c.autor = 'Pierre Lecocq'
47
+ end
48
+
49
+ # Test configuration queries
50
+ it {expect(my_test_class.get_config :name).to eql 'My test class'}
51
+ it {expect(my_test_class.get_config :unknown).to be nil }
52
+ it {expect(my_test_class.get_configs).to be_a Hash }
53
+ it {expect(my_test_class.get_configs.keys.length).to eql 2 }
54
+ end
55
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configur
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre Lecocq
@@ -21,6 +21,7 @@ files:
21
21
  - README.md
22
22
  - configur.gemspec
23
23
  - lib/configur.rb
24
+ - spec/configur_spec.rb
24
25
  homepage: https://github.com/pierre-lecocq/configur
25
26
  licenses:
26
27
  - MIT