configur 1.0.1 → 1.1.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: 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