configatron 2.0.0 → 2.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.
@@ -86,7 +86,7 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000014">intialize</a>&nbsp;&nbsp;
89
+ <a href="#M000017">intialize</a>&nbsp;&nbsp;
90
90
  </div>
91
91
  </div>
92
92
 
@@ -108,19 +108,19 @@
108
108
  <div id="methods">
109
109
  <h3 class="section-bar">Public Instance methods</h3>
110
110
 
111
- <div id="method-M000014" class="method-detail">
112
- <a name="M000014"></a>
111
+ <div id="method-M000017" class="method-detail">
112
+ <a name="M000017"></a>
113
113
 
114
114
  <div class="method-heading">
115
- <a href="#M000014" class="method-signature">
115
+ <a href="#M000017" class="method-signature">
116
116
  <span class="method-name">intialize</span><span class="method-args">(name)</span>
117
117
  </a>
118
118
  </div>
119
119
 
120
120
  <div class="method-description">
121
121
  <p><a class="source-toggle" href="#"
122
- onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
123
- <div class="method-source-code" id="M000014-source">
122
+ onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
123
+ <div class="method-source-code" id="M000017-source">
124
124
  <pre>
125
125
  <span class="ruby-comment cmt"># File lib/configatron/errors.rb, line 3</span>
126
126
  3: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">intialize</span>(<span class="ruby-identifier">name</span>)
@@ -88,14 +88,17 @@
88
88
  <div class="name-list">
89
89
  <a href="#M000006">configure_from_hash</a>&nbsp;&nbsp;
90
90
  <a href="#M000007">configure_from_yaml</a>&nbsp;&nbsp;
91
- <a href="#M000013">deep_clone</a>&nbsp;&nbsp;
91
+ <a href="#M000016">deep_clone</a>&nbsp;&nbsp;
92
92
  <a href="#M000004">new</a>&nbsp;&nbsp;
93
93
  <a href="#M000008">nil?</a>&nbsp;&nbsp;
94
94
  <a href="#M000012">protect</a>&nbsp;&nbsp;
95
+ <a href="#M000013">protect_all!</a>&nbsp;&nbsp;
95
96
  <a href="#M000010">remove</a>&nbsp;&nbsp;
96
97
  <a href="#M000009">retrieve</a>&nbsp;&nbsp;
97
98
  <a href="#M000011">set_default</a>&nbsp;&nbsp;
98
99
  <a href="#M000005">to_hash</a>&nbsp;&nbsp;
100
+ <a href="#M000014">unprotect</a>&nbsp;&nbsp;
101
+ <a href="#M000015">unprotect_all!</a>&nbsp;&nbsp;
99
102
  </div>
100
103
  </div>
101
104
 
@@ -204,11 +207,11 @@ to the YAML file.
204
207
  </div>
205
208
  </div>
206
209
 
207
- <div id="method-M000013" class="method-detail">
208
- <a name="M000013"></a>
210
+ <div id="method-M000016" class="method-detail">
211
+ <a name="M000016"></a>
209
212
 
210
213
  <div class="method-heading">
211
- <a href="#M000013" class="method-signature">
214
+ <a href="#M000016" class="method-signature">
212
215
  <span class="method-name">deep_clone</span><span class="method-args">( obj=self, cloned={} )</span>
213
216
  </a>
214
217
  </div>
@@ -256,41 +259,41 @@ href="http://simplypowerful.1984.cz/goodlibs/1.2006.05.23">simplypowerful.1984.c
256
259
  either the dual license version in 2003, or any later version.
257
260
  </pre>
258
261
  <p><a class="source-toggle" href="#"
259
- onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
260
- <div class="method-source-code" id="M000013-source">
262
+ onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
263
+ <div class="method-source-code" id="M000016-source">
261
264
  <pre>
262
- <span class="ruby-comment cmt"># File lib/configatron/store.rb, line 118</span>
263
- 118: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">obj</span>=<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">cloned</span>={} )
264
- 119: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cloned</span>.<span class="ruby-identifier">has_key?</span>( <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span> )
265
- 120: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span>]
266
- 121: <span class="ruby-keyword kw">else</span>
267
- 122: <span class="ruby-keyword kw">begin</span>
268
- 123: <span class="ruby-identifier">cl</span> = <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">clone</span>
269
- 124: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span>
270
- 125: <span class="ruby-comment cmt"># unclonnable (TrueClass, Fixnum, ...)</span>
271
- 126: <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span>] = <span class="ruby-identifier">obj</span>
272
- 127: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">obj</span>
273
- 128: <span class="ruby-keyword kw">else</span>
274
- 129: <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span>] = <span class="ruby-identifier">cl</span>
275
- 130: <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">cl</span>.<span class="ruby-identifier">object_id</span>] = <span class="ruby-identifier">cl</span>
276
- 131: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">is_a?</span>( <span class="ruby-constant">Hash</span> )
277
- 132: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">clone</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
278
- 133: <span class="ruby-identifier">cl</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
279
- 134: }
280
- 135: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">is_a?</span>( <span class="ruby-constant">Array</span> )
281
- 136: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
282
- 137: <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
283
- 138: }
284
- 139: <span class="ruby-keyword kw">end</span>
285
- 140: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span>
286
- 141: <span class="ruby-identifier">v</span> = <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">instance_eval</span>( <span class="ruby-identifier">var</span> )
287
- 142: <span class="ruby-identifier">v_cl</span> = <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
288
- 143: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">instance_eval</span>( <span class="ruby-node">&quot;#{var} = v_cl&quot;</span> )
289
- 144: <span class="ruby-keyword kw">end</span>
290
- 145: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">cl</span>
291
- 146: <span class="ruby-keyword kw">end</span>
292
- 147: <span class="ruby-keyword kw">end</span>
293
- 148: <span class="ruby-keyword kw">end</span>
265
+ <span class="ruby-comment cmt"># File lib/configatron/store.rb, line 143</span>
266
+ 143: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">obj</span>=<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">cloned</span>={} )
267
+ 144: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cloned</span>.<span class="ruby-identifier">has_key?</span>( <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span> )
268
+ 145: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span>]
269
+ 146: <span class="ruby-keyword kw">else</span>
270
+ 147: <span class="ruby-keyword kw">begin</span>
271
+ 148: <span class="ruby-identifier">cl</span> = <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">clone</span>
272
+ 149: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span>
273
+ 150: <span class="ruby-comment cmt"># unclonnable (TrueClass, Fixnum, ...)</span>
274
+ 151: <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span>] = <span class="ruby-identifier">obj</span>
275
+ 152: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">obj</span>
276
+ 153: <span class="ruby-keyword kw">else</span>
277
+ 154: <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span>] = <span class="ruby-identifier">cl</span>
278
+ 155: <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">cl</span>.<span class="ruby-identifier">object_id</span>] = <span class="ruby-identifier">cl</span>
279
+ 156: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">is_a?</span>( <span class="ruby-constant">Hash</span> )
280
+ 157: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">clone</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
281
+ 158: <span class="ruby-identifier">cl</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
282
+ 159: }
283
+ 160: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">is_a?</span>( <span class="ruby-constant">Array</span> )
284
+ 161: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
285
+ 162: <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
286
+ 163: }
287
+ 164: <span class="ruby-keyword kw">end</span>
288
+ 165: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span>
289
+ 166: <span class="ruby-identifier">v</span> = <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">instance_eval</span>( <span class="ruby-identifier">var</span> )
290
+ 167: <span class="ruby-identifier">v_cl</span> = <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
291
+ 168: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">instance_eval</span>( <span class="ruby-node">&quot;#{var} = v_cl&quot;</span> )
292
+ 169: <span class="ruby-keyword kw">end</span>
293
+ 170: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">cl</span>
294
+ 171: <span class="ruby-keyword kw">end</span>
295
+ 172: <span class="ruby-keyword kw">end</span>
296
+ 173: <span class="ruby-keyword kw">end</span>
294
297
  </pre>
295
298
  </div>
296
299
  </div>
@@ -332,14 +335,50 @@ Returns true if there are no configuration parameters
332
335
  </div>
333
336
 
334
337
  <div class="method-description">
338
+ <p>
339
+ Prevents a parameter from being reassigned. If called on a
340
+ &#8216;namespace&#8217; then all parameters below it will be protected as
341
+ well.
342
+ </p>
335
343
  <p><a class="source-toggle" href="#"
336
344
  onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
337
345
  <div class="method-source-code" id="M000012-source">
338
346
  <pre>
339
- <span class="ruby-comment cmt"># File lib/configatron/store.rb, line 78</span>
340
- 78: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">protect</span>(<span class="ruby-identifier">name</span>)
341
- 79: <span class="ruby-ivar">@_protected</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>
342
- 80: <span class="ruby-keyword kw">end</span>
347
+ <span class="ruby-comment cmt"># File lib/configatron/store.rb, line 80</span>
348
+ 80: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">protect</span>(<span class="ruby-identifier">name</span>)
349
+ 81: <span class="ruby-ivar">@_protected</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>
350
+ 82: <span class="ruby-keyword kw">end</span>
351
+ </pre>
352
+ </div>
353
+ </div>
354
+ </div>
355
+
356
+ <div id="method-M000013" class="method-detail">
357
+ <a name="M000013"></a>
358
+
359
+ <div class="method-heading">
360
+ <a href="#M000013" class="method-signature">
361
+ <span class="method-name">protect_all!</span><span class="method-args">()</span>
362
+ </a>
363
+ </div>
364
+
365
+ <div class="method-description">
366
+ <p>
367
+ Prevents all parameters from being reassigned.
368
+ </p>
369
+ <p><a class="source-toggle" href="#"
370
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
371
+ <div class="method-source-code" id="M000013-source">
372
+ <pre>
373
+ <span class="ruby-comment cmt"># File lib/configatron/store.rb, line 85</span>
374
+ 85: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">protect_all!</span>
375
+ 86: <span class="ruby-ivar">@_protected</span>.<span class="ruby-identifier">clear</span>
376
+ 87: <span class="ruby-ivar">@_store</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
377
+ 88: <span class="ruby-identifier">val</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">k</span>)
378
+ 89: <span class="ruby-identifier">val</span>.<span class="ruby-identifier">protect_all!</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Configatron</span><span class="ruby-operator">::</span><span class="ruby-constant">Store</span>
379
+ 90: <span class="ruby-ivar">@_protected</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">k</span>
380
+ 91: <span class="ruby-keyword kw">end</span>
381
+ 92: <span class="ruby-keyword kw">end</span>
343
382
  </pre>
344
383
  </div>
345
384
  </div>
@@ -454,6 +493,59 @@ Returns a Hash representing the configurations
454
493
  </div>
455
494
  </div>
456
495
 
496
+ <div id="method-M000014" class="method-detail">
497
+ <a name="M000014"></a>
498
+
499
+ <div class="method-heading">
500
+ <a href="#M000014" class="method-signature">
501
+ <span class="method-name">unprotect</span><span class="method-args">(name)</span>
502
+ </a>
503
+ </div>
504
+
505
+ <div class="method-description">
506
+ <p>
507
+ Removes the protection of a parameter.
508
+ </p>
509
+ <p><a class="source-toggle" href="#"
510
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
511
+ <div class="method-source-code" id="M000014-source">
512
+ <pre>
513
+ <span class="ruby-comment cmt"># File lib/configatron/store.rb, line 95</span>
514
+ 95: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unprotect</span>(<span class="ruby-identifier">name</span>)
515
+ 96: <span class="ruby-ivar">@_protected</span>.<span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">e</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span> }
516
+ 97: <span class="ruby-keyword kw">end</span>
517
+ </pre>
518
+ </div>
519
+ </div>
520
+ </div>
521
+
522
+ <div id="method-M000015" class="method-detail">
523
+ <a name="M000015"></a>
524
+
525
+ <div class="method-heading">
526
+ <a href="#M000015" class="method-signature">
527
+ <span class="method-name">unprotect_all!</span><span class="method-args">()</span>
528
+ </a>
529
+ </div>
530
+
531
+ <div class="method-description">
532
+ <p><a class="source-toggle" href="#"
533
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
534
+ <div class="method-source-code" id="M000015-source">
535
+ <pre>
536
+ <span class="ruby-comment cmt"># File lib/configatron/store.rb, line 99</span>
537
+ 99: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unprotect_all!</span>
538
+ 100: <span class="ruby-ivar">@_protected</span>.<span class="ruby-identifier">clear</span>
539
+ 101: <span class="ruby-ivar">@_store</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
540
+ 102: <span class="ruby-identifier">val</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">k</span>)
541
+ 103: <span class="ruby-identifier">val</span>.<span class="ruby-identifier">unprotect_all!</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Configatron</span><span class="ruby-operator">::</span><span class="ruby-constant">Store</span>
542
+ 104: <span class="ruby-keyword kw">end</span>
543
+ 105: <span class="ruby-keyword kw">end</span>
544
+ </pre>
545
+ </div>
546
+ </div>
547
+ </div>
548
+
457
549
 
458
550
  </div>
459
551
 
@@ -80,7 +80,7 @@
80
80
  <h3 class="section-bar">Methods</h3>
81
81
 
82
82
  <div class="name-list">
83
- <a href="#M000015">configatron</a>&nbsp;&nbsp;
83
+ <a href="#M000018">configatron</a>&nbsp;&nbsp;
84
84
  </div>
85
85
  </div>
86
86
 
@@ -102,11 +102,11 @@
102
102
  <div id="methods">
103
103
  <h3 class="section-bar">Public Instance methods</h3>
104
104
 
105
- <div id="method-M000015" class="method-detail">
106
- <a name="M000015"></a>
105
+ <div id="method-M000018" class="method-detail">
106
+ <a name="M000018"></a>
107
107
 
108
108
  <div class="method-heading">
109
- <a href="#M000015" class="method-signature">
109
+ <a href="#M000018" class="method-signature">
110
110
  <span class="method-name">configatron</span><span class="method-args">()</span>
111
111
  </a>
112
112
  </div>
@@ -117,8 +117,8 @@ Provides access to the <a href="Configatron.html">Configatron</a> storage
117
117
  system.
118
118
  </p>
119
119
  <p><a class="source-toggle" href="#"
120
- onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
121
- <div class="method-source-code" id="M000015-source">
120
+ onclick="toggleCode('M000018-source');return false;">[Source]</a></p>
121
+ <div class="method-source-code" id="M000018-source">
122
122
  <pre>
123
123
  <span class="ruby-comment cmt"># File lib/configatron/kernel.rb, line 4</span>
124
124
  4: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">configatron</span>
@@ -1 +1 @@
1
- Wed, 17 Sep 2008 15:25:17 -0400
1
+ Thu, 18 Sep 2008 12:40:45 -0400
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Sep 17 14:47:44 -0400 2008</td>
59
+ <td>Thu Sep 18 12:34:39 -0400 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Sep 17 15:15:24 -0400 2008</td>
59
+ <td>Thu Sep 18 12:34:39 -0400 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Sep 17 15:16:26 -0400 2008</td>
59
+ <td>Thu Sep 18 12:34:39 -0400 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Sep 17 14:47:44 -0400 2008</td>
59
+ <td>Thu Sep 18 12:34:39 -0400 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Sep 17 15:16:26 -0400 2008</td>
59
+ <td>Thu Sep 18 12:39:14 -0400 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Sep 17 15:02:18 -0400 2008</td>
59
+ <td>Thu Sep 18 12:34:39 -0400 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -20,21 +20,24 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/Kernel.html#M000015">configatron (Kernel)</a><br />
23
+ <a href="classes/Kernel.html#M000018">configatron (Kernel)</a><br />
24
24
  <a href="classes/Configatron/Store.html#M000006">configure_from_hash (Configatron::Store)</a><br />
25
25
  <a href="classes/Configatron/Store.html#M000007">configure_from_yaml (Configatron::Store)</a><br />
26
- <a href="classes/Configatron/Store.html#M000013">deep_clone (Configatron::Store)</a><br />
27
- <a href="classes/Configatron/ProtectedParameter.html#M000014">intialize (Configatron::ProtectedParameter)</a><br />
26
+ <a href="classes/Configatron/Store.html#M000016">deep_clone (Configatron::Store)</a><br />
27
+ <a href="classes/Configatron/ProtectedParameter.html#M000017">intialize (Configatron::ProtectedParameter)</a><br />
28
28
  <a href="classes/Configatron.html#M000001">method_missing (Configatron)</a><br />
29
29
  <a href="classes/Configatron/Store.html#M000004">new (Configatron::Store)</a><br />
30
30
  <a href="classes/Configatron/Store.html#M000008">nil? (Configatron::Store)</a><br />
31
31
  <a href="classes/Configatron/Store.html#M000012">protect (Configatron::Store)</a><br />
32
+ <a href="classes/Configatron/Store.html#M000013">protect_all! (Configatron::Store)</a><br />
32
33
  <a href="classes/Configatron/Store.html#M000010">remove (Configatron::Store)</a><br />
33
34
  <a href="classes/Configatron.html#M000002">reset! (Configatron)</a><br />
34
35
  <a href="classes/Configatron/Store.html#M000009">retrieve (Configatron::Store)</a><br />
35
36
  <a href="classes/Configatron/Store.html#M000011">set_default (Configatron::Store)</a><br />
36
37
  <a href="classes/Configatron.html#M000003">temp (Configatron)</a><br />
37
38
  <a href="classes/Configatron/Store.html#M000005">to_hash (Configatron::Store)</a><br />
39
+ <a href="classes/Configatron/Store.html#M000014">unprotect (Configatron::Store)</a><br />
40
+ <a href="classes/Configatron/Store.html#M000015">unprotect_all! (Configatron::Store)</a><br />
38
41
  </div>
39
42
  </div>
40
43
  </body>
@@ -75,10 +75,35 @@ class Configatron
75
75
  self.to_hash == other
76
76
  end
77
77
 
78
+ # Prevents a parameter from being reassigned. If called on a 'namespace' then
79
+ # all parameters below it will be protected as well.
78
80
  def protect(name)
79
81
  @_protected << name.to_sym
80
82
  end
81
83
 
84
+ # Prevents all parameters from being reassigned.
85
+ def protect_all!
86
+ @_protected.clear
87
+ @_store.keys.each do |k|
88
+ val = self.send(k)
89
+ val.protect_all! if val.class == Configatron::Store
90
+ @_protected << k
91
+ end
92
+ end
93
+
94
+ # Removes the protection of a parameter.
95
+ def unprotect(name)
96
+ @_protected.reject! { |e| e == name.to_sym }
97
+ end
98
+
99
+ def unprotect_all!
100
+ @_protected.clear
101
+ @_store.keys.each do |k|
102
+ val = self.send(k)
103
+ val.unprotect_all! if val.class == Configatron::Store
104
+ end
105
+ end
106
+
82
107
  # = DeepClone
83
108
  #
84
109
  # == Version
@@ -39,6 +39,36 @@ describe "configatron" do
39
39
  lambda{configatron.configure_from_hash(:letters => 'letters')}.should raise_error(Configatron::ProtectedParameter)
40
40
  end
41
41
 
42
+ it "should be able to protect all parameters at once" do
43
+ configatron.one = 1
44
+ configatron.letters.a = 'A'
45
+ configatron.letters.b = 'B'
46
+ configatron.protect_all!
47
+ [:a,:b].each do |l|
48
+ lambda{configatron.configure_from_hash(:letters => {l => l.to_s})}.should raise_error(Configatron::ProtectedParameter)
49
+ configatron.letters.send(l).should == l.to_s.upcase
50
+ end
51
+ lambda{configatron.letters.configure_from_hash(:a => 'a')}.should raise_error(Configatron::ProtectedParameter)
52
+ lambda{configatron.configure_from_hash(:letters => 'letters')}.should raise_error(Configatron::ProtectedParameter)
53
+ end
54
+
55
+ it "should be able to unprotect a parameter" do
56
+ configatron.one = 1
57
+ configatron.protect(:one)
58
+ configatron.unprotect(:one)
59
+ lambda{configatron.one = 2}.should_not raise_error
60
+ end
61
+
62
+ it "should be able to unprotect all parameters at once" do
63
+ configatron.one = 1
64
+ configatron.letters.a = 'A'
65
+ configatron.letters.b = 'B'
66
+ configatron.protect_all!
67
+ configatron.unprotect_all!
68
+ lambda{configatron.one = 2}.should_not raise_error
69
+ lambda{configatron.letters.configure_from_hash(:a => 'a')}.should_not raise_error
70
+ end
71
+
42
72
  end
43
73
 
44
74
  describe 'temp' do
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.0.0
4
+ version: 2.1.0
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: 2008-09-17 00:00:00 -04:00
12
+ date: 2008-09-18 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15