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.
- data/.travis.yml +0 -6
- data/README.md +25 -0
- data/crummy.gemspec +1 -0
- data/lib/crummy.rb +8 -0
- data/lib/crummy/standard_renderer.rb +74 -23
- data/lib/crummy/version.rb +2 -2
- data/test/standard_renderer_test.rb +53 -14
- metadata +41 -17
data/.travis.yml
CHANGED
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.
|
data/crummy.gemspec
CHANGED
@@ -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"]
|
data/lib/crummy.rb
CHANGED
@@ -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 = " » ".html_safe
|
34
|
+
@html_right_separator = " » ".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 +»+ 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> » <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 +»+
|
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.
|
45
|
-
|
46
|
-
|
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
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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,
|
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
|
+
|
data/lib/crummy/version.rb
CHANGED
@@ -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=""
|
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> » <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=""
|
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=""
|
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=""
|
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=""
|
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> » 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=""
|
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=""
|
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=""
|
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
|
-
|
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=""
|
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=""
|
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
|
-
|
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=""
|
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=""
|
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.
|
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-
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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.
|
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:
|