<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -12,8 +12,9 @@ Example goes here.
 
 h2. Credits
 
-* &quot;Przemys&#322;aw Kowalczyk&quot;:http://szeryf.wordpress.com/2008/06/13/easy-and-flexible-breadcrumbs-for-rails/ - the base of this code
 * &quot;Zach Inglis&quot;:http://zachinglis.com
+* &quot;Rein Henrichs&quot;:http://reinh.com
 * &quot;Les Hill&quot;:http://blog.leshill.org/
+* &quot;Przemys&#322;aw Kowalczyk&quot;:http://szeryf.wordpress.com/2008/06/13/easy-and-flexible-breadcrumbs-for-rails/ - feature ideas
 
 *Copyright (c) 2008 Zach Inglis, released under the MIT license*</diff>
      <filename>README.textile</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,2 @@
-# Include hook code here
+ActionController::Base.send :include, Crummy::ControllerMethods
+ActionView::Base.send       :include, Crummy::ViewMethods</diff>
      <filename>init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,66 @@
-# Crummy
+module Crummy
+  module ControllerMethods
+    module ClassMethods
+      def add_crumb(name, url = nil)
+        before_filter options do |instance|
+          raise ArgumentError, &quot;Cannot pass url and use block&quot; if url &amp;&amp; block_given?
+          url = yield instance if block_given?
+          
+          instance.add_crumb(name, url)
+        end
+      end
+    end
+
+    module InstanceMethods
+      def add_crumb(name, url='')
+        crumbs.push [name, url]
+      end
+
+      def crumbs
+        get_or_set_ivar &quot;@_crumbs&quot;, []
+      end
+
+      # :nodoc:
+      def get_or_set_ivar(var, value)
+        instance_variable_set var, instance_variable_get(var) || value
+      end
+      private :get_or_set_ivar
+    end
+
+    def self.included(receiver)
+      receiver.extend         ClassMethods
+      receiver.send :include, InstanceMethods
+    end
+  end
+  
+  module ViewMethods
+    def crumbs
+      @_crumbs || []
+    end
+    
+    def render_crumbs
+      crumbs.collect do |crumb|
+        crumb_to_html crumb
+      end
+    end
+    
+    def crumb_to_html(crumb)
+      name, url = crumb
+      url ? link_to(name, url) : name
+    end
+  end
+end
+
+# class EventsController &lt; ApplicationController
+#   add_crumb &quot;Home&quot;, '/' # really in application.rb
+#   add_crumb &quot;Events&quot; { |instance| instance.events_path }
+# 
+#   def index
+#   end
+#   
+#   def show
+#     add_crumb @event.display_name, @event
+#   end
+# end
+# 
+# Home &gt; Events &gt; Some Event</diff>
      <filename>lib/crummy.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7dabc8f3a6881b707cd2abc1a4a02621c0c1eaea</id>
    </parent>
  </parents>
  <author>
    <name>Zach Inglis</name>
    <email>zach@lt3media.com</email>
  </author>
  <url>http://github.com/zachinglis/crummy/commit/79117cef6cb3c2886b1971fe316c0708228c0d61</url>
  <id>79117cef6cb3c2886b1971fe316c0708228c0d61</id>
  <committed-date>2008-06-25T10:58:06-07:00</committed-date>
  <authored-date>2008-06-25T10:58:06-07:00</authored-date>
  <message>Basic code in place</message>
  <tree>80fb29c9c5452d7d0e0dfa00d8001485f63ca8da</tree>
  <committer>
    <name>Zach Inglis</name>
    <email>zach@lt3media.com</email>
  </committer>
</commit>
