configurator 1.1.1 → 1.2.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.
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ == 1.2.0 2008-03-24
2
+
3
+ * 1 minor enhancement:
4
+ * Module scheme changed
5
+
1
6
  == 1.1.1 2008-03-23
2
7
 
3
8
  * Tiny changes
data/Manifest.txt CHANGED
@@ -6,8 +6,8 @@ Rakefile
6
6
  config/hoe.rb
7
7
  config/requirements.rb
8
8
  lib/configurator.rb
9
- lib/configurator/configurator.rb
10
9
  lib/configurator/version.rb
10
+ lib/configurator/extension_methods.rb
11
11
  log/debug.log
12
12
  script/destroy
13
13
  script/generate
data/README.txt CHANGED
@@ -1 +1,43 @@
1
- README
1
+ Configurator extends configuration behavior to class.
2
+
3
+ ==make class with configurator extension
4
+ Configurator allows you to delcare config paramaters with keys to class. It works as hash.
5
+ require 'rubygems'
6
+ require 'configurator'
7
+ class Klass
8
+ extend Congigurator
9
+ config :name, 'Matsumoto'
10
+ config :age, 18
11
+ end
12
+
13
+ ==refer to config paramaters
14
+ Paramaters are referable from both Class and Instance.
15
+
16
+ from class
17
+ Klass.config[:name] #=> 'Matsumoto'
18
+ Klass.config[:age] #=> 18
19
+ from instance
20
+ kls = Klass.new
21
+ kls.config[:name] #=> 'Matsumoto'
22
+ kls.config[:age] #=> 18
23
+
24
+ ==inherite and rewrite
25
+ Paramaters are also inheritable and rewritable.
26
+ class SubKlass < Klass
27
+ config :name, 'Matz'
28
+ config :sex, 'm'
29
+ end
30
+ sub = SubKlass.new
31
+ sub.config[:name] # => 'Matz'
32
+ sub.config[:age] # => 18
33
+ sub.config[:sex] # => 'm'
34
+ kls.config[:name] # => 'Matsumoto'
35
+
36
+ ==instance specific config paramaters
37
+ It works as like as instance specific method.
38
+ Klass.config :name, 'Matz'
39
+ kls = Klass.new
40
+ kls.config :name, 'Yukihiro'
41
+ kls.config[:name] # => 'Yukihiro'
42
+ kls2 = Klass.new
43
+ kls2.config[:name] # => 'Matz'
data/lib/configurator.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  $:.unshift File.dirname(__FILE__)
2
2
 
3
+ require 'configurator/extension_methods'
4
+
3
5
  module Configurator
6
+ include Configurator::ExtensionMethods
7
+ def self.extended( mod )
8
+ mod.module_eval { include Configurator::ExtensionMethods }
9
+ end
4
10
  end
5
-
6
- require 'configurator/configurator'
@@ -0,0 +1,79 @@
1
+ module Configurator
2
+
3
+ module ExtensionMethods
4
+
5
+ public
6
+
7
+ # set config paramaters within class block code.
8
+ # class Klass
9
+ # extend Configurator
10
+ # config key, value
11
+ # end
12
+ #
13
+ # Another way to set paramaters.
14
+ # Klass.config key, value
15
+ # Klass.config[key] = value
16
+ # Klass.new.config key, value
17
+ # Klass.new.config[key] = value
18
+ #
19
+ # Reffer to config paramaters.
20
+ # Klass.config[key] # => value
21
+ # Klass.new.config[key] # => value
22
+ #
23
+ # This method also works as instance method because instance includes this module automatically.
24
+ # kls = Klass.new
25
+ # kls.config[key] # => value
26
+ #
27
+ def config( key = nil, value = nil )
28
+ @__self_config ||= {}
29
+ @__config = __check_config
30
+ case
31
+ when ( key and value ) : @__self_config[ key ] = value; @__config = __merge_config; return value
32
+ when key : return @__config[ key ]
33
+ else return @__config
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def __merge_config
40
+ __inherited_config.merge( @__self_config )
41
+ end
42
+
43
+ def __check_config
44
+ @__config ||= {}
45
+ __config = __merge_config
46
+ @__config.each do |k, v|
47
+ unless __config[ k ] == v
48
+ @__self_config[ k ] = v
49
+ end
50
+ end
51
+ @__config = __merge_config
52
+ end
53
+
54
+ def __inherited_config
55
+ if self.respond_to?( :ancestors )
56
+ @__inherited_config = {}
57
+ ancestors[ 1 .. ( ancestors.size - 1 ) ].each do |ancestor|
58
+ if ancestor.respond_to?( :config ) and Hash === ancestor.config
59
+ @__inherited_config = ancestor.config.merge( @__inherited_config || {} )
60
+ end
61
+ end
62
+ else
63
+ @__inherited_config = self.class.config
64
+ end
65
+ return @__inherited_config
66
+ end
67
+
68
+ def method_missing( name, *args, &block )
69
+ if @__config.keys.include?( name.to_sym )
70
+ @__config[ name.to_sym ]
71
+ else
72
+ super
73
+ end
74
+ end
75
+
76
+ end
77
+
78
+ end
79
+
@@ -1,8 +1,8 @@
1
1
  module Configurator #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
- MINOR = 1
5
- TINY = 1
4
+ MINOR = 2
5
+ TINY = 0
6
6
 
7
7
  STRING = [ MAJOR, MINOR, TINY ].join( '.' )
8
8
  end
@@ -19,7 +19,7 @@ class TestConfigurator < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  def test_config
22
- sample = SampleClass.new
22
+ assert sample = SampleClass.new
23
23
  assert sample.config[:name] == "sample"
24
24
  assert sample.config[:address] == "127.0.0.1"
25
25
  assert sample.config[:array] == [ 1, 2, 3 ]
data/website/index.html CHANGED
@@ -33,7 +33,7 @@
33
33
  <h1>configurator</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/configurator"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/configurator" class="numbers">1.1.1</a>
36
+ <a href="http://rubyforge.org/projects/configurator" class="numbers">1.2.0</a>
37
37
  </div>
38
38
  <h1>&#x2192; &#8216;configurator&#8217;</h1>
39
39
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configurator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - wz
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-03-23 00:00:00 +09:00
12
+ date: 2008-03-24 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -34,8 +34,8 @@ files:
34
34
  - config/hoe.rb
35
35
  - config/requirements.rb
36
36
  - lib/configurator.rb
37
- - lib/configurator/configurator.rb
38
37
  - lib/configurator/version.rb
38
+ - lib/configurator/extension_methods.rb
39
39
  - log/debug.log
40
40
  - script/destroy
41
41
  - script/generate
@@ -1,122 +0,0 @@
1
- #
2
- # Configurator extends configuration behavior to class.
3
- #
4
- # ==make class with configurator extension
5
- # Configurator allows you to delcare config paramaters with keys to class. It works as hash.
6
- # require 'rubygems'
7
- # require 'configurator'
8
- # class Klass
9
- # extend Congigurator
10
- # config :name, 'Matsumoto'
11
- # config :age, 18
12
- # end
13
- #
14
- # ==refer to config paramaters
15
- # Paramaters are referable from both Class and Instance.
16
- #
17
- # from class
18
- # Klass.config[:name] #=> 'Matsumoto'
19
- # Klass.config[:age] #=> 18
20
- # from instance
21
- # kls = Klass.new
22
- # kls.config[:name] #=> 'Matsumoto'
23
- # kls.config[:age] #=> 18
24
- #
25
- # ==inherite and rewrite
26
- # Paramaters are also inheritable and rewritable.
27
- # class SubKlass < Klass
28
- # config :name, 'Matz'
29
- # config :sex, 'm'
30
- # end
31
- # sub = SubKlass.new
32
- # sub.config[:name] # => 'Matz'
33
- # sub.config[:age] # => 18
34
- # sub.config[:sex] # => 'm'
35
- # kls.config[:name] # => 'Matsumoto'
36
- #
37
- # ==instance specific config paramaters
38
- # It works as like as instance specific method.
39
- # Klass.config :name, 'Matz'
40
- # kls = Klass.new
41
- # kls.config :name, 'Yukihiro'
42
- # kls.config[:name] # => 'Yukihiro'
43
- # kls2 = Klass.new
44
- # kls2.config[:name] # => 'Matz'
45
- module Configurator
46
-
47
- public
48
- # set config paramaters within class block code.
49
- # class Klass
50
- # extend Configurator
51
- # config key, value
52
- # end
53
- #
54
- # Another way to set paramaters.
55
- # Klass.config key, value
56
- # Klass.config[key] = value
57
- # Klass.new.config key, value
58
- # Klass.new.config[key] = value
59
- #
60
- # Reffer to config paramaters.
61
- # Klass.config[key] # => value
62
- # Klass.new.config[key] # => value
63
- #
64
- # This method also works as instance method because instance includes this module automatically.
65
- # kls = Klass.new
66
- # kls.config[key] # => value
67
- #
68
- def config( key = nil, value = nil )
69
- @__self_config ||= {}
70
- @__config = __check_config
71
- case
72
- when ( key and value ) : @__self_config[ key ] = value; @__config = __merge_config; return value
73
- when key : return @__config[ key ]
74
- else return @__config
75
- end
76
- end
77
-
78
- private
79
-
80
- def __merge_config
81
- __inherited_config.merge( @__self_config )
82
- end
83
-
84
- def __check_config
85
- @__config ||= {}
86
- __config = __merge_config
87
- @__config.each do |k, v|
88
- unless __config[ k ] == v
89
- @__self_config[ k ] = v
90
- end
91
- end
92
- @__config = __merge_config
93
- end
94
-
95
- def __inherited_config
96
- if self.respond_to?( :ancestors )
97
- @__inherited_config = {}
98
- ancestors[ 1 .. ( ancestors.size - 1 ) ].each do |ancestor|
99
- if ancestor.respond_to?( :config ) and Hash === ancestor.config
100
- @__inherited_config = ancestor.config.merge( @__inherited_config || {} )
101
- end
102
- end
103
- else
104
- @__inherited_config = self.class.config
105
- end
106
- return @__inherited_config
107
- end
108
-
109
- def method_missing( name, *args, &block )
110
- if @__config.keys.include?( name.to_sym )
111
- @__config[ name.to_sym ]
112
- else
113
- super
114
- end
115
- end
116
-
117
- def self.extended( mod )
118
- mod.module_eval { include Configurator } #::InstanceMethods }
119
- end
120
-
121
- end
122
-