gretel 3.0.5 → 3.0.6
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +2 -2
- data/gretel.gemspec +0 -1
- data/lib/gretel/crumb.rb +1 -1
- data/lib/gretel/deprecated.rb +1 -2
- data/lib/gretel/deprecated/default_style_key.rb +11 -0
- data/lib/gretel/deprecated/yield_links.rb +20 -0
- data/lib/gretel/renderer.rb +98 -62
- data/lib/gretel/version.rb +1 -1
- data/lib/gretel/view_helpers.rb +2 -6
- data/test/deprecated_test.rb +21 -1
- data/test/helper_methods_test.rb +66 -70
- metadata +13 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31c77ef551e13b999644f0b27d782987629ae7ab
|
4
|
+
data.tar.gz: 8bdf306a5ba44daaf9bcfb6b7b5f4830cbc8dd5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfd56e69ce95e4fde666b9320fa5531275261804f2d74e623c3d98ca41996805aecc47907d27b64856243d79c7f123e2564c7542321a505fa6f8d47c1f49a804
|
7
|
+
data.tar.gz: ba35e16f9908e7259c01bdd9f174dfaf2e4aac45e99e2f61fbbe8b034f5e66dd52de75408733593775633ad4e257455465bc2e90c247f3c104d614fe4804225c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## Version 3.0.6
|
4
|
+
* Pretext and posttext are now enclosed in spans with `<span class="pretext">` and `<span class="posttext">`.
|
5
|
+
* Semantic breadcrumbs are now rendered in spans instead of divs to enable easier styling.
|
6
|
+
|
3
7
|
## Version 3.0.3
|
4
8
|
* Breadcrumbs can now be rendered for use in the [Foundation 5](http://foundation.zurb.com/) framework. Use `breadcrumbs style: :foundation5`.
|
5
9
|
* Breadcrumbs are now automatically loaded from any engines' `config/breadcrumbs.rb` and `config/breadcrumbs/**/*.rb`. See the readme for details.
|
data/README.md
CHANGED
@@ -97,7 +97,7 @@ You can pass options to `<%= breadcrumbs %>`, e.g. `<%= breadcrumbs pretext: "Yo
|
|
97
97
|
|
98
98
|
Option | Description | Default
|
99
99
|
------------------------ | -------------------------------------------------------------------------------------------------------------------------- | -------
|
100
|
-
:style | How to render the breadcrumbs. Can be `:
|
100
|
+
:style | How to render the breadcrumbs. Can be `:inline`, `:ol`, `:ul`, or `:bootstrap`. See below for more info. | `:inline`
|
101
101
|
:pretext | Text to be rendered before breadcrumb, e.g. `"You are here: "`. | None
|
102
102
|
:posttext | Text to be appended after breadcrumb, e.g. `"Text after breacrumb"`, | None
|
103
103
|
:separator | Separator between links, e.g. `" › "`. | `" › "`
|
@@ -117,7 +117,7 @@ These are the styles you can use with `breadcrumbs style: :xx`.
|
|
117
117
|
|
118
118
|
Style | Description
|
119
119
|
-------------- | -----------
|
120
|
-
`:
|
120
|
+
`:inline` | Renders each link by itself with `›` as the seperator.
|
121
121
|
`:ol` | Renders the links in `<li>` elements contained in an outer `<ol>`.
|
122
122
|
`:ul` | Renders the links in `<li>` elements contained in an outer `<ul>`.
|
123
123
|
`:bootstrap` | Renders the links for use in [Twitter Bootstrap](http://getbootstrap.com/).
|
data/gretel.gemspec
CHANGED
data/lib/gretel/crumb.rb
CHANGED
data/lib/gretel/deprecated.rb
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
require "gretel/deprecated/show_root_alone"
|
1
|
+
Dir[File.dirname(__FILE__) + "/deprecated/*.rb"].each { |file| require file }
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Gretel::Renderer.class_eval do
|
2
|
+
def options_for_style_with_default_style_key(style_key)
|
3
|
+
if style_key == :default
|
4
|
+
Gretel.show_deprecation_warning "The :default style key is now called :inline. Please use `breadcrumbs style: :inline` instead or omit it, as it is the default."
|
5
|
+
style_key = :inline
|
6
|
+
end
|
7
|
+
options_for_style_without_default_style_key(style_key)
|
8
|
+
end
|
9
|
+
|
10
|
+
alias_method_chain :options_for_style, :default_style_key
|
11
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Gretel::ViewHelpers.class_eval do
|
2
|
+
def breadcrumbs_with_yield_links(options = {})
|
3
|
+
if block_given?
|
4
|
+
Gretel.show_deprecation_warning(
|
5
|
+
"Calling `breadcrumbs` with a block has been deprecated and will be removed in Gretel version 4.0. Please use `tap` instead. Example:\n" +
|
6
|
+
"\n" +
|
7
|
+
" breadcrumbs(autoroot: false).tap do |links|\n" +
|
8
|
+
" if links.any?\n" +
|
9
|
+
" # process links here\n" +
|
10
|
+
" end\n" +
|
11
|
+
" end\n"
|
12
|
+
)
|
13
|
+
yield gretel_renderer.render(options)
|
14
|
+
else
|
15
|
+
breadcrumbs_without_yield_links(options)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
alias_method_chain :breadcrumbs, :yield_links
|
20
|
+
end
|
data/lib/gretel/renderer.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Gretel
|
2
2
|
class Renderer
|
3
3
|
DEFAULT_OPTIONS = {
|
4
|
-
style: :
|
4
|
+
style: :inline,
|
5
5
|
pretext: "",
|
6
6
|
posttext: "",
|
7
7
|
separator: "",
|
@@ -15,7 +15,7 @@ module Gretel
|
|
15
15
|
}
|
16
16
|
|
17
17
|
DEFAULT_STYLES = {
|
18
|
-
|
18
|
+
inline: { container_tag: :div, separator: " › " },
|
19
19
|
ol: { container_tag: :ol, fragment_tag: :li },
|
20
20
|
ul: { container_tag: :ul, fragment_tag: :li },
|
21
21
|
bootstrap: { container_tag: :ol, fragment_tag: :li, class: "breadcrumb", current_class: "active" },
|
@@ -33,32 +33,17 @@ module Gretel
|
|
33
33
|
options = options_for_render(options)
|
34
34
|
links = links_for_render(options)
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
# Loop through all but the last (current) link and build HTML of the fragments
|
39
|
-
fragments = links[0..-2].map do |link|
|
40
|
-
render_fragment(options[:fragment_tag], link.text, link.url, options[:semantic])
|
41
|
-
end
|
42
|
-
|
43
|
-
# The current link is handled a little differently, and is only linked if specified in the options
|
44
|
-
current_link = links.last
|
45
|
-
fragments << render_fragment(options[:fragment_tag], current_link.text, (options[:link_current] ? current_link.url : nil), options[:semantic], class: options[:current_class])
|
46
|
-
|
47
|
-
# Build the final HTML
|
48
|
-
html = (options[:pretext] + fragments.join(options[:separator]) + options[:posttext]).html_safe
|
49
|
-
content_tag(options[:container_tag], html, id: options[:id], class: options[:class])
|
36
|
+
LinkCollection.new(context, links, options)
|
50
37
|
end
|
51
38
|
|
52
39
|
# Yields links with applied options.
|
53
40
|
def yield_links(options = {})
|
54
|
-
|
55
|
-
yield links_for_render(options)
|
41
|
+
yield render(options)
|
56
42
|
end
|
57
43
|
|
58
44
|
# Returns the parent breadcrumb.
|
59
45
|
def parent_breadcrumb(options = {})
|
60
|
-
|
61
|
-
links_for_render(options)[-2]
|
46
|
+
render(options)[-2]
|
62
47
|
end
|
63
48
|
|
64
49
|
# Yields the parent breadcrumb if any.
|
@@ -68,11 +53,6 @@ module Gretel
|
|
68
53
|
end
|
69
54
|
end
|
70
55
|
|
71
|
-
# Proxy for +context.link_to+ that can be overridden by plugins.
|
72
|
-
def breadcrumb_link_to(name, url, options = {})
|
73
|
-
context.link_to(name, url, options)
|
74
|
-
end
|
75
|
-
|
76
56
|
private
|
77
57
|
|
78
58
|
attr_reader :context, :breadcrumb_key, :breadcrumb_args
|
@@ -148,43 +128,7 @@ module Gretel
|
|
148
128
|
links
|
149
129
|
end
|
150
130
|
|
151
|
-
#
|
152
|
-
def render_fragment(fragment_tag, text, url, semantic, options = {})
|
153
|
-
if semantic
|
154
|
-
render_semantic_fragment(fragment_tag, text, url, options)
|
155
|
-
else
|
156
|
-
render_nonsemantic_fragment(fragment_tag, text, url, options)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
# Renders semantic fragment HTML.
|
161
|
-
def render_semantic_fragment(fragment_tag, text, url, options = {})
|
162
|
-
if fragment_tag
|
163
|
-
text = content_tag(:span, text, itemprop: "title")
|
164
|
-
text = breadcrumb_link_to(text, url, itemprop: "url") if url.present?
|
165
|
-
content_tag(fragment_tag, text, class: options[:class], itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
166
|
-
elsif url.present?
|
167
|
-
content_tag(:div, breadcrumb_link_to(content_tag(:span, text, itemprop: "title"), url, class: options[:class], itemprop: "url"), itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
168
|
-
else
|
169
|
-
content_tag(:div, content_tag(:span, text, class: options[:class], itemprop: "title"), itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
# Renders regular, non-semantic fragment HTML.
|
174
|
-
def render_nonsemantic_fragment(fragment_tag, text, url, options = {})
|
175
|
-
if fragment_tag
|
176
|
-
text = breadcrumb_link_to(text, url) if url.present?
|
177
|
-
content_tag(fragment_tag, text, class: options[:class])
|
178
|
-
elsif url.present?
|
179
|
-
breadcrumb_link_to(text, url, class: options[:class])
|
180
|
-
elsif options[:class].present?
|
181
|
-
content_tag(:span, text, class: options[:class])
|
182
|
-
else
|
183
|
-
text
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
# Proxy to view context
|
131
|
+
# Proxy to view context.
|
188
132
|
def method_missing(method, *args, &block)
|
189
133
|
context.send(method, *args, &block)
|
190
134
|
end
|
@@ -204,5 +148,97 @@ module Gretel
|
|
204
148
|
@styles ||= DEFAULT_STYLES
|
205
149
|
end
|
206
150
|
end
|
151
|
+
|
152
|
+
class LinkCollection < Array
|
153
|
+
attr_reader :context, :links, :options
|
154
|
+
|
155
|
+
def initialize(context, links, options = {})
|
156
|
+
@context, @links, @options = context, links, options
|
157
|
+
concat links
|
158
|
+
end
|
159
|
+
|
160
|
+
# Helper for returning all link keys to allow for simple testing.
|
161
|
+
def keys
|
162
|
+
map(&:key)
|
163
|
+
end
|
164
|
+
|
165
|
+
# Renders the links into breadcrumbs.
|
166
|
+
def render
|
167
|
+
return "" if links.empty?
|
168
|
+
|
169
|
+
# Loop through all but the last (current) link and build HTML of the fragments
|
170
|
+
fragments = links[0..-2].map do |link|
|
171
|
+
render_fragment(options[:fragment_tag], link.text, link.url, options[:semantic])
|
172
|
+
end
|
173
|
+
|
174
|
+
# The current link is handled a little differently, and is only linked if specified in the options
|
175
|
+
current_link = links.last
|
176
|
+
fragments << render_fragment(options[:fragment_tag], current_link.text, (options[:link_current] ? current_link.url : nil), options[:semantic], class: options[:current_class])
|
177
|
+
|
178
|
+
# Build the final HTML
|
179
|
+
html_fragments = []
|
180
|
+
|
181
|
+
if options[:pretext].present?
|
182
|
+
html_fragments << content_tag(:span, options[:pretext], class: "pretext")
|
183
|
+
end
|
184
|
+
|
185
|
+
html_fragments << fragments.join(options[:separator])
|
186
|
+
|
187
|
+
if options[:posttext].present?
|
188
|
+
html_fragments << content_tag(:span, options[:posttext], class: "posttext")
|
189
|
+
end
|
190
|
+
|
191
|
+
html = html_fragments.join(" ").html_safe
|
192
|
+
content_tag(options[:container_tag], html, id: options[:id], class: options[:class])
|
193
|
+
end
|
194
|
+
|
195
|
+
alias :to_s :render
|
196
|
+
|
197
|
+
# Renders HTML for a breadcrumb fragment, i.e. a breadcrumb link.
|
198
|
+
def render_fragment(fragment_tag, text, url, semantic, options = {})
|
199
|
+
if semantic
|
200
|
+
render_semantic_fragment(fragment_tag, text, url, options)
|
201
|
+
else
|
202
|
+
render_nonsemantic_fragment(fragment_tag, text, url, options)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
# Renders semantic fragment HTML.
|
207
|
+
def render_semantic_fragment(fragment_tag, text, url, options = {})
|
208
|
+
if fragment_tag
|
209
|
+
text = content_tag(:span, text, itemprop: "title")
|
210
|
+
text = breadcrumb_link_to(text, url, itemprop: "url") if url.present?
|
211
|
+
content_tag(fragment_tag, text, class: options[:class], itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
212
|
+
elsif url.present?
|
213
|
+
content_tag(:span, breadcrumb_link_to(content_tag(:span, text, itemprop: "title"), url, class: options[:class], itemprop: "url"), itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
214
|
+
else
|
215
|
+
content_tag(:span, content_tag(:span, text, class: options[:class], itemprop: "title"), itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
# Renders regular, non-semantic fragment HTML.
|
220
|
+
def render_nonsemantic_fragment(fragment_tag, text, url, options = {})
|
221
|
+
if fragment_tag
|
222
|
+
text = breadcrumb_link_to(text, url) if url.present?
|
223
|
+
content_tag(fragment_tag, text, class: options[:class])
|
224
|
+
elsif url.present?
|
225
|
+
breadcrumb_link_to(text, url, class: options[:class])
|
226
|
+
elsif options[:class].present?
|
227
|
+
content_tag(:span, text, class: options[:class])
|
228
|
+
else
|
229
|
+
text
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
# Proxy for +context.link_to+ that can be overridden by plugins.
|
234
|
+
def breadcrumb_link_to(name, url, options = {})
|
235
|
+
context.link_to(name, url, options)
|
236
|
+
end
|
237
|
+
|
238
|
+
# Proxy to view context.
|
239
|
+
def method_missing(method, *args, &block)
|
240
|
+
context.send(method, *args, &block)
|
241
|
+
end
|
242
|
+
end
|
207
243
|
end
|
208
244
|
end
|
data/lib/gretel/version.rb
CHANGED
data/lib/gretel/view_helpers.rb
CHANGED
@@ -48,12 +48,8 @@ module Gretel
|
|
48
48
|
# <% end %>
|
49
49
|
# <% end %>
|
50
50
|
# <% end %>
|
51
|
-
def breadcrumbs(options = {}
|
52
|
-
|
53
|
-
gretel_renderer.yield_links(options, &block)
|
54
|
-
else
|
55
|
-
gretel_renderer.render(options)
|
56
|
-
end
|
51
|
+
def breadcrumbs(options = {})
|
52
|
+
gretel_renderer.render(options)
|
57
53
|
end
|
58
54
|
|
59
55
|
# Returns or yields parent breadcrumb (second-to-last in the trail) if it is present.
|
data/test/deprecated_test.rb
CHANGED
@@ -13,7 +13,7 @@ class DeprecatedTest < ActionView::TestCase
|
|
13
13
|
test "show root alone" do
|
14
14
|
breadcrumb :root
|
15
15
|
assert_equal %{<div class="breadcrumbs"><span class="current">Home</span></div>},
|
16
|
-
breadcrumbs(show_root_alone: true)
|
16
|
+
breadcrumbs(show_root_alone: true).to_s
|
17
17
|
end
|
18
18
|
|
19
19
|
test "deprecated configuration block" do
|
@@ -22,4 +22,24 @@ class DeprecatedTest < ActionView::TestCase
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
25
|
+
|
26
|
+
test ":default style key" do
|
27
|
+
breadcrumb :basic
|
28
|
+
|
29
|
+
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">About</span></div>},
|
30
|
+
breadcrumbs(style: :default).to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
test "yield links" do
|
34
|
+
breadcrumb :multiple_links_with_parent
|
35
|
+
|
36
|
+
out = breadcrumbs do |links|
|
37
|
+
links.map { |link| [link.key, link.text, link.url] }
|
38
|
+
end
|
39
|
+
|
40
|
+
assert_equal [[:root, "Home", "/"],
|
41
|
+
[:basic, "About", "/about"],
|
42
|
+
[:multiple_links_with_parent, "Contact", "/about/contact"],
|
43
|
+
[:multiple_links_with_parent, "Contact form", "/about/contact/form"]], out
|
44
|
+
end
|
25
45
|
end
|
data/test/helper_methods_test.rb
CHANGED
@@ -14,142 +14,129 @@ class HelperMethodsTest < ActionView::TestCase
|
|
14
14
|
test "shows basic breadcrumb" do
|
15
15
|
breadcrumb :basic
|
16
16
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">About</span></div>},
|
17
|
-
breadcrumbs
|
17
|
+
breadcrumbs.to_s
|
18
18
|
end
|
19
19
|
|
20
20
|
test "shows breadcrumb with root" do
|
21
21
|
breadcrumb :with_root
|
22
22
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">About</span></div>},
|
23
|
-
breadcrumbs
|
23
|
+
breadcrumbs.to_s
|
24
24
|
end
|
25
25
|
|
26
26
|
test "shows breadcrumb with parent" do
|
27
27
|
breadcrumb :with_parent
|
28
28
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/about">About</a> › <span class="current">Contact</span></div>},
|
29
|
-
breadcrumbs
|
29
|
+
breadcrumbs.to_s
|
30
30
|
end
|
31
31
|
|
32
32
|
test "shows breadcrumb with autopath" do
|
33
33
|
breadcrumb :with_autopath, projects(:one)
|
34
34
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">Test Project</span></div>},
|
35
|
-
breadcrumbs
|
35
|
+
breadcrumbs.to_s
|
36
36
|
end
|
37
37
|
|
38
38
|
test "shows breadcrumb with parent object" do
|
39
39
|
breadcrumb :with_parent_object, issues(:one)
|
40
40
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/projects/1">Test Project</a> › <span class="current">Test Issue</span></div>},
|
41
|
-
breadcrumbs
|
41
|
+
breadcrumbs.to_s
|
42
42
|
end
|
43
43
|
|
44
44
|
test "shows multiple links" do
|
45
45
|
breadcrumb :multiple_links
|
46
46
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/about/contact">Contact</a> › <span class="current">Contact form</span></div>},
|
47
|
-
breadcrumbs
|
47
|
+
breadcrumbs.to_s
|
48
48
|
end
|
49
49
|
|
50
50
|
test "shows multiple links with parent" do
|
51
51
|
breadcrumb :multiple_links_with_parent
|
52
52
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/about">About</a> › <a href="/about/contact">Contact</a> › <span class="current">Contact form</span></div>},
|
53
|
-
breadcrumbs
|
53
|
+
breadcrumbs.to_s
|
54
54
|
end
|
55
55
|
|
56
56
|
test "shows semantic breadcrumb" do
|
57
57
|
breadcrumb :with_root
|
58
|
-
assert_equal %{<div class="breadcrumbs"><
|
59
|
-
breadcrumbs(semantic: true)
|
58
|
+
assert_equal %{<div class="breadcrumbs"><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/" itemprop="url"><span itemprop="title">Home</span></a></span> › <span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><span class="current" itemprop="title">About</span></span></div>},
|
59
|
+
breadcrumbs(semantic: true).to_s
|
60
60
|
end
|
61
61
|
|
62
62
|
test "doesn't show root alone" do
|
63
63
|
breadcrumb :root
|
64
|
-
assert_equal "", breadcrumbs
|
64
|
+
assert_equal "", breadcrumbs.to_s
|
65
65
|
end
|
66
66
|
|
67
67
|
test "displays single fragment" do
|
68
68
|
breadcrumb :root
|
69
69
|
assert_equal %{<div class="breadcrumbs"><span class="current">Home</span></div>},
|
70
|
-
breadcrumbs(display_single_fragment: true)
|
70
|
+
breadcrumbs(display_single_fragment: true).to_s
|
71
71
|
end
|
72
72
|
|
73
73
|
test "displays single non-root fragment" do
|
74
74
|
breadcrumb :basic
|
75
75
|
assert_equal %{<div class="breadcrumbs"><span class="current">About</span></div>},
|
76
|
-
breadcrumbs(autoroot: false, display_single_fragment: true)
|
76
|
+
breadcrumbs(autoroot: false, display_single_fragment: true).to_s
|
77
77
|
end
|
78
78
|
|
79
79
|
test "shows no breadcrumb" do
|
80
|
-
assert_equal "", breadcrumbs
|
80
|
+
assert_equal "", breadcrumbs.to_s
|
81
81
|
end
|
82
82
|
|
83
83
|
test "links current breadcrumb" do
|
84
84
|
breadcrumb :with_root
|
85
85
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/about" class="current">About</a></div>},
|
86
|
-
breadcrumbs(link_current: true)
|
86
|
+
breadcrumbs(link_current: true).to_s
|
87
87
|
end
|
88
88
|
|
89
89
|
test "shows pretext" do
|
90
90
|
breadcrumb :basic
|
91
|
-
assert_equal %{<div class="breadcrumbs">You are here
|
92
|
-
breadcrumbs(pretext: "You are here:
|
91
|
+
assert_equal %{<div class="breadcrumbs"><span class="pretext">You are here:</span> <a href="/">Home</a> › <span class="current">About</span></div>},
|
92
|
+
breadcrumbs(pretext: "You are here:").to_s
|
93
93
|
end
|
94
94
|
|
95
95
|
test "shows posttext" do
|
96
96
|
breadcrumb :basic
|
97
|
-
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">About</span>
|
98
|
-
breadcrumbs(posttext: "
|
97
|
+
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">About</span> <span class="posttext">text after breadcrumbs</span></div>},
|
98
|
+
breadcrumbs(posttext: "text after breadcrumbs").to_s
|
99
99
|
end
|
100
100
|
|
101
101
|
test "autoroot disabled" do
|
102
102
|
breadcrumb :basic
|
103
|
-
assert_equal "", breadcrumbs(autoroot: false)
|
103
|
+
assert_equal "", breadcrumbs(autoroot: false).to_s
|
104
104
|
end
|
105
105
|
|
106
106
|
test "shows separator" do
|
107
107
|
breadcrumb :with_root
|
108
108
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> » <span class="current">About</span></div>},
|
109
|
-
breadcrumbs(separator: " » ")
|
109
|
+
breadcrumbs(separator: " » ").to_s
|
110
110
|
end
|
111
111
|
|
112
112
|
test "shows element id" do
|
113
113
|
breadcrumb :basic
|
114
114
|
assert_equal %{<div class="breadcrumbs" id="custom_id"><a href="/">Home</a> › <span class="current">About</span></div>},
|
115
|
-
breadcrumbs(id: "custom_id")
|
115
|
+
breadcrumbs(id: "custom_id").to_s
|
116
116
|
end
|
117
117
|
|
118
118
|
test "shows custom container class" do
|
119
119
|
breadcrumb :basic
|
120
120
|
assert_equal %{<div class="custom_class"><a href="/">Home</a> › <span class="current">About</span></div>},
|
121
|
-
breadcrumbs(class: "custom_class")
|
121
|
+
breadcrumbs(class: "custom_class").to_s
|
122
122
|
end
|
123
123
|
|
124
124
|
test "shows custom current class" do
|
125
125
|
breadcrumb :basic
|
126
126
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="custom_current_class">About</span></div>},
|
127
|
-
breadcrumbs(current_class: "custom_current_class")
|
127
|
+
breadcrumbs(current_class: "custom_current_class").to_s
|
128
128
|
end
|
129
129
|
|
130
130
|
test "unsafe html" do
|
131
131
|
breadcrumb :with_unsafe_html
|
132
132
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">Test <strong>bold text</strong></span></div>},
|
133
|
-
breadcrumbs
|
133
|
+
breadcrumbs.to_s
|
134
134
|
end
|
135
135
|
|
136
136
|
test "safe html" do
|
137
137
|
breadcrumb :with_safe_html
|
138
138
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">Test <strong>bold text</strong></span></div>},
|
139
|
-
breadcrumbs
|
140
|
-
end
|
141
|
-
|
142
|
-
test "yields a block containing breadcrumb links array" do
|
143
|
-
breadcrumb :multiple_links_with_parent
|
144
|
-
|
145
|
-
out = breadcrumbs do |links|
|
146
|
-
links.map { |link| [link.key, link.text, link.url] }
|
147
|
-
end
|
148
|
-
|
149
|
-
assert_equal [[:root, "Home", "/"],
|
150
|
-
[:basic, "About", "/about"],
|
151
|
-
[:multiple_links_with_parent, "Contact", "/about/contact"],
|
152
|
-
[:multiple_links_with_parent, "Contact form", "/about/contact/form"]], out
|
139
|
+
breadcrumbs.to_s
|
153
140
|
end
|
154
141
|
|
155
142
|
test "parent breadcrumb" do
|
@@ -186,20 +173,29 @@ class HelperMethodsTest < ActionView::TestCase
|
|
186
173
|
assert_nil out
|
187
174
|
end
|
188
175
|
|
189
|
-
test "
|
190
|
-
breadcrumb :
|
176
|
+
test "link keys" do
|
177
|
+
breadcrumb :basic
|
178
|
+
assert_equal [:root, :basic], breadcrumbs.keys
|
179
|
+
end
|
180
|
+
|
181
|
+
test "using breadcrumbs as array" do
|
182
|
+
breadcrumb :basic
|
191
183
|
|
192
|
-
|
193
|
-
links
|
184
|
+
breadcrumbs.tap do |links|
|
185
|
+
assert_kind_of Array, links
|
186
|
+
assert_equal 2, links.count
|
194
187
|
end
|
188
|
+
end
|
195
189
|
|
196
|
-
|
190
|
+
test "sets current on last link in array" do
|
191
|
+
breadcrumb :multiple_links_with_parent
|
192
|
+
assert_equal [false, false, false, true], breadcrumbs.map(&:current?)
|
197
193
|
end
|
198
194
|
|
199
195
|
test "passing options to links" do
|
200
196
|
breadcrumb :with_link_options
|
201
197
|
|
202
|
-
breadcrumbs(autoroot: false) do |links|
|
198
|
+
breadcrumbs(autoroot: false).tap do |links|
|
203
199
|
links[0].tap do |link|
|
204
200
|
assert link.title?
|
205
201
|
assert_equal "My Title", link.title
|
@@ -218,53 +214,53 @@ class HelperMethodsTest < ActionView::TestCase
|
|
218
214
|
end
|
219
215
|
|
220
216
|
assert_equal %{<div class="breadcrumbs"><a href="/about">Test</a> › <span class="current">Other Link</span></div>},
|
221
|
-
breadcrumbs(autoroot: false)
|
217
|
+
breadcrumbs(autoroot: false).to_s
|
222
218
|
end
|
223
219
|
|
224
220
|
test "without link" do
|
225
221
|
breadcrumb :without_link
|
226
222
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › Also without link › <span class="current">Without link</span></div>},
|
227
|
-
breadcrumbs
|
223
|
+
breadcrumbs.to_s
|
228
224
|
end
|
229
225
|
|
230
226
|
test "view context" do
|
231
227
|
breadcrumb :using_view_helper
|
232
228
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">TestTest</span></div>},
|
233
|
-
breadcrumbs
|
229
|
+
breadcrumbs.to_s
|
234
230
|
end
|
235
231
|
|
236
232
|
test "multiple arguments" do
|
237
233
|
breadcrumb :with_multiple_arguments, "One", "Two", "Three"
|
238
234
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/about">First OneOne then TwoTwo then ThreeThree</a> › <span class="current">One and Two and Three</span></div>},
|
239
|
-
breadcrumbs
|
235
|
+
breadcrumbs.to_s
|
240
236
|
end
|
241
237
|
|
242
238
|
test "from views folder" do
|
243
239
|
breadcrumb :from_views
|
244
240
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">Breadcrumb From View</span></div>},
|
245
|
-
breadcrumbs
|
241
|
+
breadcrumbs.to_s
|
246
242
|
end
|
247
243
|
|
248
244
|
test "with_breadcrumb" do
|
249
245
|
breadcrumb :basic
|
250
246
|
|
251
247
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">About</span></div>},
|
252
|
-
breadcrumbs
|
248
|
+
breadcrumbs.to_s
|
253
249
|
|
254
250
|
with_breadcrumb(:with_parent_object, issues(:one)) do
|
255
251
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/projects/1">Test Project</a> › <span class="current">Test Issue</span></div>},
|
256
|
-
breadcrumbs
|
252
|
+
breadcrumbs.to_s
|
257
253
|
end
|
258
254
|
|
259
255
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">About</span></div>},
|
260
|
-
breadcrumbs
|
256
|
+
breadcrumbs.to_s
|
261
257
|
end
|
262
258
|
|
263
259
|
test "calling breadcrumbs helper twice" do
|
264
260
|
breadcrumb :with_parent
|
265
261
|
2.times do
|
266
262
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/about">About</a> › <span class="current">Contact</span></div>},
|
267
|
-
breadcrumbs
|
263
|
+
breadcrumbs.to_s
|
268
264
|
end
|
269
265
|
end
|
270
266
|
|
@@ -279,7 +275,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
279
275
|
self.request = OpenStruct.new(fullpath: "/testpath?a=1&b=2")
|
280
276
|
|
281
277
|
breadcrumb :basic
|
282
|
-
assert_equal "/testpath?a=1&b=2", breadcrumbs
|
278
|
+
assert_equal "/testpath?a=1&b=2", breadcrumbs.last.url
|
283
279
|
end
|
284
280
|
|
285
281
|
test "calling the breadcrumb method with wrong arguments" do
|
@@ -299,7 +295,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
299
295
|
test "inferred breadcrumb" do
|
300
296
|
breadcrumb Project.first
|
301
297
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">Test Project</span></div>},
|
302
|
-
breadcrumbs
|
298
|
+
breadcrumbs.to_s
|
303
299
|
end
|
304
300
|
|
305
301
|
# Styles
|
@@ -307,43 +303,43 @@ class HelperMethodsTest < ActionView::TestCase
|
|
307
303
|
test "default style" do
|
308
304
|
breadcrumb :basic
|
309
305
|
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <span class="current">About</span></div>},
|
310
|
-
breadcrumbs
|
306
|
+
breadcrumbs.to_s
|
311
307
|
end
|
312
308
|
|
313
309
|
test "ordered list style" do
|
314
310
|
breadcrumb :basic
|
315
311
|
assert_equal %{<ol class="breadcrumbs"><li><a href="/">Home</a></li><li class="current">About</li></ol>},
|
316
|
-
breadcrumbs(style: :ol)
|
312
|
+
breadcrumbs(style: :ol).to_s
|
317
313
|
end
|
318
314
|
|
319
315
|
test "unordered list style" do
|
320
316
|
breadcrumb :basic
|
321
317
|
assert_equal %{<ul class="breadcrumbs"><li><a href="/">Home</a></li><li class="current">About</li></ul>},
|
322
|
-
breadcrumbs(style: :ul)
|
318
|
+
breadcrumbs(style: :ul).to_s
|
323
319
|
end
|
324
320
|
|
325
321
|
test "bootstrap style" do
|
326
322
|
breadcrumb :basic
|
327
323
|
assert_equal %{<ol class="breadcrumb"><li><a href="/">Home</a></li><li class="active">About</li></ol>},
|
328
|
-
breadcrumbs(style: :bootstrap)
|
324
|
+
breadcrumbs(style: :bootstrap).to_s
|
329
325
|
end
|
330
326
|
|
331
327
|
test "foundation5 style" do
|
332
328
|
breadcrumb :basic
|
333
329
|
assert_equal %{<ul class="breadcrumbs"><li><a href="/">Home</a></li><li class="current">About</li></ul>},
|
334
|
-
breadcrumbs(style: :foundation5)
|
330
|
+
breadcrumbs(style: :foundation5).to_s
|
335
331
|
end
|
336
332
|
|
337
333
|
test "custom container and fragment tags" do
|
338
334
|
breadcrumb :basic
|
339
335
|
assert_equal %{<c class="breadcrumbs"><f><a href="/">Home</a></f> › <f class="current">About</f></c>},
|
340
|
-
breadcrumbs(container_tag: :c, fragment_tag: :f)
|
336
|
+
breadcrumbs(container_tag: :c, fragment_tag: :f).to_s
|
341
337
|
end
|
342
338
|
|
343
339
|
test "custom semantic container and fragment tags" do
|
344
340
|
breadcrumb :basic
|
345
341
|
assert_equal %{<c class="breadcrumbs"><f itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/" itemprop="url"><span itemprop="title">Home</span></a></f> › <f class="current" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">About</span></f></c>},
|
346
|
-
breadcrumbs(container_tag: :c, fragment_tag: :f, semantic: true)
|
342
|
+
breadcrumbs(container_tag: :c, fragment_tag: :f, semantic: true).to_s
|
347
343
|
end
|
348
344
|
|
349
345
|
test "unknown style" do
|
@@ -359,7 +355,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
359
355
|
breadcrumb :basic
|
360
356
|
|
361
357
|
assert_equal %{<one class="breadcrumbs"><two><a href="/">Home</a></two><two class="current">About</two></one>},
|
362
|
-
breadcrumbs(style: :test_style)
|
358
|
+
breadcrumbs(style: :test_style).to_s
|
363
359
|
end
|
364
360
|
|
365
361
|
# Configuration reload
|
@@ -380,7 +376,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
380
376
|
end
|
381
377
|
|
382
378
|
breadcrumb :about
|
383
|
-
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs
|
379
|
+
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
|
384
380
|
|
385
381
|
sleep 1 # File change interval is 1 second
|
386
382
|
|
@@ -396,7 +392,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
396
392
|
end
|
397
393
|
|
398
394
|
breadcrumb :about
|
399
|
-
assert_equal %{<div class="breadcrumbs"><a href="/test">Home (reloaded)</a> › <span class="current">About (reloaded)</span></div>}, breadcrumbs
|
395
|
+
assert_equal %{<div class="breadcrumbs"><a href="/test">Home (reloaded)</a> › <span class="current">About (reloaded)</span></div>}, breadcrumbs.to_s
|
400
396
|
end
|
401
397
|
|
402
398
|
test "reload configuration when file is added" do
|
@@ -425,7 +421,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
425
421
|
end
|
426
422
|
|
427
423
|
breadcrumb :about
|
428
|
-
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs
|
424
|
+
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
|
429
425
|
end
|
430
426
|
|
431
427
|
test "reload configuration when file is deleted" do
|
@@ -453,7 +449,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
453
449
|
end
|
454
450
|
|
455
451
|
breadcrumb :contact
|
456
|
-
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <a href="/about">About (loaded)</a> › <span class="current">Contact (loaded)</span></div>}, breadcrumbs
|
452
|
+
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <a href="/about">About (loaded)</a> › <span class="current">Contact (loaded)</span></div>}, breadcrumbs.to_s
|
457
453
|
|
458
454
|
File.delete path.join("pages.rb")
|
459
455
|
|
@@ -463,7 +459,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
463
459
|
end
|
464
460
|
|
465
461
|
breadcrumb :about
|
466
|
-
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs
|
462
|
+
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
|
467
463
|
end
|
468
464
|
|
469
465
|
test "reloads only in development environment" do
|
@@ -483,7 +479,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
483
479
|
end
|
484
480
|
|
485
481
|
breadcrumb :about
|
486
|
-
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs
|
482
|
+
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
|
487
483
|
|
488
484
|
sleep 1
|
489
485
|
|
@@ -499,7 +495,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
499
495
|
end
|
500
496
|
|
501
497
|
breadcrumb :about
|
502
|
-
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs
|
498
|
+
assert_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> › <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
|
503
499
|
end
|
504
500
|
|
505
501
|
private
|
metadata
CHANGED
@@ -1,55 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gretel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lasse Bunk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.2.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.2.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rails
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 3.2.13
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 3.2.13
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: sqlite3
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- -
|
31
|
+
- - ">="
|
46
32
|
- !ruby/object:Gem::Version
|
47
33
|
version: '0'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- -
|
38
|
+
- - ">="
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '0'
|
55
41
|
description: Gretel is a Ruby on Rails plugin that makes it easy yet flexible to create
|
@@ -60,8 +46,8 @@ executables: []
|
|
60
46
|
extensions: []
|
61
47
|
extra_rdoc_files: []
|
62
48
|
files:
|
63
|
-
- .gitignore
|
64
|
-
- .travis.yml
|
49
|
+
- ".gitignore"
|
50
|
+
- ".travis.yml"
|
65
51
|
- CHANGELOG.md
|
66
52
|
- Gemfile
|
67
53
|
- LICENSE.txt
|
@@ -75,8 +61,10 @@ files:
|
|
75
61
|
- lib/gretel/crumb.rb
|
76
62
|
- lib/gretel/crumbs.rb
|
77
63
|
- lib/gretel/deprecated.rb
|
64
|
+
- lib/gretel/deprecated/default_style_key.rb
|
78
65
|
- lib/gretel/deprecated/layout.rb
|
79
66
|
- lib/gretel/deprecated/show_root_alone.rb
|
67
|
+
- lib/gretel/deprecated/yield_links.rb
|
80
68
|
- lib/gretel/link.rb
|
81
69
|
- lib/gretel/renderer.rb
|
82
70
|
- lib/gretel/resettable.rb
|
@@ -136,17 +124,17 @@ require_paths:
|
|
136
124
|
- lib
|
137
125
|
required_ruby_version: !ruby/object:Gem::Requirement
|
138
126
|
requirements:
|
139
|
-
- -
|
127
|
+
- - ">="
|
140
128
|
- !ruby/object:Gem::Version
|
141
129
|
version: '0'
|
142
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
131
|
requirements:
|
144
|
-
- -
|
132
|
+
- - ">="
|
145
133
|
- !ruby/object:Gem::Version
|
146
134
|
version: '0'
|
147
135
|
requirements: []
|
148
136
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.1
|
137
|
+
rubygems_version: 2.2.1
|
150
138
|
signing_key:
|
151
139
|
specification_version: 4
|
152
140
|
summary: Flexible Ruby on Rails breadcrumbs plugin.
|