gretel 4.2.0 → 4.3.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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +52 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +2 -0
- data/README.md +28 -3
- data/lib/gretel/renderer.rb +15 -8
- data/lib/gretel/version.rb +1 -1
- metadata +4 -4
- data/.travis.yml +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1fe62ed99bb8f03e6a00a782f55adc5f6b6fcf84a444d77aa1c771b41d148a9
|
4
|
+
data.tar.gz: 1660db0b73ddbf77dac315c8d1466fb66958b9ebab59629c96f999536f17b824
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bddd221544196836669a1309c97d536ad2d2b11ef10c74a265e034d0a1463ba5b4955651235ad395b9c37249a9d5eff2ef9ec9b659ab896a8fbca959b199924
|
7
|
+
data.tar.gz: ebd6e183dc3597f83c9ac8b22399d0ad52e345da6586b9de59c2386c8b5116d40199fcf494c44cd8d094a25ed543d5ee21397506d1979ebf851a973e23da3ced
|
@@ -0,0 +1,52 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
pull_request:
|
6
|
+
schedule:
|
7
|
+
- cron: '0 0 * * 0'
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
strategy:
|
13
|
+
matrix:
|
14
|
+
rails_version: [5.1.0, 5.2.0, 6.0.0, 6.1.0, master]
|
15
|
+
ruby_version: [3.0, 2.7, 2.6, 2.5]
|
16
|
+
exclude:
|
17
|
+
- ruby_version: 2.5
|
18
|
+
rails_version: master
|
19
|
+
- ruby_version: 2.6
|
20
|
+
rails_version: master
|
21
|
+
- ruby_version: 3.0
|
22
|
+
rails_version: 5.1.0
|
23
|
+
- ruby_version: 3.0
|
24
|
+
rails_version: 5.2.0
|
25
|
+
|
26
|
+
steps:
|
27
|
+
- uses: actions/checkout@v2
|
28
|
+
|
29
|
+
- name: Setup Ruby
|
30
|
+
uses: ruby/setup-ruby@v1
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby_version }}
|
33
|
+
|
34
|
+
- name: Run test
|
35
|
+
env:
|
36
|
+
RAILS_VERSION: ${{ matrix.rails_version }}
|
37
|
+
run: |
|
38
|
+
bundle update
|
39
|
+
cd spec/dummy; rake db:migrate db:test:prepare; cd ../..
|
40
|
+
bundle exec rake
|
41
|
+
|
42
|
+
- name: Upload coverage
|
43
|
+
uses: actions/upload-artifact@v2
|
44
|
+
if: always()
|
45
|
+
with:
|
46
|
+
name: coverage-ruby-${{ matrix.ruby_version }}-rails-${{ matrix.rails_version }}
|
47
|
+
path: coverage
|
48
|
+
|
49
|
+
- name: Show coverage
|
50
|
+
if: always()
|
51
|
+
run: |
|
52
|
+
cat coverage/coverage.txt
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
[](http://badge.fury.io/rb/gretel)
|
2
|
-
|
2
|
+

|
3
3
|
|
4
4
|
<img src="http://i.imgur.com/CAKEaBM.png" alt="Handle breadcrumb trails... like a boss :)" />
|
5
5
|
|
@@ -98,6 +98,7 @@ Option | Description
|
|
98
98
|
:posttext_class | CSS class for the posttext, if given. Can be set to `nil` for no class. | `"posttext"`
|
99
99
|
:container_tag | Tag type that contains the breadcrumbs. | `:div`
|
100
100
|
:fragment_tag | Tag type to contain each breadcrumb fragment/link. | None
|
101
|
+
:aria_current | Value of `aria-current` attribute. | None
|
101
102
|
|
102
103
|
### Styles
|
103
104
|
|
@@ -202,6 +203,11 @@ end
|
|
202
203
|
crumb :user do |user|
|
203
204
|
link user_name_for(user), user
|
204
205
|
end
|
206
|
+
|
207
|
+
# I18n
|
208
|
+
crumb :home do
|
209
|
+
link t("breadcrumbs.home"), root_path
|
210
|
+
end
|
205
211
|
```
|
206
212
|
|
207
213
|
## Building the breadcrumbs manually
|
@@ -224,7 +230,7 @@ add them back is to use JSON-LD structured data:
|
|
224
230
|
|
225
231
|
```erb
|
226
232
|
<script type="application/ld+json">
|
227
|
-
<%= breadcrumbs.structured_data(url_base: "https://example.com")
|
233
|
+
<%= breadcrumbs.structured_data(url_base: "https://example.com") %>
|
228
234
|
</script>
|
229
235
|
```
|
230
236
|
|
@@ -232,7 +238,7 @@ Or, you can infer `url_base` from `request`:
|
|
232
238
|
|
233
239
|
```erb
|
234
240
|
<script type="application/ld+json">
|
235
|
-
<%= breadcrumbs.structured_data(url_base: "#{request.protocol}#{request.host_with_port}")
|
241
|
+
<%= breadcrumbs.structured_data(url_base: "#{request.protocol}#{request.host_with_port}") %>
|
236
242
|
</script>
|
237
243
|
```
|
238
244
|
|
@@ -309,6 +315,25 @@ breadcrumbs do |links|
|
|
309
315
|
end
|
310
316
|
```
|
311
317
|
|
318
|
+
### ARIA support
|
319
|
+
|
320
|
+
You can improve the accessibility of your page with the markup that specified in [ARIA](https://www.w3.org/TR/wai-aria-practices/examples/breadcrumb/index.html). Gretel supports generating `aria-current` attribute:
|
321
|
+
|
322
|
+
```erb
|
323
|
+
<% breadcrumb :issue, @issue %>
|
324
|
+
<%= breadcrumbs aria_current: "page" %>
|
325
|
+
```
|
326
|
+
|
327
|
+
This will generate the following HTML (indented for readability):
|
328
|
+
|
329
|
+
```html
|
330
|
+
<div class="breadcrumbs">
|
331
|
+
<a href="/">Home</a> ›
|
332
|
+
<a href="/issues">All issues</a> ›
|
333
|
+
<span class="current" aria-current="page">My Issue</span>
|
334
|
+
</div>
|
335
|
+
```
|
336
|
+
|
312
337
|
## Documentation
|
313
338
|
|
314
339
|
* [Full documentation](https://rubydoc.info/gems/gretel)
|
data/lib/gretel/renderer.rb
CHANGED
@@ -17,7 +17,8 @@ module Gretel
|
|
17
17
|
current_class: "current",
|
18
18
|
pretext_class: "pretext",
|
19
19
|
posttext_class: "posttext",
|
20
|
-
id: nil
|
20
|
+
id: nil,
|
21
|
+
aria_current: nil
|
21
22
|
}
|
22
23
|
|
23
24
|
DEFAULT_STYLES = {
|
@@ -197,7 +198,7 @@ module Gretel
|
|
197
198
|
# The current link is handled a little differently, and is only linked if specified in the options
|
198
199
|
current_link = links.last
|
199
200
|
position = links.size
|
200
|
-
fragments << render_fragment(options[:fragment_tag], current_link.text, (options[:link_current] ? current_link.url : nil), options[:semantic], position, fragment_class: options[:fragment_class], class: options[:current_class], current_link: current_link.url)
|
201
|
+
fragments << render_fragment(options[:fragment_tag], current_link.text, (options[:link_current] ? current_link.url : nil), options[:semantic], position, fragment_class: options[:fragment_class], class: options[:current_class], current_link: current_link.url, aria_current: options[:aria_current])
|
201
202
|
|
202
203
|
# Build the final HTML
|
203
204
|
html_fragments = []
|
@@ -239,15 +240,17 @@ module Gretel
|
|
239
240
|
fragment_tag = fragment_tag || 'span'
|
240
241
|
text = content_tag(:span, text, itemprop: "name")
|
241
242
|
|
243
|
+
aria_current = options[:aria_current]
|
242
244
|
if url.present?
|
243
|
-
text = breadcrumb_link_to(text, url, itemprop: "item")
|
245
|
+
text = breadcrumb_link_to(text, url, itemprop: "item", "aria-current": aria_current)
|
246
|
+
aria_current = nil
|
244
247
|
elsif options[:current_link].present?
|
245
248
|
current_url = "#{root_url}#{options[:current_link].gsub(/^\//, '')}"
|
246
249
|
text = text + tag(:meta, itemprop: "item", content: current_url)
|
247
250
|
end
|
248
251
|
|
249
252
|
text = text + tag(:meta, itemprop:"position", content: "#{position}")
|
250
|
-
content_tag(fragment_tag.to_sym, text, class: fragment_class, itemprop: "itemListElement", itemscope: "", itemtype: "https://schema.org/ListItem")
|
253
|
+
content_tag(fragment_tag.to_sym, text, class: fragment_class, itemprop: "itemListElement", itemscope: "", itemtype: "https://schema.org/ListItem", "aria-current": aria_current)
|
251
254
|
end
|
252
255
|
|
253
256
|
# Renders regular, non-semantic fragment HTML.
|
@@ -256,12 +259,16 @@ module Gretel
|
|
256
259
|
fragment_class = nil if fragment_class.blank?
|
257
260
|
|
258
261
|
if fragment_tag
|
259
|
-
|
260
|
-
|
262
|
+
if url.present?
|
263
|
+
text = breadcrumb_link_to(text, url, "aria-current": options[:aria_current])
|
264
|
+
content_tag(fragment_tag, text, class: fragment_class)
|
265
|
+
else
|
266
|
+
content_tag(fragment_tag, text, class: fragment_class, "aria-current": options[:aria_current])
|
267
|
+
end
|
261
268
|
elsif url.present?
|
262
|
-
breadcrumb_link_to(text, url, class: fragment_class)
|
269
|
+
breadcrumb_link_to(text, url, class: fragment_class, "aria-current": options[:aria_current])
|
263
270
|
elsif options[:class].present?
|
264
|
-
content_tag(:span, text, class: fragment_class)
|
271
|
+
content_tag(:span, text, class: fragment_class, "aria-current": options[:aria_current])
|
265
272
|
else
|
266
273
|
text
|
267
274
|
end
|
data/lib/gretel/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gretel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lasse Bunk
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-07-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -115,8 +115,8 @@ executables: []
|
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
|
+
- ".github/workflows/ci.yml"
|
118
119
|
- ".gitignore"
|
119
|
-
- ".travis.yml"
|
120
120
|
- CHANGELOG.md
|
121
121
|
- Gemfile
|
122
122
|
- LICENSE.txt
|
@@ -155,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
155
|
- !ruby/object:Gem::Version
|
156
156
|
version: '0'
|
157
157
|
requirements: []
|
158
|
-
rubygems_version: 3.
|
158
|
+
rubygems_version: 3.2.15
|
159
159
|
signing_key:
|
160
160
|
specification_version: 4
|
161
161
|
summary: Flexible Ruby on Rails breadcrumbs plugin.
|
data/.travis.yml
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
sudo: false
|
3
|
-
rvm:
|
4
|
-
- 2.7
|
5
|
-
- 2.6
|
6
|
-
- 2.5
|
7
|
-
env:
|
8
|
-
- RAILS_VERSION="~> 5.1.0"
|
9
|
-
- RAILS_VERSION="~> 5.2.0"
|
10
|
-
- RAILS_VERSION="~> 6.0.0"
|
11
|
-
- RAILS_VERSION="master"
|
12
|
-
before_script:
|
13
|
-
- "cd spec/dummy; rake db:migrate; rake db:test:prepare; cd ../.."
|
14
|
-
after_script:
|
15
|
-
- "cat coverage/coverage.txt"
|
16
|
-
notifications:
|
17
|
-
email: false
|