Class: Gretel::Crumbs
- Inherits:
-
Object
- Object
- Gretel::Crumbs
- Defined in:
- lib/gretel/crumbs.rb
Class Method Summary collapse
- .all ⇒ Object
- .crumb(name, &block) ⇒ Object
- .get_crumb(name, object = nil) ⇒ Object
- .layout(&block) ⇒ Object
- .link(*args) ⇒ Object
- .parent(name, object = nil) ⇒ Object
Class Method Details
.all ⇒ Object
11 12 13 |
# File 'lib/gretel/crumbs.rb', line 11 def all @crumbs ||= {} end |
.crumb(name, &block) ⇒ Object
15 16 17 |
# File 'lib/gretel/crumbs.rb', line 15 def crumb(name, &block) all[name] = block end |
.get_crumb(name, object = nil) ⇒ Object
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/gretel/crumbs.rb', line 19 def get_crumb(name, object = nil) crumb = all[name] raise ArgumentError, "Breadcrumb :#{name} not found." unless crumb @object = object # share the object so we can call it from link() and parent() @parent = nil crumb.call(object) Gretel::Crumb.new(@links, @parent) end |
.layout(&block) ⇒ Object
4 5 6 7 8 9 |
# File 'lib/gretel/crumbs.rb', line 4 def layout(&block) # needs to be done here because Rails.application isn't set when this file is required self.class.send :include, Rails.application.routes.url_helpers instance_eval &block end |
.link(*args) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/gretel/crumbs.rb', line 30 def link(*args) = args. text = args[0] url = args[1] text = text.call(@object) if text.is_a?(Proc) url = url.call(@object) if url.is_a?(Proc) @links ||= [] @links << Gretel::Link.new(text, url, ) @links end |