simpleconf 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -80,5 +80,24 @@ Needed a simple configuration library for my gems. Made public so everyone can t
80
80
 
81
81
  default.port 80 #throws error!!!
82
82
 
83
+ **File Configuration**
84
+
85
+ # basic.conf
86
+
87
+ server "localhost"
88
+ ports [80, 8080, 3000]
89
+ auth {
90
+ user "mike"
91
+ pass "password"
92
+ }
93
+
94
+ # code.rb
95
+
96
+ conf = SimpleConf.load("basic.conf")
97
+ conf.server # localhost
98
+ conf.ports # [80, 8080, 3000]
99
+ conf.auth.user # mike
100
+ # etc
101
+
83
102
 
84
103
  To see all examples/cases, see the spec file.
data/lib/simpleconf.rb CHANGED
@@ -13,7 +13,17 @@ module SimpleConf
13
13
  c
14
14
  end
15
15
 
16
- module_function :build
16
+ def build_from_string(instance_str, opts={})
17
+ c = Conf.new(instance_str, opts)
18
+ c.instance_eval(instance_str)
19
+ c.__init_only__ = true if opts[:init_only]
20
+ c
21
+ end
17
22
 
18
- end
23
+ def load(file_name, opts={})
24
+ build_from_string(File.read(file_name), opts)
25
+ end
26
+
27
+ module_function :build, :build_from_string, :load
19
28
 
29
+ end
@@ -1,3 +1,3 @@
1
1
  module SimpleConf
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/spec/files/conf ADDED
@@ -0,0 +1,6 @@
1
+ server "localhost", :override => false
2
+ port 80
3
+ auth {
4
+ user "mike"
5
+ password "mypass"
6
+ }
@@ -28,6 +28,75 @@ describe SimpleConf do
28
28
  end
29
29
  end
30
30
 
31
+ context "#build_from_string" do
32
+ before do
33
+ @str = <<-EOS
34
+ server "localhost", :override => false
35
+ port 80
36
+ auth {
37
+ user "mike"
38
+ password "mypass"
39
+ }
40
+ EOS
41
+ end
42
+
43
+ it "should create a SimpleConf::Conf from a valid string conf" do
44
+ c = SimpleConf.build_from_string(@str)
45
+
46
+ c.should be_an_instance_of(SimpleConf::Conf)
47
+ c.server.should == "localhost"
48
+ c.port.should == 80
49
+ c.auth.should be_an_instance_of(SimpleConf::Conf)
50
+ c.auth.user.should == "mike"
51
+ c.auth.password.should == "mypass"
52
+ end
53
+
54
+ it "should create a SimpleConf::Conf that uses ovveride" do
55
+ c = SimpleConf.build_from_string(@str)
56
+
57
+ c.server "boo"
58
+ c.server.should == "localhost"
59
+ end
60
+
61
+ it "should create a SimpleConf::Conf that uses init_only" do
62
+ c = SimpleConf.build_from_string(@str, :init_only => true)
63
+
64
+ lambda { c.boooo("yeaa") }.should raise_error
65
+ end
66
+ end
67
+
68
+ context "#load" do
69
+ before do
70
+ @file_name = "./spec/files/conf"
71
+ end
72
+
73
+ it "should create a SimpleConf::Conf from a valid string conf" do
74
+ c = SimpleConf.load(@file_name)
75
+
76
+ c.should be_an_instance_of(SimpleConf::Conf)
77
+ c.server.should == "localhost"
78
+ c.port.should == 80
79
+ c.auth.should be_an_instance_of(SimpleConf::Conf)
80
+ c.auth.user.should == "mike"
81
+ c.auth.password.should == "mypass"
82
+ end
83
+
84
+ it "should create a SimpleConf::Conf that uses ovveride" do
85
+ c = SimpleConf.load(@file_name)
86
+
87
+ c.server "boo"
88
+ c.server.should == "localhost"
89
+ end
90
+
91
+ it "should create a SimpleConf::Conf that uses init_only" do
92
+ c = SimpleConf.load(@file_name, :init_only => true)
93
+
94
+ lambda { c.boooo("yeaa") }.should raise_error
95
+ end
96
+
97
+
98
+ end
99
+
31
100
  it "should create a Kernel method SimpleConf" do
32
101
  Kernel.should respond_to(:SimpleConf)
33
102
  end
@@ -77,16 +146,16 @@ describe SimpleConf do
77
146
 
78
147
  context "Blank Slate" do
79
148
  it "should remove all methods and allow user to do whatever he wants " do
80
-
81
- c = SimpleConf {
82
- id 5
83
- hash 20
84
- freeze "boo"
85
- }
86
149
 
87
- c.id.should == 5
88
- c.hash.should == 20
89
- c.freeze.should == "boo"
150
+ c = SimpleConf {
151
+ id 5
152
+ hash 20
153
+ freeze "boo"
154
+ }
155
+
156
+ c.id.should == 5
157
+ c.hash.should == 20
158
+ c.freeze.should == "boo"
90
159
  end
91
160
 
92
161
  end
@@ -107,7 +176,7 @@ describe SimpleConf do
107
176
  }
108
177
 
109
178
  lambda {
110
- c.port "boooo"
179
+ c.port "boooo"
111
180
  }.should raise_error
112
181
  end
113
182
 
@@ -175,6 +244,21 @@ describe SimpleConf do
175
244
  c.a.b.c.d.should == 5
176
245
  end
177
246
 
247
+ it "should be able to access the nested namespace" do
248
+ c = SimpleConf {
249
+ server {
250
+ host "localhost"
251
+ port 80
252
+ }
253
+ }
254
+
255
+ lambda { c.server }.should_not raise_error
256
+ c.server.should be_an_instance_of(SimpleConf::Conf)
257
+ p c.server
258
+ c.server.host.should == "localhost"
259
+ c.server.port.should == 80
260
+ end
261
+
178
262
  it "should allow for editable config elems within nests" do
179
263
  c = SimpleConf {
180
264
  a {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simpleconf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-25 00:00:00.000000000Z
12
+ date: 2011-07-27 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: blankslate
16
- requirement: &2154004280 !ruby/object:Gem::Requirement
16
+ requirement: &2152682220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2154004280
24
+ version_requirements: *2152682220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &2154003860 !ruby/object:Gem::Requirement
27
+ requirement: &2152681800 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2154003860
35
+ version_requirements: *2152681800
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &2154003440 !ruby/object:Gem::Requirement
38
+ requirement: &2152681380 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2154003440
46
+ version_requirements: *2152681380
47
47
  description: Simple Configuration DSL that supports merging, locking and more.
48
48
  email:
49
49
  - ft.mikelewis@gmail.com
@@ -62,6 +62,7 @@ files:
62
62
  - lib/simpleconf/conf.rb
63
63
  - lib/simpleconf/version.rb
64
64
  - simpleconf.gemspec
65
+ - spec/files/conf
65
66
  - spec/simpleconf_spec.rb
66
67
  - spec/spec_helper.rb
67
68
  homepage: http://github.com/mikelewis/simpleconf
@@ -89,5 +90,6 @@ signing_key:
89
90
  specification_version: 3
90
91
  summary: Simple Configuration DSL that supports merging, locking and more.
91
92
  test_files:
93
+ - spec/files/conf
92
94
  - spec/simpleconf_spec.rb
93
95
  - spec/spec_helper.rb