crummy 1.7.2 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,9 +5,3 @@ rvm:
5
5
  gemfile:
6
6
  - gemfiles/rails3_2.gemfile
7
7
  - gemfiles/rails4_0.gemfile
8
- matrix:
9
- allow_failures:
10
- - rvm: 1.9.3
11
- gemfile: gemfiles/rails4_0.gemfile
12
- - rvm: 2.0.0
13
- gemfile: gemfiles/rails4_0.gemfile
data/README.md CHANGED
@@ -58,6 +58,13 @@ These are added to the *a* tag.
58
58
  add_crumb "Home", '/', link_html_options: {title: "my link title"}
59
59
  ```
60
60
 
61
+ ##You can set html instead text in first parameter.
62
+ If tag <code>a</code> present in this html, tag a not be a wrapper.
63
+
64
+ ```ruby
65
+ add_crumb "<a class='glyphicons shield' href='/support'><i></i>Support</a>".html_safe, "", {}
66
+ ```
67
+
61
68
  ## Options for render\_crumbs
62
69
 
63
70
  render\_crumbs renders the list of crumbs as either html or xml
@@ -103,6 +110,7 @@ microdata: true
103
110
 
104
111
  With this option, output will be blank if there are no breadcrumbs.
105
112
 
113
+
106
114
  ### Examples
107
115
 
108
116
  ```ruby
@@ -113,6 +121,13 @@ render_crumbs format: :html_list #=> <ul class="" id=""><li class=""><a href="/
113
121
  render_crumbs format: :html_list, :microdata => true
114
122
  #=> <ul class="" id=""><li class="" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb">
115
123
  # <a href="/" itemprop="url"><span itemprop="title">Home</span></a></li></ul>
124
+ add_crumb support_link, {:right_side => true, :links => "/support", :li_right_class => "pull-right hidden-phone"}
125
+ #=> <li class="pull-right hidden-phone">
126
+ #=> <span><a class="glyphicons shield" href="/support">
127
+ #=> <i></i>Support</a>
128
+ #=> </span>
129
+ #=> </li>
130
+ #=> <li class="divider pull-right hidden-phone"></li>
116
131
  ```
117
132
 
118
133
  A crumb with a nil argument for the link will output an unlinked crumb.
@@ -147,18 +162,28 @@ Possible parameters for configuration are:
147
162
  :html_separator
148
163
  :xml_separator
149
164
  :html_list_separator
165
+ :html_list_right_separator
150
166
  :first_class
151
167
  :last_class
152
168
  :ul_id
153
169
  :ul_class
154
170
  :li_class
171
+ :li_right_class
155
172
  :microdata
156
173
  :last_crumb_linked
157
174
  :truncate
175
+ :right_side
158
176
  ```
159
177
 
160
178
  See `lib/crummy.rb` for a list of these parameters and their defaults.
161
179
 
180
+ ###Individually for each crumb configuration:
181
+ ```ruby
182
+ add_crumb support_link, {:right_side => true, :links => "/support", : li_class => "my_class", :li_right_class => "pull-right hidden-phone"}
183
+ ```
184
+ Simple add that parameter to options hash.
185
+
186
+
162
187
  ## Live example application
163
188
 
164
189
  An example application is available right inside this gem. That application is documented, see `example/README` for details about usage.
@@ -6,6 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.name = "crummy"
7
7
  s.version = Crummy::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
+ s.licenses = ['MIT']
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
12
  s.authors = ["Zach Inglis", "Andrew Nesbitt"]
@@ -13,8 +13,11 @@ module Crummy
13
13
  attr_accessor :links
14
14
  attr_accessor :skip_if_blank
15
15
  attr_accessor :html_separator
16
+ attr_accessor :html_right_separator
16
17
  attr_accessor :xml_separator
18
+ attr_accessor :xml_right_separator
17
19
  attr_accessor :html_list_separator
20
+ attr_accessor :html_list_right_separator
18
21
  attr_accessor :first_class
19
22
  attr_accessor :last_class
20
23
  attr_accessor :ul_id
@@ -23,12 +26,16 @@ module Crummy
23
26
  attr_accessor :microdata
24
27
  attr_accessor :last_crumb_linked
25
28
  attr_accessor :truncate
29
+ attr_accessor :right_side
26
30
 
27
31
  def initialize
28
32
  @format = :html
29
33
  @html_separator = " &raquo; ".html_safe
34
+ @html_right_separator = " &raquo; ".html_safe
30
35
  @xml_separator = "crumb"
36
+ @xml_right_separator = "crumb"
31
37
  @html_list_separator = ''
38
+ @html_list_right_separator = ''
32
39
  @skip_if_blank = true
33
40
  @links = true
34
41
  @first_class = ''
@@ -39,6 +46,7 @@ module Crummy
39
46
  @microdata = false
40
47
  @last_crumb_linked = true
41
48
  @truncate = nil
49
+ @right_side = false
42
50
  end
43
51
 
44
52
  def active_li_class=(class_name)
@@ -10,54 +10,102 @@ module Crummy
10
10
  #
11
11
  # Takes 3 options:
12
12
  # The output format. Can either be xml or html. Default :html
13
- # :format => (:html|:xml)
13
+ # :format => (:html|:xml)
14
14
  # The separator text. It does not assume you want spaces on either side so you must specify. Default +&raquo;+ for :html and +crumb+ for xml
15
- # :separator => string
15
+ # :separator => string
16
16
  # Render links in the output. Default +true+
17
- # :link => boolean
18
- #
17
+ # :link => boolean
18
+ #
19
19
  # Examples:
20
20
  # render_crumbs #=> <a href="/">Home</a> &raquo; <a href="/businesses">Businesses</a>
21
21
  # render_crumbs :separator => ' | ' #=> <a href="/">Home</a> | <a href="/businesses">Businesses</a>
22
22
  # render_crumbs :format => :xml #=> <crumb href="/">Home</crumb><crumb href="/businesses">Businesses</crumb>
23
23
  # render_crumbs :format => :html_list #=> <ul class="" id=""><li class=""><a href="/">Home</a></li><li class=""><a href="/">Businesses</a></li></ul>
24
- #
24
+ #
25
25
  # With :format => :html_list you can specify additional params: li_class, ul_class, ul_id
26
26
  # The only argument is for the separator text. It does not assume you want spaces on either side so you must specify. Defaults to +&raquo;+
27
27
  #
28
28
  # render_crumbs(" . ") #=> <a href="/">Home</a> . <a href="/businesses">Businesses</a>
29
29
  #
30
30
  def render_crumbs(crumbs, options = {})
31
+
31
32
  options[:skip_if_blank] ||= Crummy.configuration.skip_if_blank
32
33
  return '' if options[:skip_if_blank] && crumbs.count < 1
33
34
  options[:format] ||= Crummy.configuration.format
34
35
  options[:separator] ||= Crummy.configuration.send(:"#{options[:format]}_separator")
36
+ options[:right_separator] ||= Crummy.configuration.send(:"#{options[:format]}_right_separator")
35
37
  options[:links] ||= Crummy.configuration.links
36
38
  options[:first_class] ||= Crummy.configuration.first_class
37
39
  options[:last_class] ||= Crummy.configuration.last_class
38
- options[:microdata] ||= Crummy.configuration.microdata
40
+ options[:microdata] ||= Crummy.configuration.microdata if options[:microdata].nil?
39
41
  options[:truncate] ||= Crummy.configuration.truncate if options[:truncate]
40
42
  options[:last_crumb_linked] = Crummy.configuration.last_crumb_linked if options[:last_crumb_linked].nil?
43
+ options[:right_side] ||= Crummy.configuration.right_side
44
+
45
+ last_hash = lambda {|o|k=o.map{|c|
46
+ c.is_a?(Hash) ? (c.empty? ? nil: c) : nil}.compact
47
+ k.empty? ? {} : k.last
48
+ }
49
+ local_global = lambda {|crumb, global_options, param_name| last_hash.call(crumb).has_key?(param_name.to_sym) ? last_hash.call(crumb)[param_name.to_sym] : global_options[param_name.to_sym]}
41
50
 
42
51
  case options[:format]
43
52
  when :html
44
- crumb_string = crumbs.collect do |crumb|
45
- crumb_to_html(crumb, options[:links], options[:first_class], options[:last_class], (crumb == crumbs.first), (crumb == crumbs.last), options[:microdata], options[:last_crumb_linked], options[:truncate])
46
- end.reduce { |memo, obj| memo << options[:separator] << obj }
53
+ crumb_string = crumbs.map{|crumb|local_global.call(crumb, options, :right_side) ? nil :
54
+ crumb_to_html(crumb,
55
+ local_global.call(crumb, options, :links),
56
+ local_global.call(crumb, options, :first_class),
57
+ local_global.call(crumb, options, :last_class),
58
+ (crumb == crumbs.first),
59
+ (crumb == crumbs.last),
60
+ local_global.call(crumb, options, :microdata),
61
+ local_global.call(crumb, options, :last_crumb_linked),
62
+ local_global.call(crumb, options, :truncate))}.compact.join(options[:separator]).html_safe
47
63
  crumb_string
48
64
  when :html_list
49
65
  # Let's set values for special options of html_list format
50
66
  options[:li_class] ||= Crummy.configuration.li_class
51
67
  options[:ul_class] ||= Crummy.configuration.ul_class
52
68
  options[:ul_id] ||= Crummy.configuration.ul_id
53
- crumb_string = crumbs.collect do |crumb|
54
- crumb_to_html_list(crumb, options[:links], options[:li_class], options[:first_class], options[:last_class], (crumb == crumbs.first), (crumb == crumbs.last), options[:microdata], options[:last_crumb_linked], options[:truncate])
55
- end.reduce { |memo, obj| memo << options[:separator] << obj }
56
- crumb_string = content_tag(:ul, crumb_string, :class => options[:ul_class], :id => options[:ul_id])
69
+ options[:ul_id] = nil if options[:ul_id].blank?
70
+
71
+ crumb_string = crumbs.map{|crumb|local_global.call(crumb, options, :right_side) ? nil :
72
+ crumb_to_html_list(crumb,
73
+ local_global.call(crumb, options, :links),
74
+ local_global.call(crumb, options, :li_class),
75
+ local_global.call(crumb, options, :first_class),
76
+ local_global.call(crumb, options, :last_class),
77
+ (crumb == crumbs.first),
78
+ (crumb == crumbs.find_all{|crumb|
79
+ !last_hash.call(crumb).fetch(:right_side,false)}.compact.last),
80
+ local_global.call(crumb, options, :microdata),
81
+ local_global.call(crumb, options, :last_crumb_linked),
82
+ local_global.call(crumb, options, :truncate),
83
+ local_global.call(crumb, options, :separator))}.compact.join.html_safe
84
+ crumb_right_string = crumbs.reverse.map{|crumb|!local_global.call(crumb, options, :right_side) ? nil :
85
+
86
+ crumb_to_html_list(crumb,
87
+ local_global.call(crumb, options, :links),
88
+ local_global.call(crumb, options, :li_right_class),
89
+ local_global.call(crumb, options, :first_class),
90
+ local_global.call(crumb, options, :last_class),
91
+ (crumb == crumbs.first),
92
+ (crumb == crumbs.find_all{|crumb|!local_global.call(crumb, options, :right_side)}.compact.last),
93
+ local_global.call(crumb, options, :microdata),
94
+ local_global.call(crumb, options, :last_crumb_linked),
95
+ local_global.call(crumb, options, :truncate),
96
+ local_global.call(crumb, options, :right_separator))}.compact.join.html_safe
97
+ crumb_string = content_tag(:ul,
98
+ crumb_string+crumb_right_string,
99
+ :class => options[:ul_class],
100
+ :id => options[:ul_id])
57
101
  crumb_string
58
102
  when :xml
59
103
  crumbs.collect do |crumb|
60
- crumb_to_xml(crumb, options[:links], options[:separator], (crumb == crumbs.first), (crumb == crumbs.last))
104
+ crumb_to_xml(crumb,
105
+ local_global.call(crumb, options, :links),
106
+ local_global.call(crumb, options, :separator),
107
+ (crumb == crumbs.first),
108
+ (crumb == crumbs.last))
61
109
  end * ''
62
110
  else
63
111
  raise ArgumentError, "Unknown breadcrumb output format"
@@ -85,16 +133,17 @@ module Crummy
85
133
  can_link ? link_to((truncate.present? ? name.truncate(truncate) : name), url, link_html_options) : (truncate.present? ? name.truncate(truncate) : name)
86
134
  end
87
135
  end
88
-
89
- def crumb_to_html_list(crumb, links, li_class, first_class, last_class, is_first, is_last, with_microdata, last_crumb_linked, truncate)
136
+
137
+ def crumb_to_html_list(crumb, links, li_class, first_class, last_class, is_first, is_last, with_microdata, last_crumb_linked, truncate, separator='')
90
138
  name, url, options = crumb
91
139
  options = {} unless options.is_a?(Hash)
92
- can_link = url && links && (!is_last || last_crumb_linked)
140
+ can_link = url && links && (!is_last || last_crumb_linked) && !(/<\/a/ =~ name)
93
141
  html_classes = []
94
- html_classes << first_class if is_first
95
- html_classes << last_class if is_last
96
- html_classes << li_class
97
- html_options = {:class => html_classes.join(' ').strip}
142
+ html_classes << first_class if is_first && !first_class.empty?
143
+ html_classes << last_class if is_last && !last_class.empty?
144
+ html_classes << li_class unless li_class.empty?
145
+ html_options = html_classes.size > 0 ? {:class => html_classes.join(' ').strip} : {}
146
+
98
147
  if with_microdata
99
148
  html_options[:itemscope] = true
100
149
  html_options[:itemtype] = data_definition_url("Breadcrumb")
@@ -105,9 +154,10 @@ module Crummy
105
154
  else
106
155
  html_content = can_link ? link_to((truncate.present? ? name.truncate(truncate) : name), url, options[:link_html_options]) : content_tag(:span, (truncate.present? ? name.truncate(truncate) : name))
107
156
  end
108
- content_tag(:li, html_content, html_options)
157
+ content_tag(:li, html_content, html_options)+(/<\/li/ =~ separator ?
158
+ separator : content_tag(:li, separator) unless separator.blank? || is_last)
109
159
  end
110
-
160
+
111
161
  def crumb_to_xml(crumb, links, separator, is_first, is_last)
112
162
  name, url = crumb
113
163
  content_tag(separator, name, :href => (url && links ? url : nil))
@@ -118,3 +168,4 @@ module Crummy
118
168
  end
119
169
  end
120
170
  end
171
+
@@ -1,6 +1,6 @@
1
1
  module Crummy
2
2
  MAJOR = 1
3
- MINOR = 7
4
- PATCH = 2
3
+ MINOR = 8
4
+ PATCH = 0
5
5
  VERSION = [MAJOR, MINOR, PATCH].join('.')
6
6
  end
@@ -17,23 +17,23 @@ class StandardRendererTest < Test::Unit::TestCase
17
17
  renderer = StandardRenderer.new
18
18
  assert_dom_equal('<a href="url" class="first last">name</a>',
19
19
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :html))
20
- assert_equal('<ul class="" id=""><li class="first last"><a href="url">name</a></li></ul>',
20
+ assert_equal('<ul class=""><li class="first last"><a href="url">name</a></li></ul>',
21
21
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :html_list))
22
22
  assert_equal('<crumb href="url">name</crumb>',
23
23
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :xml))
24
24
 
25
25
  assert_dom_equal('<a href="url1" class="first">name1</a> &raquo; <a href="url2" class="last">name2</a>',
26
26
  renderer.render_crumbs([['name1', 'url1'], ['name2', 'url2']], :first_class => 'first', :last_class => 'last', :format => :html))
27
- assert_equal('<ul class="" id=""><li class="first li_class"><a href="url1">name1</a></li><li class="li_class"><a href="url2">name2</a></li><li class="last li_class"><a href="url3">name3</a></li></ul>',
27
+ assert_equal('<ul class=""><li class="first li_class"><a href="url1">name1</a></li><li class="li_class"><a href="url2">name2</a></li><li class="last li_class"><a href="url3">name3</a></li></ul>',
28
28
  renderer.render_crumbs([['name1', 'url1'], ['name2', 'url2'], ['name3', 'url3']], :li_class => "li_class", :first_class => 'first', :last_class => 'last', :format => :html_list))
29
- assert_equal('<ul class="" id=""><li class="first li_class"><a href="url1">name1</a></li> / <li class="li_class"><a href="url2">name2</a></li> / <li class="last li_class"><a href="url3">name3</a></li></ul>',
29
+ assert_equal('<ul class=""><li class="first li_class"><a href="url1">name1</a></li><li> / </li><li class="li_class"><a href="url2">name2</a></li><li> / </li><li class="last li_class"><a href="url3">name3</a></li></ul>',
30
30
  renderer.render_crumbs([['name1', 'url1'], ['name2', 'url2'], ['name3', 'url3']], :li_class => "li_class", :first_class => 'first', :last_class => 'last', :format => :html_list, :separator => " / "))
31
31
  assert_equal('<crumb href="url1">name1</crumb><crumb href="url2">name2</crumb>',
32
32
  renderer.render_crumbs([['name1', 'url1'], ['name2', 'url2']], :first_class => 'first', :last_class => 'last', :format => :xml))
33
33
 
34
34
  assert_dom_equal('<div itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="url" class="first last" itemprop="url"><span itemprop="title">name</span></a></div>',
35
35
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :html, :microdata => true))
36
- assert_equal('<ul class="" id=""><li class="first last" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="url" itemprop="url"><span itemprop="title">name</span></a></li></ul>',
36
+ assert_equal('<ul class=""><li class="first last" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="url" itemprop="url"><span itemprop="title">name</span></a></li></ul>',
37
37
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :html_list, :microdata => true))
38
38
  assert_equal('<ul class="crumbclass" id="crumbid"><li class="liclass"><a href="url">name</a></li></ul>',
39
39
  renderer.render_crumbs([['name', 'url']], :format => :html_list, :ul_id => "crumbid", :ul_class => "crumbclass", :li_class => "liclass"))
@@ -43,44 +43,64 @@ class StandardRendererTest < Test::Unit::TestCase
43
43
  renderer = StandardRenderer.new
44
44
  assert_equal('name',
45
45
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :html, :last_crumb_linked => false))
46
- assert_equal('<ul class="" id=""><li class="first last"><span>name</span></li></ul>',
46
+ assert_equal('<ul class=""><li class="first last"><span>name</span></li></ul>',
47
47
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :html_list, :last_crumb_linked => false))
48
48
  assert_equal('<crumb href="url">name</crumb>',
49
49
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :xml, :last_crumb_linked => false))
50
50
 
51
51
  assert_dom_equal('<a href="url1" class="first">name1</a> &raquo; name2',
52
52
  renderer.render_crumbs([['name1', 'url1'], ['name2', 'url2']], :first_class => 'first', :last_class => 'last', :format => :html, :last_crumb_linked => false))
53
- assert_equal('<ul class="" id=""><li class="first li_class"><a href="url1">name1</a></li><li class="li_class"><a href="url2">name2</a></li><li class="last li_class"><span>name3</span></li></ul>',
53
+ assert_equal('<ul class=""><li class="first li_class"><a href="url1">name1</a></li><li class="li_class"><a href="url2">name2</a></li><li class="last li_class"><span>name3</span></li></ul>',
54
54
  renderer.render_crumbs([['name1', 'url1'], ['name2', 'url2'], ['name3', 'url3']], :li_class => "li_class", :first_class => 'first', :last_class => 'last', :format => :html_list, :last_crumb_linked => false))
55
- assert_equal('<ul class="" id=""><li class="first li_class"><a href="url1">name1</a></li> / <li class="li_class"><a href="url2">name2</a></li> / <li class="last li_class"><span>name3</span></li></ul>',
55
+ assert_equal('<ul class=""><li class="first li_class"><a href="url1">name1</a></li><li> / </li><li class="li_class"><a href="url2">name2</a></li><li> / </li><li class="last li_class"><span>name3</span></li></ul>',
56
56
  renderer.render_crumbs([['name1', 'url1'], ['name2', 'url2'], ['name3', 'url3']], :li_class => "li_class", :first_class => 'first', :last_class => 'last', :format => :html_list, :separator => " / ", :last_crumb_linked => false))
57
57
  assert_equal('<crumb href="url1">name1</crumb><crumb href="url2">name2</crumb>',
58
58
  renderer.render_crumbs([['name1', 'url1'], ['name2', 'url2']], :first_class => 'first', :last_class => 'last', :format => :xml, :last_crumb_linked => false))
59
59
 
60
60
  assert_equal('<div itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">name</span></div>',
61
61
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :html, :microdata => true, :last_crumb_linked => false))
62
- assert_equal('<ul class="" id=""><li class="first last" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">name</span></li></ul>',
62
+ assert_equal('<ul class=""><li class="first last" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">name</span></li></ul>',
63
63
  renderer.render_crumbs([['name', 'url']], :first_class => 'first', :last_class => 'last', :format => :html_list, :microdata => true, :last_crumb_linked => false))
64
64
  assert_equal('<ul class="crumbclass" id="crumbid"><li class="liclass"><span>name</span></li></ul>',
65
65
  renderer.render_crumbs([['name', 'url']], :format => :html_list, :ul_id => "crumbid", :ul_class => "crumbclass", :li_class => "liclass", :last_crumb_linked => false))
66
66
  end
67
67
 
68
+ def test_input_object_mutation
69
+ renderer = StandardRenderer.new
70
+ Crummy.configure do |config|
71
+ config.microdata = false
72
+ end
73
+
74
+ name1 = 'name1'
75
+ url1 = nil
76
+ name2 = 'name2'
77
+ url2 = nil
78
+
79
+ renderer.render_crumbs([[name1, url1], [name2, url2]], :format => :html, :microdata => false)
80
+
81
+ # Rendering the crumbs shouldn't alter the input objects.
82
+ assert_equal('name1', name1);
83
+ assert_equal(nil, url2);
84
+ assert_equal('name2', name2);
85
+ assert_equal(nil, url2);
86
+ end
87
+
68
88
  def test_link_html_options
69
89
  renderer = StandardRenderer.new
70
90
  Crummy.configure do |config|
71
91
  config.microdata = false
72
92
  end
73
93
 
74
- assert_equal('<a href="url" class="first last" title="link title">name</a>',
94
+ assert_dom_equal('<a href="url" class="first last" title="link title">name</a>',
75
95
  renderer.render_crumbs([['name', 'url', {:link_html_options => {:title => 'link title'}}]], :first_class => 'first', :last_class => 'last', :format => :html))
76
96
 
77
97
  assert_equal('name',
78
98
  renderer.render_crumbs([['name', 'url', {:link_html_options => {:title => 'link title'}}]], :first_class => 'first', :last_class => 'last', :format => :html, :last_crumb_linked => false))
79
99
 
80
- assert_equal('<ul class="" id=""><li class="first last"><a href="url" title="link title">name</a></li></ul>',
100
+ assert_equal('<ul class=""><li class="first last"><a href="url" title="link title">name</a></li></ul>',
81
101
  renderer.render_crumbs([['name', 'url', {:link_html_options => {:title => 'link title'}}]], :first_class => 'first', :last_class => 'last', :format => :html_list))
82
102
 
83
- assert_equal('<ul class="" id=""><li class="first last"><span>name</span></li></ul>',
103
+ assert_equal('<ul class=""><li class="first last"><span>name</span></li></ul>',
84
104
  renderer.render_crumbs([['name', 'url', {:link_html_options => {:title => 'link title'}}]], :first_class => 'first', :last_class => 'last', :format => :html_list, :last_crumb_linked => false))
85
105
  end
86
106
 
@@ -90,19 +110,38 @@ class StandardRendererTest < Test::Unit::TestCase
90
110
  config.microdata = true
91
111
  end
92
112
 
93
- assert_equal('<div itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="url" class="first last" itemprop="url" title="link title"><span itemprop="title">name</span></a></div>',
113
+ assert_dom_equal('<div itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="url" class="first last" itemprop="url" title="link title"><span itemprop="title">name</span></a></div>',
94
114
  renderer.render_crumbs([['name', 'url', {:link_html_options => {:title => 'link title'}}]], :first_class => 'first', :last_class => 'last', :format => :html))
95
115
 
96
116
  assert_equal('<div itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">name</span></div>',
97
117
  renderer.render_crumbs([['name', 'url', {:link_html_options => {:title => 'link title'}}]], :first_class => 'first', :last_class => 'last', :format => :html, :last_crumb_linked => false))
98
118
 
99
- assert_equal('<ul class="" id=""><li class="first last" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="url" itemprop="url" title="link title"><span itemprop="title">name</span></a></li></ul>',
119
+ assert_equal('<ul class=""><li class="first last" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="url" itemprop="url" title="link title"><span itemprop="title">name</span></a></li></ul>',
100
120
  renderer.render_crumbs([['name', 'url', {:link_html_options => {:title => 'link title'}}]], :first_class => 'first', :last_class => 'last', :format => :html_list))
101
121
 
102
- assert_equal('<ul class="" id=""><li class="first last" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">name</span></li></ul>',
122
+ assert_equal('<ul class=""><li class="first last" itemscope="itemscope" itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">name</span></li></ul>',
103
123
  renderer.render_crumbs([['name', 'url', {:link_html_options => {:title => 'link title'}}]], :first_class => 'first', :last_class => 'last', :format => :html_list, :last_crumb_linked => false))
104
124
  end
105
125
 
126
+ def test_inline_configuration
127
+ renderer = StandardRenderer.new
128
+ Crummy.configure do |config|
129
+ config.microdata = true
130
+ config.last_crumb_linked = true
131
+ end
132
+
133
+ assert_no_match(/itemscope/, renderer.render_crumbs([['name', 'url']], :microdata => false))
134
+ assert_match(/href/, renderer.render_crumbs([['name', 'url']], :last_crumb_linked => true))
135
+
136
+ Crummy.configure do |config|
137
+ config.microdata = false
138
+ config.last_crumb_linked = true
139
+ end
140
+
141
+ assert_match(/itemscope/, renderer.render_crumbs([['name', 'url']], :microdata => true))
142
+ assert_no_match(/href/, renderer.render_crumbs([['name', 'url']], :last_crumb_linked => false))
143
+ end
144
+
106
145
  def test_configuration
107
146
  renderer = StandardRenderer.new
108
147
  # check defaults
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crummy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
4
+ version: 1.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-05-07 00:00:00.000000000 Z
13
+ date: 2013-10-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
17
- requirement: &70215967636920 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,15 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *70215967636920
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: bundler
28
- requirement: &70215967634820 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ~>
@@ -33,10 +38,15 @@ dependencies:
33
38
  version: '1.0'
34
39
  type: :development
35
40
  prerelease: false
36
- version_requirements: *70215967634820
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '1.0'
37
47
  - !ruby/object:Gem::Dependency
38
48
  name: activesupport
39
- requirement: &70215967634140 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  none: false
41
51
  requirements:
42
52
  - - ! '>='
@@ -44,10 +54,15 @@ dependencies:
44
54
  version: '0'
45
55
  type: :development
46
56
  prerelease: false
47
- version_requirements: *70215967634140
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: actionpack
50
- requirement: &70215967633040 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
51
66
  none: false
52
67
  requirements:
53
68
  - - ! '>='
@@ -55,10 +70,15 @@ dependencies:
55
70
  version: '0'
56
71
  type: :development
57
72
  prerelease: false
58
- version_requirements: *70215967633040
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
59
79
  - !ruby/object:Gem::Dependency
60
80
  name: appraisal
61
- requirement: &70215967647760 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
62
82
  none: false
63
83
  requirements:
64
84
  - - ! '>='
@@ -66,7 +86,12 @@ dependencies:
66
86
  version: '0'
67
87
  type: :development
68
88
  prerelease: false
69
- version_requirements: *70215967647760
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
70
95
  description: Crummy is a simple and tasty way to add breadcrumbs to your Rails applications.
71
96
  email: zach+crummy@londonmade.co.uk
72
97
  executables: []
@@ -159,7 +184,8 @@ files:
159
184
  - lib/crummy/version.rb
160
185
  - test/standard_renderer_test.rb
161
186
  homepage: http://github.com/zachinglis/crummy
162
- licenses: []
187
+ licenses:
188
+ - MIT
163
189
  post_install_message:
164
190
  rdoc_options: []
165
191
  require_paths:
@@ -170,9 +196,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
170
196
  - - ! '>='
171
197
  - !ruby/object:Gem::Version
172
198
  version: '0'
173
- segments:
174
- - 0
175
- hash: -2479994297472692565
176
199
  required_rubygems_version: !ruby/object:Gem::Requirement
177
200
  none: false
178
201
  requirements:
@@ -181,9 +204,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
204
  version: '0'
182
205
  requirements: []
183
206
  rubyforge_project:
184
- rubygems_version: 1.8.11
207
+ rubygems_version: 1.8.23
185
208
  signing_key:
186
209
  specification_version: 3
187
210
  summary: Tasty breadcrumbs!
188
211
  test_files:
189
212
  - test/standard_renderer_test.rb
213
+ has_rdoc: