configatron 2.2.1 → 2.2.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/doc/classes/Class.html +170 -0
- data/doc/classes/Configatron.html +30 -30
- data/doc/classes/Configatron/LockedNamespace.html +6 -6
- data/doc/classes/Configatron/ProtectedParameter.html +6 -6
- data/doc/classes/Configatron/Store.html +111 -111
- data/doc/classes/Kernel.html +9 -9
- data/doc/created.rid +1 -1
- data/doc/files/lib/configatron/core_ext/class_rb.html +101 -0
- data/doc/files/lib/configatron/{kernel_rb.html → core_ext/kernel_rb.html} +2 -2
- data/doc/files/lib/configatron/core_ext/object_rb.html +101 -0
- data/doc/files/lib/configatron/core_ext/string_rb.html +101 -0
- data/doc/files/lib/configatron_rb.html +1 -1
- data/doc/fr_class_index.html +1 -0
- data/doc/fr_file_index.html +4 -1
- data/doc/fr_method_index.html +27 -26
- data/lib/configatron.rb +5 -2
- data/lib/configatron/core_ext/class.rb +26 -0
- data/lib/configatron/{kernel.rb → core_ext/kernel.rb} +0 -0
- data/lib/configatron/core_ext/object.rb +9 -0
- data/lib/configatron/core_ext/string.rb +84 -0
- data/spec/lib/class_spec.rb +28 -0
- metadata +12 -4
data/lib/configatron.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
base = File.join(File.dirname(__FILE__), 'configatron')
|
2
2
|
require 'yaml'
|
3
|
-
require File.join(base, 'kernel')
|
4
3
|
require File.join(base, 'configatron')
|
5
4
|
require File.join(base, 'store')
|
6
|
-
require File.join(base, 'errors')
|
5
|
+
require File.join(base, 'errors')
|
6
|
+
require File.join(base, 'core_ext', 'kernel')
|
7
|
+
require File.join(base, 'core_ext', 'object')
|
8
|
+
require File.join(base, 'core_ext', 'string')
|
9
|
+
require File.join(base, 'core_ext', 'class')
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class Class
|
2
|
+
|
3
|
+
# Returns access to configuration parameters named after the class.
|
4
|
+
#
|
5
|
+
# Examples:
|
6
|
+
# configatron.foo.bar = :bar
|
7
|
+
# configatron.a.b.c.d = 'D'
|
8
|
+
#
|
9
|
+
# class Foo
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# module A
|
13
|
+
# module B
|
14
|
+
# class C
|
15
|
+
# end
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# Foo.to_configatron.bar # => :bar
|
20
|
+
# A::B::C.to_configatron.d # => 'D'
|
21
|
+
def to_configatron
|
22
|
+
name_spaces = self.name.split("::").collect{|s| s.methodize}
|
23
|
+
configatron.send_with_chain(name_spaces)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
File without changes
|
@@ -0,0 +1,84 @@
|
|
1
|
+
class String # :nodoc:
|
2
|
+
|
3
|
+
def underscore # :nodoc:
|
4
|
+
self.to_s.gsub(/::/, '/').
|
5
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
6
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
7
|
+
tr("-", "_").
|
8
|
+
downcase
|
9
|
+
end
|
10
|
+
|
11
|
+
def methodize # :nodoc:
|
12
|
+
x = self
|
13
|
+
|
14
|
+
# if we get down to a nil or an empty string raise an exception!
|
15
|
+
raise NameError.new("#{self} cannot be converted to a valid method name!") if x.nil? || x == ''
|
16
|
+
|
17
|
+
# get rid of the big stuff in the front/back
|
18
|
+
x.strip!
|
19
|
+
|
20
|
+
# if we get down to a nil or an empty string raise an exception!
|
21
|
+
raise NameError.new("#{self} cannot be converted to a valid method name!") if x.nil? || x == ''
|
22
|
+
|
23
|
+
x = x.underscore
|
24
|
+
|
25
|
+
# get rid of spaces and make the _
|
26
|
+
x.gsub!(' ', '_')
|
27
|
+
# get rid of everything that isn't 'safe' a-z, 0-9, ?, !, =, _
|
28
|
+
x.gsub!(/([^ a-zA-Z0-9\_\?\!\=]+)/n, '_')
|
29
|
+
|
30
|
+
# if we get down to a nil or an empty string raise an exception!
|
31
|
+
raise NameError.new("#{self} cannot be converted to a valid method name!") if x.nil? || x == ''
|
32
|
+
|
33
|
+
# condense multiple 'safe' non a-z chars to just one.
|
34
|
+
# ie. ___ becomes _ !!!! becomes ! etc...
|
35
|
+
[' ', '_', '?', '!', "="].each do |c|
|
36
|
+
x.squeeze!(c)
|
37
|
+
end
|
38
|
+
|
39
|
+
# if we get down to a nil or an empty string raise an exception!
|
40
|
+
raise NameError.new("#{self} cannot be converted to a valid method name!") if x.nil? || x == ''
|
41
|
+
|
42
|
+
#down case the whole thing
|
43
|
+
x.downcase!
|
44
|
+
|
45
|
+
# get rid of any characters at the beginning that aren't a-z
|
46
|
+
while !x.match(/^[a-z]/)
|
47
|
+
x.slice!(0)
|
48
|
+
|
49
|
+
# if we get down to a nil or an empty string raise an exception!
|
50
|
+
raise NameError.new("#{self} cannot be converted to a valid method name!") if x.nil? || x == ''
|
51
|
+
end
|
52
|
+
|
53
|
+
# let's trim this bad boy down a bit now that we've cleaned it up, somewhat.
|
54
|
+
# we should do this before cleaning up the end character, because it's possible to end up with a
|
55
|
+
# bad char at the end if you trim too late.
|
56
|
+
x = x[0..100] if x.length > 100
|
57
|
+
|
58
|
+
# get rid of any characters at the end that aren't safe
|
59
|
+
while !x.match(/[a-z0-9\?\!\=]$/)
|
60
|
+
x.slice!(x.length - 1)
|
61
|
+
# if we get down to a nil or an empty string raise an exception!
|
62
|
+
raise NameError.new("#{self} cannot be converted to a valid method name!") if x.nil? || x == ''
|
63
|
+
end
|
64
|
+
|
65
|
+
# if we get down to a nil or an empty string raise an exception!
|
66
|
+
raise NameError.new("#{self} cannot be converted to a valid method name!") if x.nil? || x == ''
|
67
|
+
|
68
|
+
# let's get rid of characters that don't belong in the 'middle' of the method.
|
69
|
+
orig_middle = x[1..(x.length - 2)]
|
70
|
+
n_middle = orig_middle.dup
|
71
|
+
|
72
|
+
['?', '!', "="].each do |c|
|
73
|
+
n_middle.gsub!(c, "_")
|
74
|
+
end
|
75
|
+
|
76
|
+
# the previous gsub can leave us with multiple underscores that need cleaning up.
|
77
|
+
n_middle.squeeze!("_")
|
78
|
+
|
79
|
+
x.gsub!(orig_middle, n_middle)
|
80
|
+
x.gsub!("_=", "=")
|
81
|
+
x
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
+
|
3
|
+
configatron.foo.bar = :bar
|
4
|
+
configatron.a.b.c.d = 'D'
|
5
|
+
|
6
|
+
class Foo
|
7
|
+
end
|
8
|
+
|
9
|
+
module A
|
10
|
+
module B
|
11
|
+
class C
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe Class do
|
17
|
+
|
18
|
+
describe 'to_configatron' do
|
19
|
+
|
20
|
+
it 'should return a Configatron::Store object based on the name of the class' do
|
21
|
+
Foo.to_configatron.should be_kind_of(Configatron::Store)
|
22
|
+
Foo.to_configatron.bar.should == :bar
|
23
|
+
A::B::C.to_configatron.d.should == 'D'
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: configatron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- markbates
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-16 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -23,11 +23,15 @@ extra_rdoc_files:
|
|
23
23
|
- README
|
24
24
|
files:
|
25
25
|
- lib/configatron/configatron.rb
|
26
|
+
- lib/configatron/core_ext/class.rb
|
27
|
+
- lib/configatron/core_ext/kernel.rb
|
28
|
+
- lib/configatron/core_ext/object.rb
|
29
|
+
- lib/configatron/core_ext/string.rb
|
26
30
|
- lib/configatron/errors.rb
|
27
|
-
- lib/configatron/kernel.rb
|
28
31
|
- lib/configatron/store.rb
|
29
32
|
- lib/configatron.rb
|
30
33
|
- README
|
34
|
+
- doc/classes/Class.html
|
31
35
|
- doc/classes/Configatron/LockedNamespace.html
|
32
36
|
- doc/classes/Configatron/ProtectedParameter.html
|
33
37
|
- doc/classes/Configatron/Store.html
|
@@ -35,8 +39,11 @@ files:
|
|
35
39
|
- doc/classes/Kernel.html
|
36
40
|
- doc/created.rid
|
37
41
|
- doc/files/lib/configatron/configatron_rb.html
|
42
|
+
- doc/files/lib/configatron/core_ext/class_rb.html
|
43
|
+
- doc/files/lib/configatron/core_ext/kernel_rb.html
|
44
|
+
- doc/files/lib/configatron/core_ext/object_rb.html
|
45
|
+
- doc/files/lib/configatron/core_ext/string_rb.html
|
38
46
|
- doc/files/lib/configatron/errors_rb.html
|
39
|
-
- doc/files/lib/configatron/kernel_rb.html
|
40
47
|
- doc/files/lib/configatron/store_rb.html
|
41
48
|
- doc/files/lib/configatron_rb.html
|
42
49
|
- doc/files/README.html
|
@@ -74,6 +81,7 @@ specification_version: 2
|
|
74
81
|
summary: A powerful Ruby configuration system.
|
75
82
|
test_files:
|
76
83
|
- spec/lib
|
84
|
+
- spec/lib/class_spec.rb
|
77
85
|
- spec/lib/configatron_spec.rb
|
78
86
|
- spec/lib/futurama.yml
|
79
87
|
- spec/lib/lost.yml
|