crummy 1.2 → 1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,29 +6,21 @@ Crummy is a simple and tasty way to add breadcrumbs to your Rails applications.
6
6
 
7
7
  h2. Install
8
8
 
9
- The gem is hosted on gemcutter, so if you haven’t already, add it as a gem source:
9
+ Simply add the dependency to your Gemfile:
10
10
 
11
11
  <pre>
12
12
  <code>
13
- gem sources -a http://gemcutter.org/
13
+ gem "crummy", "~> 1.3"
14
14
  </code>
15
15
  </pre>
16
16
 
17
- Then install the Crummy gem:
17
+ h3. Rails 2
18
18
 
19
- <pre>
20
- <code>
21
- gem install crummy
22
- </code>
23
- </pre>
24
-
25
- h3. Rails 3 / Bundler.
26
-
27
- Simply add gem dependency to your Gemfile:
19
+ In your terminal, write:
28
20
 
29
21
  <pre>
30
22
  <code>
31
- gem "crummy", ">= 1.0.1"
23
+ gem install crummy
32
24
  </code>
33
25
  </pre>
34
26
 
@@ -48,6 +40,9 @@ In your controllers you may add_crumb either like a before_filter or within a me
48
40
  before_filter :load_comment, :only => "show"
49
41
  add_crumb :comment, :only => "show"
50
42
 
43
+ # Example for nested routes:
44
+ add_crumb(:document) { [:account, :document] }
45
+
51
46
  def show
52
47
  add_crumb @business.display_name, @business
53
48
  end
@@ -99,13 +94,12 @@ h3. Examples
99
94
  render_crumbs :format => :html_list #=> <ul class="" id=""><li class=""><a href="/">Home</a></li><li class=""><a href="/">Businesses</a></li></ul>
100
95
  </code>
101
96
  </pre>
102
- A crumb with a nil link will just output plain text.
97
+ A crumb with a nil argument for the link will output an unlinked crumb.
98
+
103
99
  With :format => :html_list you can specify additional params: :active_li_class, :li_class, :ul_class, :ul_id
104
100
 
105
101
  h2. Notes
106
102
 
107
- The variable set is set to @_crumbs as to not conflict with your code.
108
-
109
103
  h2. Todo
110
104
 
111
105
  * Port over rspecs from project to plugin (Fully tested in a project)
@@ -124,5 +118,7 @@ h2. Credits
124
118
  * "Kamil K. Lemański":http://kml.jogger.pl
125
119
  * "Brian Cobb":http://bcobb.net/
126
120
  * "Kir Shatrov":http://shatrov.tk/
121
+ * "sugilog":http://github.com/sugilog
122
+ * "Trond Arve Nordheim":http://github.com/tanordheim
127
123
 
128
- *Copyright (c) 2011 Zach Inglis, released under the MIT license*
124
+ *Copyright (c) 2008-2011 Zach Inglis, released under the MIT license*
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2
1
+ 1.3
@@ -4,6 +4,7 @@ module Crummy
4
4
  # Add a crumb to the crumbs array.
5
5
  #
6
6
  # add_crumb("Home", "/")
7
+ # add_crumb(lambda { |instance| instance.business_name }, "/")
7
8
  # add_crumb("Business") { |instance| instance.business_path }
8
9
  #
9
10
  # Works like a before_filter so +:only+ and +except+ both work.
@@ -15,18 +16,36 @@ module Crummy
15
16
  before_filter(options) do |instance|
16
17
  url = yield instance if block_given?
17
18
  url = instance.send url if url.is_a? Symbol
19
+
20
+ if url.present?
21
+ if url.kind_of? Enumerable
22
+ url.map! do |name|
23
+ name.is_a?(Symbol) ? instance.instance_variable_get("@#{name}") : name
24
+ end
25
+ end
26
+ url = instance.send :url_for, url unless url.is_a? String
27
+ end
28
+
29
+ # Get the return value of the name if its a proc.
30
+ transformed_name = name.is_a?(Proc) ? name.call(instance) : name
18
31
 
19
- _record = instance.instance_variable_get("@#{name}") unless url or block_given?
32
+ _record = instance.instance_variable_get("@#{transformed_name}")
20
33
  if _record and _record.respond_to? :to_param
21
- instance.add_crumb(_record.to_s, instance.url_for(_record))
34
+ instance.add_crumb(_record.to_s, url || instance.url_for(_record))
22
35
  else
23
- instance.add_crumb(name, url)
36
+ instance.add_crumb(transformed_name, url)
24
37
  end
25
38
 
26
39
  # FIXME: url = instance.url_for(name) if name.respond_to?("to_param") && url.nil?
27
40
  # FIXME: Add ||= for the name, url above
28
41
  end
29
42
  end
43
+
44
+ def clear_crumbs
45
+ before_filter do |instance|
46
+ instance.clear_crumbs
47
+ end
48
+ end
30
49
  end
31
50
 
32
51
  module InstanceMethods
@@ -39,6 +58,10 @@ module Crummy
39
58
  crumbs.push [name, url]
40
59
  end
41
60
 
61
+ def clear_crumbs
62
+ crumbs.clear
63
+ end
64
+
42
65
  # Lists the crumbs as an array
43
66
  def crumbs
44
67
  get_or_set_ivar "@_crumbs", []
@@ -39,7 +39,6 @@ module Crummy
39
39
  crumb_string = crumbs.collect do |crumb|
40
40
  crumb_to_html crumb, options[:links]
41
41
  end * options[:separator]
42
- crumb_string = crumb_string.html_safe if crumb_string.respond_to?(:html_safe)
43
42
  crumb_string
44
43
  when :html_list
45
44
  # In html_list format there are no separator, but may be
@@ -53,7 +52,6 @@ module Crummy
53
52
  crumb_to_html_list crumb, options[:links], options[:li_class], options[:active_li_class]
54
53
  end * options[:separator]
55
54
  crumb_string = "<ul class=\"#{options[:ul_class]}\" id=\"#{options[:ul_id]}\">" + crumb_string + "</ul>"
56
- crumb_string = crumb_string.html_safe if crumb_string.respond_to?(:html_safe)
57
55
  crumb_string
58
56
  when :xml
59
57
  crumbs.collect do |crumb|
metadata CHANGED
@@ -1,32 +1,23 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: crummy
3
- version: !ruby/object:Gem::Version
4
- hash: 11
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.3'
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 2
9
- version: "1.2"
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Zach Inglis
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-04-20 00:00:00 +01:00
18
- default_executable:
12
+ date: 2011-04-20 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
14
  description: Crummy is a simple and tasty way to add breadcrumbs to your Rails applications.
22
15
  email: zach+crummy@londonmade.co.uk
23
16
  executables: []
24
-
25
17
  extensions: []
26
-
27
- extra_rdoc_files:
18
+ extra_rdoc_files:
28
19
  - README.textile
29
- files:
20
+ files:
30
21
  - .gitignore
31
22
  - MIT-LICENSE
32
23
  - README.textile
@@ -39,39 +30,28 @@ files:
39
30
  - lib/crummy/railtie.rb
40
31
  - lib/crummy/standard_renderer.rb
41
32
  - tasks/crummy_tasks.rake
42
- has_rdoc: true
43
33
  homepage: http://github.com/zachinglis/crummy
44
34
  licenses: []
45
-
46
35
  post_install_message:
47
36
  rdoc_options: []
48
-
49
- require_paths:
37
+ require_paths:
50
38
  - lib
51
- required_ruby_version: !ruby/object:Gem::Requirement
39
+ required_ruby_version: !ruby/object:Gem::Requirement
52
40
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
60
- required_rubygems_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
46
  none: false
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- hash: 3
66
- segments:
67
- - 0
68
- version: "0"
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
69
51
  requirements: []
70
-
71
52
  rubyforge_project:
72
- rubygems_version: 1.5.0
53
+ rubygems_version: 1.8.11
73
54
  signing_key:
74
55
  specification_version: 3
75
56
  summary: Tasty breadcrumbs!
76
57
  test_files: []
77
-