<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/blockenspiel/versionomy.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,11 @@
+=== 0.3.1 / 2009-11-08
+
+* Blockenspiel#invoke can now take its options hash as the second argument
+  (instead of the third) when using dynamic target generation, since the
+  second argument is otherwise unused in this case.
+* Now defines Blockenspiel::VERSION, as a versionomy object if the
+  versionomy library is available, or as a version string if not.
+
 === 0.3.0 / 2009-11-04
 
 * dsl_attr_writer and dsl_attr_accessor convenience methods are available</diff>
      <filename>History.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -655,6 +655,10 @@ module Blockenspiel
   # 
   # See the Blockenspiel::Builder class for more details on add_method.
   # 
+  # When using dynamic target generation, you may pass the options hash as
+  # the second argument to invoke instead of the third, since you will not
+  # be passing a target object as the second argument.
+  # 
   # (And yes, you guessed it: this API is a DSL block, and is itself
   # implemented using Blockenspiel.)
   
@@ -663,6 +667,18 @@ module Blockenspiel
     unless block_
       raise ::ArgumentError, &quot;Block expected&quot;
     end
+    
+    # Perform dynamic target generation if requested
+    if builder_block_
+      # Support passing the opts hash as the second argument since we
+      # aren't passing a target as an argument.
+      opts_ = target_ || opts_
+      builder_ = ::Blockenspiel::Builder.new
+      invoke(builder_block_, builder_)
+      target_ = builder_._create_target
+    end
+    
+    # Read options
     parameter_ = opts_[:parameter]
     parameterless_ = opts_[:parameterless]
     
@@ -674,14 +690,6 @@ module Blockenspiel
       return block_.call
     end
     
-    # Perform dynamic target generation if requested
-    if builder_block_
-      opts_ = target_ || opts_
-      builder_ = ::Blockenspiel::Builder.new
-      invoke(builder_block_, builder_)
-      target_ = builder_._create_target
-    end
-    
     # Handle parametered block case
     if parameter_ != false &amp;&amp; block_.arity == 1 || parameterless_ == false
       if block_.arity != 1</diff>
      <filename>lib/blockenspiel/impl.rb</filename>
    </modified>
    <modified>
      <diff>@@ -37,6 +37,8 @@
 module Blockenspiel
   
   # Current gem version, as a frozen string.
-  VERSION_STRING = '0.3.0'.freeze
+  VERSION_STRING = '0.3.1'.freeze
+  
+  autoload(:VERSION, ::File.dirname(__FILE__)+'/versionomy.rb')
   
 end</diff>
      <filename>lib/blockenspiel/version.rb</filename>
    </modified>
    <modified>
      <diff>@@ -197,6 +197,25 @@ end
       end
       
       
+      # Test passing options in.
+      # 
+      # * Asserts that the &quot;parameter&quot; option is recognized
+      
+      def test_options_recognized
+        block_ = ::Proc.new do
+          set_value(:a, 1)
+        end
+        hash_ = ::Hash.new
+        assert_raise(::Blockenspiel::BlockParameterError) do
+          ::Blockenspiel.invoke(block_, :parameterless =&gt; false) do
+            add_method(:set_value) do |key_, value_|
+              hash_[key_] = value_
+            end
+          end
+        end
+      end
+      
+      
     end
     
   end</diff>
      <filename>tests/tc_dynamic.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>864b8f740b0fdb49d3f13a6d45b7ce9cc225a7b4</id>
    </parent>
  </parents>
  <author>
    <name>Daniel Azuma</name>
    <email>dazuma@gmail.com</email>
  </author>
  <url>http://github.com/dazuma/blockenspiel/commit/2950c1ff71f5abb8731e38c5f2e49b53dce11854</url>
  <id>2950c1ff71f5abb8731e38c5f2e49b53dce11854</id>
  <committed-date>2009-11-08T14:46:42-08:00</committed-date>
  <authored-date>2009-11-08T14:46:42-08:00</authored-date>
  <message>Changes for 0.3.1</message>
  <tree>ba1244f35a1ef80ecaa3d8074b7b3ee787b91380</tree>
  <committer>
    <name>Daniel Azuma</name>
    <email>dazuma@gmail.com</email>
  </committer>
</commit>
