<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>.gitignore</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -14,8 +14,8 @@ spec = Gem::Specification.new do |s|
   s.required_ruby_version = '&gt;= 1.8.6'
   s.name = &quot;functor&quot;
   s.rubyforge_project = 'functor'
-  s.version = &quot;0.3&quot;
-  s.authors = [&quot;Dan Yoder&quot;]
+  s.version = &quot;0.3.1&quot;
+  s.authors = [ &quot;Dan Yoder&quot;, &quot;Matthew King&quot;, &quot;Lawrence Pit&quot; ]
   s.email = 'dan@zeraweb.com'
   s.homepage = 'http://dev.zeraweb.com/'
   s.summary  = &quot;Pattern-based dispatch for Ruby, inspired by Topher Cyll's multi.&quot;
@@ -46,16 +46,15 @@ task :gemspec do
   end
 end
 
-#desc 'Publish rdoc to RubyForge.'
-#task :publish do
-#  # `rsync -avz --delete doc/rdoc/ dyoder67@rubyforge.org:/var/www/gforge-projects/autocode/`
-#  `scp -r doc/rdoc dyoder67@rubyforge.org:/var/www/gforge-projects/autocode/`
-#end
+desc 'Publish rdoc to RubyForge.'
+task :publish do
+  `rsync -a --delete doc/rdoc/ dyoder67@rubyforge.org:/var/www/gforge-projects/functor/`
+end
 
 Rake::RDocTask.new do |rdoc|
   rdoc.rdoc_dir = 'doc/rdoc'
   rdoc.options &lt;&lt; '--line-numbers'
-  rdoc.rdoc_files.add([ 'README', 'HISTORY', 'lib/*.rb' ])
+  rdoc.rdoc_files.add([ 'doc/README', 'doc/HISTORY', 'lib/*.rb' ])
 end
 
 Rake::TestTask.new(:test) do |t|</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,4 @@
 0.1 - Initial implemention of Functor class.
 0.2 - Added method dispatch, to_proc support, tests.
-0.3 - Added support for guards and redefinition.
\ No newline at end of file
+0.3 - Added support for guards and redefinition.
+0.3.1 - Made thread-safe and added ability to call base class functors.
\ No newline at end of file</diff>
      <filename>doc/HISTORY</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ Functor provides pattern-based function and method dispatch for Ruby. To use it
   r.times = 5
   r.repeat( 5 )   # =&gt; 25
   r.repeat( &quot;-&quot; ) # =&gt; &quot;- - - - -&quot;
-  r.repeat( 7.3 ) # =&gt; RuntimeError!
+  r.repeat( 7.3 ) # =&gt; ArgumentError!
 
 Warning: This defines a class instance variable @__functors behind the scenes as a side-effect. Also, although inheritance works within a functor method, super does not. To call the parent method, you need to call it explicitly using the #functors class method, like this:
 
@@ -29,10 +29,17 @@ You can use functors directly with functions taking a block like this:
 
   [ *0..10 ].map( &amp;fib )  # =&gt; [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
   
-You can explicitly bind self using #bind:
+You can call a functor as a method using #apply:
 
-  fun.bind( obj )
+  fun.apply( obj, 7 )
   
 which is actually how the method dispatch is implemented.
 
-Arguments are matched first using === and then ==, so anything that supports these methods can be matched against.
\ No newline at end of file
+Arguments are matched first using === and then ==, so anything that supports these methods can be matched against. In addition, you may pass &quot;guards,&quot; any object that responds to #call and which take and object (the argument) and return true or false. This allows you to do things like this:
+
+  stripe ||= Functor.new do
+    given( lambda { |x| x % 2 == 0 } ) { 'white' }
+    given( lambda { |x| x % 2 == 1 } ) { 'silver' }
+  end
+
+which will return &quot;white&quot; and &quot;silver&quot; alternately for a sequence of numbers.
\ No newline at end of file</diff>
      <filename>doc/README</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,14 @@
 Gem::Specification.new do |s|
   s.name = %q{functor}
-  s.version = &quot;0.2&quot;
+  s.version = &quot;0.3.1&quot;
 
   s.specification_version = 2 if s.respond_to? :specification_version=
 
   s.required_rubygems_version = Gem::Requirement.new(&quot;&gt;= 0&quot;) if s.respond_to? :required_rubygems_version=
-  s.authors = [&quot;Dan Yoder&quot;]
-  s.date = %q{2008-06-09}
+  s.authors = [&quot;Dan Yoder&quot;, &quot;Matthew King&quot;, &quot;Lawrence Pit&quot;]
+  s.date = %q{2008-06-15}
   s.email = %q{dan@zeraweb.com}
-  s.files = [&quot;doc/HISTORY&quot;, &quot;doc/README&quot;, &quot;lib/functor.rb&quot;, &quot;lib/object.rb&quot;, &quot;test/fib.rb&quot;, &quot;test/functor.rb&quot;, &quot;test/helpers.rb&quot;, &quot;test/inheritance.rb&quot;]
+  s.files = [&quot;doc/HISTORY&quot;, &quot;doc/README&quot;, &quot;lib/functor.rb&quot;, &quot;lib/object.rb&quot;, &quot;test/fib.rb&quot;, &quot;test/functor.rb&quot;, &quot;test/guards.rb&quot;, &quot;test/helpers.rb&quot;, &quot;test/inheritance.rb&quot;, &quot;test/matchers.rb&quot;, &quot;test/reopening.rb&quot;]
   s.has_rdoc = true
   s.homepage = %q{http://dev.zeraweb.com/}
   s.require_paths = [&quot;lib&quot;]</diff>
      <filename>functor.gemspec</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>e147eeb2a89f384dc26921c6494fdda544debd18</id>
    </parent>
  </parents>
  <author>
    <name>Dan Yoder</name>
    <email>dan@zeraweb.com</email>
  </author>
  <url>http://github.com/dyoder/functor/commit/d2f0932485a31b610edf8b580ffd59296bedc71c</url>
  <id>d2f0932485a31b610edf8b580ffd59296bedc71c</id>
  <committed-date>2008-06-15T18:16:12-07:00</committed-date>
  <authored-date>2008-06-15T18:16:12-07:00</authored-date>
  <message>Updated docs and gemspec.</message>
  <tree>b9cee55353bc10b1a4cba3be20352ee7fc5e7e9a</tree>
  <committer>
    <name>Dan Yoder</name>
    <email>dan@zeraweb.com</email>
  </committer>
</commit>
