gretel 1.2.1 → 2.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/.gitignore +23 -0
  2. data/.travis.yml +6 -0
  3. data/CHANGELOG.md +15 -0
  4. data/Gemfile +17 -0
  5. data/Gemfile.lock +98 -0
  6. data/{MIT-LICENSE → LICENSE.txt} +3 -1
  7. data/README.md +56 -62
  8. data/Rakefile +6 -34
  9. data/gretel.gemspec +22 -0
  10. data/lib/generators/gretel/templates/initializer.rb +2 -3
  11. data/lib/gretel/crumb.rb +33 -4
  12. data/lib/gretel/crumbs.rb +20 -40
  13. data/lib/gretel/link.rb +4 -4
  14. data/lib/gretel/version.rb +3 -0
  15. data/lib/gretel/view_helpers.rb +122 -0
  16. data/lib/gretel.rb +4 -5
  17. data/test/dummy/app/mailers/.gitkeep +0 -0
  18. data/test/dummy/app/models/.gitkeep +0 -0
  19. data/test/dummy/config/initializers/breadcrumbs.rb +21 -0
  20. data/test/dummy/config/initializers/session_store.rb +1 -1
  21. data/test/dummy/config/initializers/wrap_parameters.rb +1 -1
  22. data/test/dummy/lib/assets/.gitkeep +0 -0
  23. data/test/dummy/log/.gitkeep +0 -0
  24. data/test/helper_methods_test.rb +76 -51
  25. metadata +38 -48
  26. data/lib/gretel/helper_methods.rb +0 -122
  27. data/lib/gretel/parent.rb +0 -9
  28. data/lib/gretel/view_link.rb +0 -13
  29. data/test/dummy/db/development.sqlite3 +0 -0
  30. data/test/dummy/db/test.sqlite3 +0 -0
  31. data/test/dummy/log/development.log +0 -899
  32. data/test/dummy/log/test.log +0 -9038
  33. data/test/dummy/tmp/cache/assets/CD0/C10/sprockets%2F54298310314d4114afd54d090ef4eae3 +0 -0
  34. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  35. data/test/dummy/tmp/cache/assets/D11/910/sprockets%2Fa4743dda75a6c1d923065da98d729f21 +0 -0
  36. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  37. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  38. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  39. data/test/dummy/tmp/cache/assets/D5F/7E0/sprockets%2F25f5ca97d1c1c044514dd8d2c5cb6d02 +0 -0
  40. data/test/dummy/tmp/cache/assets/D79/060/sprockets%2Fa2cf91ba98db7115dd35bcd7881934f8 +0 -0
  41. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  42. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
data/.gitignore ADDED
@@ -0,0 +1,23 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ log/*.log
19
+ test/dummy/db/*.sqlite3
20
+ test/dummy/log/*.log
21
+ test/dummy/tmp/
22
+ test/dummy/.sass-cache
23
+ .DS_Store
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 1.8.7
5
+ before_script:
6
+ - "cd test/dummy; rake db:migrate; rake db:test:prepare; cd ../.."
data/CHANGELOG.md ADDED
@@ -0,0 +1,15 @@
1
+ Changelog
2
+ =========
3
+
4
+ Version 2.0
5
+ -----------
6
+
7
+ * Totally rewritten for better structure.
8
+ * `options[:autoroot]` is now `true` by default which means it will automatically link to the `:root` breadcrumb if no parent is specified.
9
+ * Now accepts `options[:class]` for specifying the CSS class for the breadcrumbs container. Default: `"breadcrumbs"`.
10
+ * Now accepts `options[:current_class]` for specifying the CSS class for the current link / span. Default: `"current"`.
11
+ * `options[:link_last]` was deprecated in a previous version and is now removed. Use `options[:link_current]` instead.
12
+ * The `link` method in `crumb :xx do ... end` no longer takes HTML options. The method for this is now by building the breadcrumbs manually (see the readme).
13
+ * No longer supports procs for link text or URL as this is unnecessary when you can pass arguments to the block anyway.
14
+ * It now accepts multiple arguments for `crumb` and `parent` (see the readme).
15
+ * Breadcrumbs are now rendered with `<%= breadcrumbs %>`, although you can still use the old `<%= breadcrumb %>` (without *s*).
data/Gemfile ADDED
@@ -0,0 +1,17 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Declare your gem's dependencies in gretel.gemspec.
4
+ # Bundler will treat runtime dependencies like base dependencies, and
5
+ # development dependencies will be added by default to the :development group.
6
+ gemspec
7
+
8
+ # jquery-rails is used by the dummy application
9
+ gem "jquery-rails"
10
+
11
+ # Declare any dependencies that are still in development here instead of in
12
+ # your gemspec. These might include edge Rails or gems from your path or
13
+ # Git. Remember to move these dependencies to your gemspec before releasing
14
+ # your gem to rubygems.org.
15
+
16
+ # To use debugger
17
+ # gem 'debugger'
data/Gemfile.lock ADDED
@@ -0,0 +1,98 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gretel (2.0.0.beta1)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ actionmailer (3.2.11)
10
+ actionpack (= 3.2.11)
11
+ mail (~> 2.4.4)
12
+ actionpack (3.2.11)
13
+ activemodel (= 3.2.11)
14
+ activesupport (= 3.2.11)
15
+ builder (~> 3.0.0)
16
+ erubis (~> 2.7.0)
17
+ journey (~> 1.0.4)
18
+ rack (~> 1.4.0)
19
+ rack-cache (~> 1.2)
20
+ rack-test (~> 0.6.1)
21
+ sprockets (~> 2.2.1)
22
+ activemodel (3.2.11)
23
+ activesupport (= 3.2.11)
24
+ builder (~> 3.0.0)
25
+ activerecord (3.2.11)
26
+ activemodel (= 3.2.11)
27
+ activesupport (= 3.2.11)
28
+ arel (~> 3.0.2)
29
+ tzinfo (~> 0.3.29)
30
+ activeresource (3.2.11)
31
+ activemodel (= 3.2.11)
32
+ activesupport (= 3.2.11)
33
+ activesupport (3.2.11)
34
+ i18n (~> 0.6)
35
+ multi_json (~> 1.0)
36
+ arel (3.0.2)
37
+ builder (3.0.4)
38
+ erubis (2.7.0)
39
+ hike (1.2.1)
40
+ i18n (0.6.1)
41
+ journey (1.0.4)
42
+ jquery-rails (2.2.0)
43
+ railties (>= 3.0, < 5.0)
44
+ thor (>= 0.14, < 2.0)
45
+ json (1.7.6)
46
+ mail (2.4.4)
47
+ i18n (>= 0.4.0)
48
+ mime-types (~> 1.16)
49
+ treetop (~> 1.4.8)
50
+ mime-types (1.19)
51
+ multi_json (1.5.0)
52
+ polyglot (0.3.3)
53
+ rack (1.4.4)
54
+ rack-cache (1.2)
55
+ rack (>= 0.4)
56
+ rack-ssl (1.3.2)
57
+ rack
58
+ rack-test (0.6.2)
59
+ rack (>= 1.0)
60
+ rails (3.2.11)
61
+ actionmailer (= 3.2.11)
62
+ actionpack (= 3.2.11)
63
+ activerecord (= 3.2.11)
64
+ activeresource (= 3.2.11)
65
+ activesupport (= 3.2.11)
66
+ bundler (~> 1.0)
67
+ railties (= 3.2.11)
68
+ railties (3.2.11)
69
+ actionpack (= 3.2.11)
70
+ activesupport (= 3.2.11)
71
+ rack-ssl (~> 1.3.2)
72
+ rake (>= 0.8.7)
73
+ rdoc (~> 3.4)
74
+ thor (>= 0.14.6, < 2.0)
75
+ rake (10.0.3)
76
+ rdoc (3.12)
77
+ json (~> 1.4)
78
+ sprockets (2.2.2)
79
+ hike (~> 1.2)
80
+ multi_json (~> 1.0)
81
+ rack (~> 1.0)
82
+ tilt (~> 1.1, != 1.3.0)
83
+ sqlite3 (1.3.7)
84
+ thor (0.16.0)
85
+ tilt (1.3.3)
86
+ treetop (1.4.12)
87
+ polyglot
88
+ polyglot (>= 0.3.1)
89
+ tzinfo (0.3.35)
90
+
91
+ PLATFORMS
92
+ ruby
93
+
94
+ DEPENDENCIES
95
+ gretel!
96
+ jquery-rails
97
+ rails (~> 3.2.11)
98
+ sqlite3
@@ -1,5 +1,7 @@
1
1
  Copyright (c) 2010-2013 Lasse Bunk
2
2
 
3
+ MIT License
4
+
3
5
  Permission is hereby granted, free of charge, to any person obtaining
4
6
  a copy of this software and associated documentation files (the
5
7
  "Software"), to deal in the Software without restriction, including
@@ -17,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
19
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
20
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
21
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://secure.travis-ci.org/lassebunk/gretel.png)](http://travis-ci.org/lassebunk/gretel)
2
+
1
3
  Gretel is a [Ruby on Rails](http://rubyonrails.org) plugin that makes it easy yet flexible to create breadcrumbs.
2
4
 
3
5
 
@@ -7,11 +9,14 @@ Installation
7
9
  In your *Gemfile*:
8
10
 
9
11
  ```ruby
10
- gem 'gretel'
12
+ gem 'gretel', '2.0.0.beta1'
11
13
  ```
12
14
 
13
- And run `bundle install`.
15
+ And run:
14
16
 
17
+ ```bash
18
+ $ bundle install
19
+ ```
15
20
 
16
21
  Example
17
22
  -------
@@ -26,36 +31,29 @@ Then, in *config/initializers/breadcrumbs.rb*:
26
31
 
27
32
  ```ruby
28
33
  Gretel::Crumbs.layout do
29
-
30
- # root crumb
34
+ # Root crumb
31
35
  crumb :root do
32
36
  link "Home", root_path
33
37
  end
34
38
 
35
- # custom styles
39
+ # Regular crumb
36
40
  crumb :projects do
37
- link "Projects", projects_path, :class => "breadcrumb", :style => "font-weight: bold;"
41
+ link "Projects", projects_path
38
42
  end
39
43
 
40
- # lambdas
41
- crumb :project do |project|
42
- link lambda { |project| "#{project.name} (#{project.id.to_s})" }, project_path(project)
43
- parent :projects
44
- end
45
-
46
- # parent crumbs
44
+ # Parent crumbs
47
45
  crumb :project_issues do |project|
48
46
  link "Issues", project_issues_path(project)
49
47
  parent :project, project
50
48
  end
51
49
 
52
- # child
50
+ # Child
53
51
  crumb :issue do |issue|
54
52
  link issue.name, issue_path(issue)
55
53
  parent :project_issues, issue.project
56
54
  end
57
55
 
58
- # multiple links per crumb (recursive links for parent categories)
56
+ # Multiple links per crumb (recursive links for parent categories)
59
57
  crumb :category do |category|
60
58
  parents = [category]
61
59
 
@@ -71,83 +69,79 @@ Gretel::Crumbs.layout do
71
69
  parent :categories
72
70
  end
73
71
 
74
- # product crumb with recursive parent categories
72
+ # Product crumb with recursive parent categories
75
73
  crumb :product do |product|
76
74
  link product.name, product
77
75
  parent :category, product.category
78
76
  end
77
+
78
+ # Multiple arguments
79
+ crumb :multiple_test do |a, b, c|
80
+ link "Test #{a}, #{b}, #{c}", test_path
81
+ parent :other_test, 3, 4, 5
82
+ end
79
83
  end
80
84
  ```
81
85
 
82
- At the top of *app/views/issues/show.html.erb*:
86
+ At the top of *app/views/issues/show.html.erb*, set the current breadcrumb:
83
87
 
84
88
  ```erb
85
89
  <% breadcrumb :issue, @issue %>
86
90
  ```
87
91
 
88
- In *app/views/layouts/application.html.erb*:
92
+ Then, in *app/views/layouts/application.html.erb*:
89
93
 
90
94
  ```erb
91
- <%= breadcrumb :pretext => "You are here: ",
92
- :posttext => " &laquo; that was the breadcrumbs!",
93
- :separator => " &rsaquo; ",
94
- :autoroot => true,
95
- :show_root_alone => true,
96
- :link_current => false,
97
- :semantic => true,
98
- :id => "topcrumbs"
99
- %>
95
+ <%= breadcrumbs :pretext => "You are here: ",
96
+ :separator => " &rsaquo; ",
97
+ :semantic => true %>
100
98
  ```
101
99
 
102
- This will generate a `<div>` containing the breadcrumbs.
100
+ This will generate a `<div class="breadcrumbs">` containing the breadcrumbs.
101
+
102
+ Building the breadcrumbs manually
103
+ ---------------------------------
103
104
 
104
- Or, if you want to customize your breadcrumbs:
105
+ If you supply a block to the `breadcrumbs` method, it will yield an array with the breadcrumb links so you can build the breadcrumbs HTML manually:
105
106
 
106
107
  ```erb
107
- <% breadcrumbs(:autoroot => true, :show_root_alone => false).each_with_index do |crumb, index| %>
108
- <% if index > 0 %> &gt;<% end %>
109
- <% if crumb.current? %>
110
- <span class="current"><%= crumb.text %></span>
111
- <% else %>
112
- <%= link_to crumb.text, crumb.url %>
108
+ <% breadcrumbs do |links| %>
109
+ <% if links.any? %>
110
+ You are here:
111
+ <% links.each do |link| %>
112
+ <%= link_to link.text, link.url %> (<%= link.key %>) %>
113
+ <% end %>
113
114
  <% end %>
114
115
  <% end %>
115
116
  ```
116
117
 
117
- Options for <code><%= breadcrumb %></code>:
118
-
119
- **:pretext**
120
- Text to be rendered before breadcrumb, if any. Default: none
121
-
122
- **:posttext**
123
- Text to be appended after breadrcumb, if any: Default: none
124
-
125
- **:separator**
126
- Separator between links. Default: `&gt;`
127
-
128
- **:autoroot**
129
- Whether it should automatically link to :root if no root parent is given. Default: false
118
+ Options
119
+ -------
130
120
 
131
- **:show_root_alone**
132
- Whether it should show :root if this is the only link. Default: false
121
+ You can pass options to `<%= breadcrumb %>`, e.g. `<%= breadcrumb :pretext => "You are here:" %>`:
133
122
 
134
- **:link_current**
135
- Whether the current crumb should be linked to. Default: false
123
+ Option | Description | Default
124
+ ---------------- | -------------------------------------------------------------------------------------------------------------------------- | -------
125
+ :pretext | Text to be rendered before breadcrumb, e.g. `"You are here: "` | None
126
+ :posttext | Text to be appended after breadcrumb, e.g. `"Text after breacrumb"` | None
127
+ :separator | Separator between links, e.g. `" &rsaquo; "` | `" &gt; "`
128
+ :autoroot | Whether it should automatically link to the `:root` crumb if no parent is given. | False
129
+ :show_root_alone | Whether it should show `:root` if that is the only link. | False
130
+ :link_current | Whether the current crumb should be linked to. | False
131
+ :semantic | Whether it should generate [semantic breadcrumbs](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=185417). | False
132
+ :class | CSS class for the breadcrumbs container. | `"breadcrumbs"`
133
+ :current_class | CSS class for the current link / span. | `"current"`
134
+ :id | ID for the `<div class="breadcrumbs">` element. | None
136
135
 
137
- **:semantic**
138
- Whether it should generate [semantic breadcrumbs](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=185417).
139
- Default: false
136
+ Documentation
137
+ -------------
140
138
 
141
- **:id**
142
- HTML element ID to be inserted. Default: none
139
+ * [Full documentation](http://rubydoc.info/github/lassebunk/gretel)
140
+ * [Changelog](https://github.com/lassebunk/gretel/blob/master/CHANGELOG.md)
143
141
 
144
142
  Contributors
145
143
  ------------
146
144
 
147
- * Lasse Bunk (creator)
148
- * Alan Larkin
149
- * David Doan
150
- * Carl Johnson
151
- * Tom Canham
145
+ * [See the list of contributors](https://github.com/lassebunk/gretel/graphs/contributors)
152
146
 
153
147
  Copyright (c) 2010-2013 [Lasse Bunk](http://lassebunk.dk), released under the MIT license
data/Rakefile CHANGED
@@ -1,38 +1,10 @@
1
- #!/usr/bin/env rake
2
- begin
3
- require 'bundler/setup'
4
- rescue LoadError
5
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
- end
7
- begin
8
- require 'rdoc/task'
9
- rescue LoadError
10
- require 'rdoc/rdoc'
11
- require 'rake/rdoctask'
12
- RDoc::Task = Rake::RDocTask
13
- end
14
-
15
- RDoc::Task.new(:rdoc) do |rdoc|
16
- rdoc.rdoc_dir = 'rdoc'
17
- rdoc.title = 'Gretel'
18
- rdoc.options << '--line-numbers'
19
- rdoc.rdoc_files.include('README.rdoc')
20
- rdoc.rdoc_files.include('lib/**/*.rb')
21
- end
22
-
23
-
24
-
25
-
26
- Bundler::GemHelper.install_tasks
27
-
28
1
  require 'rake/testtask'
2
+ require 'bundler/gem_tasks'
29
3
 
30
- Rake::TestTask.new(:test) do |t|
31
- t.libs << 'lib'
32
- t.libs << 'test'
33
- t.pattern = 'test/**/*_test.rb'
34
- t.verbose = false
4
+ Rake::TestTask.new do |t|
5
+ t.libs << "test"
6
+ t.test_files = FileList['test/*_test.rb']
7
+ t.verbose = true
35
8
  end
36
9
 
37
-
38
- task :default => :test
10
+ task :default => :test
data/gretel.gemspec ADDED
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'gretel/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "gretel"
8
+ gem.version = Gretel::VERSION
9
+ gem.authors = ["Lasse Bunk"]
10
+ gem.email = ["lassebunk@gmail.com"]
11
+ gem.description = %q{Gretel is a Ruby on Rails plugin that makes it easy yet flexible to create breadcrumbs.}
12
+ gem.summary = %q{Flexible Ruby on Rails breadcrumbs plugin.}
13
+ gem.homepage = "http://github.com/lassebunk/gretel"
14
+ gem.license = "MIT"
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.test_files = gem.files.grep(%r{^test/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency "rails", "~> 3.2.11"
21
+ gem.add_development_dependency "sqlite3"
22
+ end
@@ -1,7 +1,6 @@
1
+ # Remember to restart your application after editing this file.
2
+
1
3
  Gretel::Crumbs.layout do
2
-
3
- # Remember to restart your application after editing this file.
4
-
5
4
  # Example crumbs:
6
5
 
7
6
  # crumb :root do
data/lib/gretel/crumb.rb CHANGED
@@ -1,9 +1,38 @@
1
1
  module Gretel
2
2
  class Crumb
3
- attr_accessor :links, :parent
4
-
5
- def initialize(links, parent)
6
- @links, @parent = links, parent
3
+ # Initializes a new crumb from the given +key+.
4
+ # It finds the breadcrumb created in +Gretel::Crumbs.layout+ and renders the block using the arguments supplied in +args+.
5
+ def initialize(key, *args)
6
+ block = Gretel::Crumbs.crumbs[key]
7
+ raise ArgumentError, "Breadcrumb :#{key} not found." unless block
8
+ @key = key
9
+ instance_exec *args, &block
7
10
  end
11
+
12
+ # Sets link of the breadcrumb.
13
+ def link(text, url)
14
+ links << Gretel::Link.new(key, text, url)
15
+ end
16
+
17
+ # Holds all of the breadcrumb's links as a breadcrumb can have multiple links.
18
+ def links
19
+ @links ||= []
20
+ end
21
+
22
+ # Sets or gets the parent breadcrumb.
23
+ # If you supply a parent key and optional arguments, it will set the parent.
24
+ # If nothing is supplied, it will return the parent, if this has been set.
25
+ #
26
+ # Example:
27
+ # parent :category, category
28
+ def parent(*args)
29
+ return @parent unless args.any?
30
+ key = args.shift
31
+
32
+ @parent ||= Gretel::Crumb.new(key, *args)
33
+ end
34
+
35
+ # Key of the breadcrumb.
36
+ attr_reader :key
8
37
  end
9
38
  end
data/lib/gretel/crumbs.rb CHANGED
@@ -1,51 +1,31 @@
1
1
  module Gretel
2
- class Crumbs
2
+ module Crumbs
3
3
  class << self
4
+ # Lay out the breadcrumbs.
5
+ #
6
+ # Example:
7
+ #
8
+ # Gretel::Crumbs.layout do
9
+ # crumb :root do
10
+ # link "Home", root_path
11
+ # end
12
+ # end
4
13
  def layout(&block)
5
- # needs to be done here because Rails.application isn't set when this file is required
6
- self.class.send :include, Rails.application.routes.url_helpers
7
-
14
+ # The URL helpers include needs to be done here because
15
+ # Rails.application isn't set when this file is required
16
+ # TODO: Can this be done otherwise?
17
+ Gretel::Crumb.send :include, Rails.application.routes.url_helpers
8
18
  instance_eval &block
9
19
  end
10
-
11
- def all
12
- @crumbs ||= {}
13
- end
14
20
 
15
- def crumb(name, &block)
16
- all[name] = block
17
- end
18
-
19
- def get_crumb(name, object = nil)
20
- crumb = all[name]
21
- raise ArgumentError, "Breadcrumb :#{name} not found." unless crumb
22
-
23
- @object = object # share the object so we can call it from link() and parent()
24
- @parent = nil
25
-
26
- crumb.call(object)
27
- Gretel::Crumb.new(@links, @parent)
21
+ # Stores the supplied block for later use.
22
+ def crumb(key, &block)
23
+ crumbs[key] = block
28
24
  end
29
-
30
- def link(*args)
31
- options = args.extract_options!
32
- text = args[0]
33
- url = args[1]
34
-
35
- text = text.call(@object) if text.is_a?(Proc)
36
- url = url.call(@object) if url.is_a?(Proc)
37
-
38
- @links ||= []
39
- @links << Gretel::Link.new(text, url, options)
40
-
41
- @links
42
- end
43
-
44
- def parent(name, object = nil)
45
- name = name.call(@object) if name.is_a?(Proc)
46
- object = object.call(@object) if object.is_a?(Proc)
47
25
 
48
- @parent = Gretel::Parent.new(name, object)
26
+ # Returns an array of all stored crumb blocks.
27
+ def crumbs
28
+ @crumbs ||= {}
49
29
  end
50
30
  end
51
31
  end
data/lib/gretel/link.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  module Gretel
2
2
  class Link
3
- attr_accessor :options, :text, :url
4
-
5
- def initialize(text, url, options = {})
6
- @text, @url, @options = text, url, options
3
+ attr_accessor :key, :text, :url
4
+
5
+ def initialize(key, text, url)
6
+ @key, @text, @url = key, text, url
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,3 @@
1
+ module Gretel
2
+ VERSION = "2.0.0.beta1"
3
+ end