jekyll-toc 0.15.0 → 0.16.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e250bc0a38525c4496ba464685b2ca3bc9c462953ce7c299a52cf52611940099
4
- data.tar.gz: 628f832e2adaae7b8b225423149b6dd950d04c884698f1b8e42c6e3990f33359
3
+ metadata.gz: bd7b0687350d7dfb3589aa9f476f4b2e937aa03dfa7469443ccf7c81eb66557b
4
+ data.tar.gz: 7318efc6eb7aaf665f74bbae9ae48c26d46f684b54ac36381bd19905e3413f00
5
5
  SHA512:
6
- metadata.gz: 258fde765cb95ce75abd2b87a4336a3a58630188e872c337014b8b780ac06843521b49070a201a3c9cdc7530409f61caeb159b770801b580eed8fb4921a5f74c
7
- data.tar.gz: d9d8e1dc2b78c353333db1af1ad03eb86b387e35e89fea8fd554c834e3b8d93b200539f48f9bc070d95bb24f18addb8127329b966a6512ef6bac02909ce37ef1
6
+ metadata.gz: 0c7862b108fcd48e8483945ed8fd0354d9e3f255a6f1c564607da167b1dfde6c59996c3934987c1a2542e36112bb1ad34fcc83b0de6bed65d524b9b7afd05dc5
7
+ data.tar.gz: e892d4e54cd93a74ae82838cfe451c4b6a9936362ed02cef7552eae7012395091cf3164370dc7c7b9e5a37921ad990b69b128d8640aa5a35795ffb7a714a8301
@@ -4,7 +4,7 @@ jobs:
4
4
  build:
5
5
  strategy:
6
6
  matrix:
7
- ruby: [2.6]
7
+ ruby: [2.7]
8
8
  runs-on: ubuntu-latest
9
9
  name: coverage
10
10
  steps:
@@ -15,7 +15,7 @@ jobs:
15
15
  ruby-version: ${{ matrix.ruby }}
16
16
  - name: bundle install
17
17
  run: bundle install --jobs 4 --retry 3
18
- - uses: paambaati/codeclimate-action@v2.7.4
18
+ - uses: paambaati/codeclimate-action@v2.7.5
19
19
  env:
20
20
  CC_TEST_REPORTER_ID: 6b81e393ea6ad38560386f650ea2fb0e57a7beb5e20f8c8364fabee30d5bff07
21
21
  with:
@@ -4,7 +4,7 @@ jobs:
4
4
  build:
5
5
  strategy:
6
6
  matrix:
7
- ruby: [2.6]
7
+ ruby: [2.7]
8
8
  runs-on: ubuntu-latest
9
9
  name: rubocop
10
10
  steps:
data/Gemfile CHANGED
@@ -9,5 +9,6 @@ gem 'pry'
9
9
  gem 'rake'
10
10
  gem 'rubocop-minitest'
11
11
  gem 'rubocop-performance'
12
+ gem 'rubocop-rake'
12
13
  gem 'rubocop'
13
14
  gem 'simplecov', '~> 0.17.1'
data/README.md CHANGED
@@ -19,7 +19,7 @@
19
19
  - [Skip TOC](#skip-toc)
20
20
  - [Skip TOC Sectionally](#skip-toc-sectionally)
21
21
  - [CSS Styling](#css-styling)
22
- - [Custom CSS Class](#custom-css-class)
22
+ - [Custom CSS Class and ID](#custom-css-class-and-id)
23
23
  - [Using Unordered/Ordered lists](#using-unorderedordered-lists)
24
24
  - [Alternative Tools](#alternative-tools)
25
25
 
@@ -121,7 +121,7 @@ location with the `toc_only` filter.
121
121
  jekyll-toc generates an unordered list by default. The HTML output is as follows.
122
122
 
123
123
  ```html
124
- <ul class="section-nav">
124
+ <ul id="toc" class="section-nav">
125
125
  <li class="toc-entry toc-h1"><a href="#heading1">Heading.1</a>
126
126
  <ul>
127
127
  <li class="toc-entry toc-h2"><a href="#heading1-1">Heading.1-1</a></li>
@@ -157,6 +157,7 @@ toc:
157
157
  max_level: 6
158
158
  ordered_list: false
159
159
  no_toc_section_class: no_toc_section
160
+ list_id: toc
160
161
  list_class: section-nav
161
162
  sublist_class: ''
162
163
  item_class: toc-entry
@@ -252,21 +253,18 @@ Each TOC `li` entry has two CSS classes for further styling. The general `toc-en
252
253
  Depending on the heading level each specific entry refers to, it has a second CSS class `toc-XX`, where `XX` is the HTML heading tag name.
253
254
  For example, the TOC entry linking to a heading `<h1>...</h1>` (a single `#` in Markdown) will get the CSS class `toc-h1`.
254
255
 
255
- ### Custom CSS Class
256
+ ### Custom CSS Class and ID
256
257
 
257
258
  You can apply custom CSS classes to the generated `<ul>` and `<li>` tags.
258
259
 
259
260
  ```yml
260
261
  # _config.yml
261
262
  toc:
262
- # Default is "section-nav":
263
- list_class: my-list-class
264
- # Default is no class for sublists:
265
- sublist_class: my-sublist-class
266
- # Default is "toc-entry":
267
- item_class: my-item-class
268
- # Default is "toc-":
269
- item_prefix: item-
263
+ list_id: my-toc-id # Default: "toc"
264
+ list_class: my-list-class # Default: "section-nav"
265
+ sublist_class: my-sublist-class # Default: no class for sublists
266
+ item_class: my-item-class # Default: "toc-entry"
267
+ item_prefix: item- # Default: "toc-":
270
268
  ```
271
269
 
272
270
  ### Using Unordered/Ordered lists
@@ -5,13 +5,14 @@ module Jekyll
5
5
  # jekyll-toc configuration class
6
6
  class Configuration
7
7
  attr_reader :toc_levels, :no_toc_class, :ordered_list, :no_toc_section_class,
8
- :list_class, :sublist_class, :item_class, :item_prefix
8
+ :list_id, :list_class, :sublist_class, :item_class, :item_prefix
9
9
 
10
10
  DEFAULT_CONFIG = {
11
11
  'min_level' => 1,
12
12
  'max_level' => 6,
13
13
  'ordered_list' => false,
14
14
  'no_toc_section_class' => 'no_toc_section',
15
+ 'list_id' => 'toc',
15
16
  'list_class' => 'section-nav',
16
17
  'sublist_class' => '',
17
18
  'item_class' => 'toc-entry',
@@ -25,6 +26,7 @@ module Jekyll
25
26
  @ordered_list = options['ordered_list']
26
27
  @no_toc_class = 'no_toc'
27
28
  @no_toc_section_class = options['no_toc_section_class']
29
+ @list_id = options['list_id']
28
30
  @list_class = options['list_class']
29
31
  @sublist_class = options['sublist_class']
30
32
  @item_class = options['item_class']
@@ -19,7 +19,7 @@ module Jekyll
19
19
  end
20
20
 
21
21
  def build_toc
22
- %(<#{list_tag} class="#{@configuration.list_class}">\n#{build_toc_list(@entries)}</#{list_tag}>)
22
+ %(<#{list_tag} id="#{@configuration.list_id}" class="#{@configuration.list_class}">\n#{build_toc_list(@entries)}</#{list_tag}>)
23
23
  end
24
24
 
25
25
  def inject_anchors_into_html
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module TableOfContents
5
- VERSION = '0.15.0'
5
+ VERSION = '0.16.0'
6
6
  end
7
7
  end
@@ -18,6 +18,6 @@ class TestInjectAnchorsFilter < Minitest::Test
18
18
  def test_does_not_inject_toc
19
19
  html = @parser.inject_anchors_into_html
20
20
 
21
- refute_includes(html, %(<ul class="section-nav">))
21
+ refute_includes(html, %(<ul id="toc" class="section-nav">))
22
22
  end
23
23
  end
@@ -5,7 +5,7 @@ require 'test_helper'
5
5
  class TestInvalidOptions < Minitest::Test
6
6
  BASE_HTML = '<h1>h1</h1>'
7
7
  EXPECTED_HTML = <<~HTML.chomp
8
- <ul class="section-nav">
8
+ <ul id="toc" class="section-nav">
9
9
  <li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
10
10
  </ul>
11
11
  HTML
@@ -27,7 +27,7 @@ class TestOrderedList < Minitest::Test
27
27
  parse_with_ordered_list
28
28
  html = @parser.toc
29
29
 
30
- assert_match(/^<ol class="section-nav">/, html)
30
+ assert_match(/^<ol id="toc" class="section-nav">/, html)
31
31
  end
32
32
 
33
33
  def test_ordered_list_sub_headings
@@ -41,7 +41,7 @@ class TestOrderedList < Minitest::Test
41
41
  parse_with_ordered_list_and_classes
42
42
  html = @parser.toc
43
43
 
44
- assert_match(/^<ol class="top-list-class">/, html)
44
+ assert_match(/^<ol id="toc" class="top-list-class">/, html)
45
45
  end
46
46
 
47
47
  def test_ordered_list_sub_headings_with_classes
@@ -31,6 +31,6 @@ class TestTOCFilter < Minitest::Test
31
31
  def test_injects_toc_container
32
32
  html = @parser.toc
33
33
 
34
- assert_match(/<ul class="section-nav">/, html)
34
+ assert_match(/<ul id="toc" class="section-nav">/, html)
35
35
  end
36
36
  end
@@ -12,7 +12,7 @@ class TestTOCOnlyFilter < Minitest::Test
12
12
  def test_injects_toc_container
13
13
  html = @parser.build_toc
14
14
 
15
- assert_includes(html, %(<ul class="section-nav">))
15
+ assert_includes(html, %(<ul id="toc" class="section-nav">))
16
16
  end
17
17
 
18
18
  def test_does_not_return_content
@@ -12,7 +12,7 @@ class TestVariousTocHtml < Minitest::Test
12
12
  def test_nested_toc
13
13
  parser = Jekyll::TableOfContents::Parser.new(TEST_HTML)
14
14
  expected = <<~HTML.chomp
15
- <ul class="section-nav">
15
+ <ul id="toc" class="section-nav">
16
16
  <li class="toc-entry toc-h1"><a href="#h1">h1</a>
17
17
  <ul>
18
18
  <li class="toc-entry toc-h3"><a href="#h3">h3</a>
@@ -31,7 +31,7 @@ class TestVariousTocHtml < Minitest::Test
31
31
  def test_nested_toc_with_min_and_max
32
32
  parser = Jekyll::TableOfContents::Parser.new(TEST_HTML, 'min_level' => 2, 'max_level' => 5)
33
33
  expected = <<~HTML.chomp
34
- <ul class="section-nav">
34
+ <ul id="toc" class="section-nav">
35
35
  <li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
36
36
  </ul>
37
37
  HTML
@@ -47,7 +47,7 @@ class TestVariousTocHtml < Minitest::Test
47
47
  <h6>h6</h6>
48
48
  HTML
49
49
  expected = <<~HTML.chomp
50
- <ul class="section-nav">
50
+ <ul id="toc" class="section-nav">
51
51
  <li class="toc-entry toc-h1"><a href="#h1">h1</a>
52
52
  <ul>
53
53
  <li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
@@ -74,7 +74,7 @@ class TestVariousTocHtml < Minitest::Test
74
74
  <h1>h1</h1>
75
75
  HTML
76
76
  expected = <<~HTML.chomp
77
- <ul class="section-nav">
77
+ <ul id="toc" class="section-nav">
78
78
  <li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
79
79
  <li class="toc-entry toc-h5"><a href="#h5">h5</a></li>
80
80
  <li class="toc-entry toc-h4"><a href="#h4">h4</a></li>
@@ -96,7 +96,7 @@ class TestVariousTocHtml < Minitest::Test
96
96
  <h5>h5</h5>
97
97
  HTML
98
98
  expected = <<~HTML.chomp
99
- <ul class="section-nav">
99
+ <ul id="toc" class="section-nav">
100
100
  <li class="toc-entry toc-h1"><a href="#h1">h1</a>
101
101
  <ul>
102
102
  <li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
@@ -129,7 +129,7 @@ class TestVariousTocHtml < Minitest::Test
129
129
  <h4 class="no_toc">no_toc h4</h4>
130
130
  HTML
131
131
  expected = <<~HTML.chomp
132
- <ul class="section-nav">
132
+ <ul id="toc" class="section-nav">
133
133
  <li class="toc-entry toc-h1"><a href="#h1">h1</a>
134
134
  <ul>
135
135
  <li class="toc-entry toc-h2"><a href="#h2">h2</a>
@@ -156,7 +156,7 @@ class TestVariousTocHtml < Minitest::Test
156
156
  <h3>う</h3>
157
157
  HTML
158
158
  expected = <<~HTML.chomp
159
- <ul class="section-nav">
159
+ <ul id="toc" class="section-nav">
160
160
  <li class="toc-entry toc-h1"><a href="#%E3%81%82">あ</a>
161
161
  <ul>
162
162
  <li class="toc-entry toc-h2"><a href="#%E3%81%84">い</a>
@@ -184,7 +184,7 @@ class TestVariousTocHtml < Minitest::Test
184
184
  <h1>&amp; &lt; &gt;</h1>
185
185
  HTML
186
186
  expected = <<~HTML.chomp
187
- <ul class="section-nav">
187
+ <ul id="toc" class="section-nav">
188
188
  <li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
189
189
  <li class="toc-entry toc-h1"><a href="#base-href">&lt;base href&gt;</a></li>
190
190
  <li class="toc-entry toc-h1"><a href="#--">&amp; &lt; &gt;</a></li>
@@ -200,7 +200,7 @@ class TestVariousTocHtml < Minitest::Test
200
200
  <h2><em>h2</em></h2>
201
201
  HTML
202
202
  expected = <<~HTML.chomp
203
- <ul class="section-nav">
203
+ <ul id="toc" class="section-nav">
204
204
  <li class="toc-entry toc-h2"><a href="#h2">h2</a></li>
205
205
  <li class="toc-entry toc-h2"><a href="#h2-1">h2</a></li>
206
206
  </ul>
@@ -219,7 +219,7 @@ class TestVariousTocHtml < Minitest::Test
219
219
  <h6>h6</h6>
220
220
  HTML
221
221
  expected = <<~HTML.chomp
222
- <ul class="section-nav">
222
+ <ul id="toc" class="section-nav">
223
223
  <li class="toc-entry toc-h1"><a href="#h1">h1</a>
224
224
  <ul>
225
225
  <li class="toc-entry toc-h3"><a href="#h3">h3</a>
@@ -254,7 +254,7 @@ class TestVariousTocHtml < Minitest::Test
254
254
  <h6>h6</h6>
255
255
  HTML
256
256
  expected = <<~HTML.chomp
257
- <ul class="section-nav">
257
+ <ul id="toc" class="section-nav">
258
258
  <li class="toc-entry toc-h1"><a href="#h1">h1</a>
259
259
  <ul>
260
260
  <li class="toc-entry toc-h3"><a href="#h3">h3</a>
@@ -291,7 +291,7 @@ class TestVariousTocHtml < Minitest::Test
291
291
  <h6>h6</h6>
292
292
  HTML
293
293
  expected = <<~HTML.chomp
294
- <ul class="section-nav">
294
+ <ul id="toc" class="section-nav">
295
295
  <li class="toc-entry toc-h1"><a href="#h1">h1</a>
296
296
  <ul>
297
297
  <li class="toc-entry toc-h3"><a href="#h3">h3</a>
@@ -321,7 +321,7 @@ class TestVariousTocHtml < Minitest::Test
321
321
  <h1 id="third">h3</h1>
322
322
  HTML
323
323
  expected = <<~HTML.chomp
324
- <ul class="section-nav">
324
+ <ul id="toc" class="section-nav">
325
325
  <li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
326
326
  <li class="toc-entry toc-h1"><a href="#second">h2</a></li>
327
327
  <li class="toc-entry toc-h1"><a href="#third">h3</a></li>
@@ -342,7 +342,7 @@ class TestVariousTocHtml < Minitest::Test
342
342
  <h1>h1</h1>
343
343
  HTML
344
344
  expected = <<~HTML.chomp
345
- <ul class="section-nav">
345
+ <ul id="toc" class="section-nav">
346
346
  <li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
347
347
  <li class="toc-entry toc-h1"><a href="#h1-1">h1</a></li>
348
348
  <li class="toc-entry toc-h1"><a href="#h1-2">h1</a></li>
@@ -355,10 +355,10 @@ class TestVariousTocHtml < Minitest::Test
355
355
  def test_custom_css_classes
356
356
  parser = Jekyll::TableOfContents::Parser.new(
357
357
  TEST_HTML,
358
- 'item_class' => 'custom-item', 'list_class' => 'custom-list', 'sublist_class' => 'custom-sublist', 'item_prefix' => 'custom-prefix-'
358
+ 'item_class' => 'custom-item', 'list_id' => 'custom-toc-id', 'list_class' => 'custom-list', 'sublist_class' => 'custom-sublist', 'item_prefix' => 'custom-prefix-'
359
359
  )
360
360
  expected = <<~HTML.chomp
361
- <ul class="custom-list">
361
+ <ul id="custom-toc-id" class="custom-list">
362
362
  <li class="custom-item custom-prefix-h1"><a href="#h1">h1</a>
363
363
  <ul class="custom-sublist">
364
364
  <li class="custom-item custom-prefix-h3"><a href="#h3">h3</a>
@@ -9,6 +9,7 @@ class TestConfiguration < Minitest::Test
9
9
  assert_equal(1..6, configuration.toc_levels)
10
10
  refute(configuration.ordered_list)
11
11
  assert_equal('no_toc_section', configuration.no_toc_section_class)
12
+ assert_equal('toc', configuration.list_id)
12
13
  assert_equal('section-nav', configuration.list_class)
13
14
  assert_equal('', configuration.sublist_class)
14
15
  assert_equal('toc-entry', configuration.item_class)
@@ -21,6 +22,7 @@ class TestConfiguration < Minitest::Test
21
22
  assert_equal(1..6, configuration.toc_levels)
22
23
  refute(configuration.ordered_list)
23
24
  assert_equal('no_toc_section', configuration.no_toc_section_class)
25
+ assert_equal('toc', configuration.list_id)
24
26
  assert_equal('section-nav', configuration.list_class)
25
27
  assert_equal('', configuration.sublist_class)
26
28
  assert_equal('toc-entry', configuration.item_class)
@@ -24,7 +24,7 @@ class TestTableOfContentsFilter < Minitest::Test
24
24
 
25
25
  def test_toc_only2
26
26
  @context = enable_toc_context
27
- assert_equal "<ul class=\"section-nav\">\n</ul>", toc_only(DUMMY_HTML)
27
+ assert_equal %(<ul id="toc" class="section-nav">\n</ul>), toc_only(DUMMY_HTML)
28
28
  end
29
29
 
30
30
  def test_inject_anchors2
@@ -34,7 +34,7 @@ class TestTableOfContentsFilter < Minitest::Test
34
34
 
35
35
  def test_toc2
36
36
  @context = enable_toc_context
37
- assert_equal "<ul class=\"section-nav\">\n</ul>#{DUMMY_HTML}", toc(DUMMY_HTML)
37
+ assert_equal %(<ul id="toc" class="section-nav">\n</ul>#{DUMMY_HTML}), toc(DUMMY_HTML)
38
38
  end
39
39
 
40
40
  private
@@ -36,7 +36,7 @@ class TestKramdownList < Minitest::Test
36
36
  assert_equal(expected, actual)
37
37
  end
38
38
 
39
- def test_kramdown_list_1
39
+ def test_kramdown_list_l1_l5
40
40
  text = <<~MARKDOWN
41
41
  * level-1
42
42
  * level-2
@@ -70,7 +70,7 @@ class TestKramdownList < Minitest::Test
70
70
  assert_equal(expected, actual)
71
71
  end
72
72
 
73
- def test_kramdown_list_2
73
+ def test_kramdown_list_l1_l3_l2_l4
74
74
  text = <<~MARKDOWN
75
75
  * level-1
76
76
  * level-3
@@ -101,7 +101,7 @@ class TestKramdownList < Minitest::Test
101
101
  assert_equal(expected, actual)
102
102
  end
103
103
 
104
- def test_kramdown_list_3
104
+ def test_kramdown_list_l4_l1
105
105
  text = <<~MARKDOWN
106
106
  * level-4
107
107
  * level-3
@@ -118,7 +118,7 @@ class TestKramdownList < Minitest::Test
118
118
  assert_equal(expected, actual)
119
119
  end
120
120
 
121
- def test_kramdown_list_4
121
+ def test_kramdown_list_l1_l4_l1
122
122
  text = <<~MARKDOWN
123
123
  * level-1
124
124
  * level-4
@@ -143,7 +143,7 @@ class TestKramdownList < Minitest::Test
143
143
  assert_equal(expected, actual)
144
144
  end
145
145
 
146
- def test_kramdown_list_5
146
+ def test_kramdown_list_l1_l3_l1
147
147
  text = <<~MARKDOWN
148
148
  * level-1
149
149
  * level-3
@@ -17,7 +17,7 @@ class TestTableOfContentsTag < Minitest::Test
17
17
  site: @stubbed_context1.new({ 'toc' => nil })
18
18
  )
19
19
  tag = Jekyll::TocTag.parse('toc_tag', '', Tokenizer.new(''), ParseContext.new)
20
- assert_equal("<ul class=\"section-nav\">\n<li class=\"toc-entry toc-h1\"><a href=\"#test\">test</a></li>\n</ul>", tag.render(context))
20
+ assert_equal(%(<ul id="toc" class="section-nav">\n<li class="toc-entry toc-h1"><a href="#test">test</a></li>\n</ul>), tag.render(context))
21
21
  end
22
22
 
23
23
  def test_toc_tag_returns_empty_string
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-toc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - toshimaru
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-10-25 00:00:00.000000000 Z
12
+ date: 2020-12-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jekyll