caesars 0.6.7 → 0.6.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/CHANGES.txt +5 -0
  2. data/caesars.gemspec +1 -1
  3. data/lib/caesars.rb +46 -18
  4. metadata +2 -2
data/CHANGES.txt CHANGED
@@ -1,6 +1,11 @@
1
1
  CAESARS -- CHANGES
2
2
 
3
3
 
4
+ #### 0.6.8 (2009-06-01) ###############################
5
+
6
+ * ADDED: forced_array elements now store blocks as Procs (they were previously ignored)
7
+ * ADDED: drill to test the new forced_array functionality.
8
+
4
9
  #### 0.6.7 (2009-05-23) ###############################
5
10
 
6
11
  * FIXED: Bug in inherited when calling from an anonymous class
data/caesars.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  @spec = Gem::Specification.new do |s|
2
2
  s.name = "caesars"
3
3
  s.rubyforge_project = "caesars"
4
- s.version = "0.6.7"
4
+ s.version = "0.6.8"
5
5
  s.specification_version = 1 if s.respond_to? :specification_version=
6
6
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
7
 
data/lib/caesars.rb CHANGED
@@ -314,27 +314,43 @@ class Caesars
314
314
  end
315
315
 
316
316
  if b
317
- # Use the name of the bloody method if no name is supplied.
318
- args << meth if args.empty?
319
-
320
- args.each do |name|
321
- prev = @caesars_pointer
322
- @caesars_pointer[name] ||= Caesars::Hash.new
323
- if Caesars.chilled?(meth)
324
- @caesars_pointer[name] = b
325
- else
326
- @caesars_pointer = @caesars_pointer[name]
327
- begin
328
- b.call if b
329
- rescue ArgumentError, SyntaxError => ex
330
- STDERR.puts "CAESARS: error in #{meth} (#{args.join(', ')})"
331
- raise ex
317
+ if Caesars.forced_array?(meth)
318
+ @caesars_pointer[meth] ||= []
319
+ args << b # Forced array blocks are always chilled and at the end
320
+ @caesars_pointer[meth] << args
321
+ else
322
+ # We loop through each of the arguments sent to "meth".
323
+ # Elements are added for each of the arguments and the
324
+ # contents of the block will be applied to each one.
325
+ # This is an important feature for Rudy configs since
326
+ # it allows defining several environments, roles, etc
327
+ # at the same time.
328
+ # env :dev, :stage, :prod do
329
+ # ...
330
+ # end
331
+
332
+ # Use the name of the method if no name is supplied.
333
+ args << meth if args.empty?
334
+
335
+ args.each do |name|
336
+ prev = @caesars_pointer
337
+ @caesars_pointer[name] ||= Caesars::Hash.new
338
+ if Caesars.chilled?(meth)
339
+ @caesars_pointer[name] = b
340
+ else
341
+ @caesars_pointer = @caesars_pointer[name]
342
+ begin
343
+ b.call if b
344
+ rescue ArgumentError, SyntaxError => ex
345
+ STDERR.puts "CAESARS: error in #{meth} (#{args.join(', ')})"
346
+ raise ex
347
+ end
348
+ @caesars_pointer = prev
332
349
  end
333
- @caesars_pointer = prev
334
350
  end
335
351
  end
336
-
337
- # We've seen this attribute before, add the valued to the existing element
352
+
353
+ # We've seen this attribute before, add the value to the existing element
338
354
  elsif @caesars_pointer.kind_of?(Hash) && @caesars_pointer[meth]
339
355
 
340
356
  if Caesars.forced_array?(meth)
@@ -467,6 +483,18 @@ class Caesars
467
483
  #
468
484
  # @food.sauce # => [[:tabasco, :worcester], [:franks]]
469
485
  #
486
+ # The blocks for elements that are specified as forced_array
487
+ # will be chilled (stored as Proc objects). The block is put
488
+ # at the end of the Array. e.g.
489
+ #
490
+ # food do
491
+ # sauce :arg1, :arg2 do
492
+ # ...
493
+ # end
494
+ # end
495
+ #
496
+ # @food.sauce # => [[:inline_method, :arg1, :arg2, #<Proc:0x1fa552>]]
497
+ #
470
498
  def self.forced_array(caesars_meth)
471
499
  STDERR.puts "forced_array: #{caesars_meth}" if Caesars.debug?
472
500
  Caesars.add_known_symbol(self, caesars_meth)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caesars
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.7
4
+ version: 0.6.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-23 00:00:00 -04:00
12
+ date: 2009-06-01 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15