jekyll-toc 0.9.0.beta1 → 0.9.0.beta2
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 +5 -5
- data/.rubocop.yml +7 -0
- data/.travis.yml +0 -1
- data/Appraisals +10 -8
- data/jekyll-toc.gemspec +2 -2
- data/lib/jekyll-toc.rb +11 -7
- data/lib/table_of_contents/parser.rb +11 -11
- data/lib/version.rb +3 -1
- data/test/test_helper.rb +1 -1
- data/test/test_kramdown_list.rb +102 -102
- data/test/test_option_error.rb +4 -4
- data/test/test_various_toc_html.rb +227 -224
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ca7dd03b5aa971d3b28ea66a4085fb8ed638d868
|
4
|
+
data.tar.gz: 1e389ea8b3cc7eaf1e4439644448144acc7b3b69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50517ee387e77ab7207828b89ac578b074ddbb4f9b0bb6d48741aefd2c5833492e0c8d006587c7640b70c3f48517ff237e3f170cc7d3af220964afff8d1a0ac6
|
7
|
+
data.tar.gz: a3bd134c5850750fdab39aad27e6126d895ab0ca1358e592e39027b05e201439f968a608aa99a51208356f62916b75ff039c9291c44da26bc6df66c895858c79
|
data/.rubocop.yml
ADDED
data/.travis.yml
CHANGED
data/Appraisals
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
appraise 'jekyll-3.8' do
|
4
|
+
gem 'jekyll', '3.8'
|
3
5
|
end
|
4
6
|
|
5
|
-
appraise
|
6
|
-
gem
|
7
|
+
appraise 'jekyll-3.7' do
|
8
|
+
gem 'jekyll', '3.7'
|
7
9
|
end
|
8
10
|
|
9
|
-
appraise
|
10
|
-
gem
|
11
|
+
appraise 'jekyll-3.6' do
|
12
|
+
gem 'jekyll', '3.6'
|
11
13
|
end
|
12
14
|
|
13
|
-
appraise
|
14
|
-
gem
|
15
|
+
appraise 'jekyll-3.5' do
|
16
|
+
gem 'jekyll', '3.5'
|
15
17
|
end
|
data/jekyll-toc.gemspec
CHANGED
@@ -15,9 +15,9 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
16
16
|
spec.require_paths = ['lib']
|
17
17
|
|
18
|
-
spec.required_ruby_version = '>= 2.
|
18
|
+
spec.required_ruby_version = '>= 2.3'
|
19
19
|
|
20
|
-
spec.add_runtime_dependency 'nokogiri', '~> 1.
|
20
|
+
spec.add_runtime_dependency 'nokogiri', '~> 1.8'
|
21
21
|
|
22
22
|
spec.add_development_dependency 'appraisal'
|
23
23
|
spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
|
data/lib/jekyll-toc.rb
CHANGED
@@ -4,27 +4,31 @@ require 'nokogiri'
|
|
4
4
|
require 'table_of_contents/parser'
|
5
5
|
|
6
6
|
module Jekyll
|
7
|
-
class TocTag < Liquid::Tag
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
7
|
+
# class TocTag < Liquid::Tag
|
8
|
+
# def render(context)
|
9
|
+
# return unless context.registers[:page]['toc']
|
10
|
+
#
|
11
|
+
# content_html = context.registers[:page].content
|
12
|
+
# ::Jekyll::TableOfContents::Parser.new(content_html).build_toc
|
13
|
+
# end
|
14
|
+
# end
|
14
15
|
|
15
16
|
module TableOfContentsFilter
|
16
17
|
def toc_only(html)
|
17
18
|
return html unless toc_enabled?
|
19
|
+
|
18
20
|
::Jekyll::TableOfContents::Parser.new(html, toc_config).build_toc
|
19
21
|
end
|
20
22
|
|
21
23
|
def inject_anchors(html)
|
22
24
|
return html unless toc_enabled?
|
25
|
+
|
23
26
|
::Jekyll::TableOfContents::Parser.new(html, toc_config).inject_anchors_into_html
|
24
27
|
end
|
25
28
|
|
26
29
|
def toc(html)
|
27
30
|
return html unless toc_enabled?
|
31
|
+
|
28
32
|
::Jekyll::TableOfContents::Parser.new(html, toc_config).toc
|
29
33
|
end
|
30
34
|
|
@@ -11,10 +11,10 @@ module Jekyll
|
|
11
11
|
'no_toc_section_class' => 'no_toc_section',
|
12
12
|
'min_level' => 1,
|
13
13
|
'max_level' => 6,
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
'list_class' => 'section-nav',
|
15
|
+
'sublist_class' => '',
|
16
|
+
'item_class' => 'toc-entry',
|
17
|
+
'item_prefix' => 'toc-'
|
18
18
|
}.freeze
|
19
19
|
|
20
20
|
def initialize(html, options = {})
|
@@ -22,10 +22,10 @@ module Jekyll
|
|
22
22
|
options = generate_option_hash(options)
|
23
23
|
@toc_levels = options['min_level']..options['max_level']
|
24
24
|
@no_toc_section_class = options['no_toc_section_class']
|
25
|
-
@list_class = options[
|
26
|
-
@sublist_class = options[
|
27
|
-
@item_class = options[
|
28
|
-
@item_prefix = options[
|
25
|
+
@list_class = options['list_class']
|
26
|
+
@sublist_class = options['sublist_class']
|
27
|
+
@item_class = options['item_class']
|
28
|
+
@item_prefix = options['item_prefix']
|
29
29
|
@entries = parse_content
|
30
30
|
end
|
31
31
|
|
@@ -61,7 +61,7 @@ module Jekyll
|
|
61
61
|
.gsub(PUNCTUATION_REGEXP, '') # remove punctuation
|
62
62
|
.tr(' ', '-') # replace spaces with dash
|
63
63
|
|
64
|
-
uniq = headers[id]
|
64
|
+
uniq = headers[id].positive? ? "-#{headers[id]}" : ''
|
65
65
|
headers[id] += 1
|
66
66
|
header_content = node.children.first
|
67
67
|
next entries unless header_content
|
@@ -80,12 +80,12 @@ module Jekyll
|
|
80
80
|
# Returns the list items for entries
|
81
81
|
def build_toc_list(entries)
|
82
82
|
i = 0
|
83
|
-
toc_list = ''
|
83
|
+
toc_list = +''
|
84
84
|
min_h_num = entries.map { |e| e[:h_num] }.min
|
85
85
|
|
86
86
|
while i < entries.count
|
87
87
|
entry = entries[i]
|
88
|
-
ul_attributes = @sublist_class.empty? ?
|
88
|
+
ul_attributes = @sublist_class.empty? ? '' : %( class="#{@sublist_class}")
|
89
89
|
if entry[:h_num] == min_h_num
|
90
90
|
# If the current entry should not be indented in the list, add the entry to the list
|
91
91
|
toc_list << %(<li class="#{@item_class} #{@item_prefix}#{entry[:node_name]}"><a href="##{entry[:id]}#{entry[:uniq]}">#{entry[:text]}</a>)
|
data/lib/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
data/test/test_kramdown_list.rb
CHANGED
@@ -5,15 +5,15 @@ require 'test_helper'
|
|
5
5
|
class TestKramdownList < Minitest::Test
|
6
6
|
# NOTE: kramdown automatically injects `id` attribute
|
7
7
|
def test_kramdown_heading
|
8
|
-
text =
|
9
|
-
# h1
|
8
|
+
text = <<~MARKDOWN
|
9
|
+
# h1
|
10
10
|
|
11
|
-
## h2
|
11
|
+
## h2
|
12
12
|
MARKDOWN
|
13
|
-
expected =
|
14
|
-
<h1 id="h1">h1</h1>
|
13
|
+
expected = <<~HTML
|
14
|
+
<h1 id="h1">h1</h1>
|
15
15
|
|
16
|
-
<h2 id="h2">h2</h2>
|
16
|
+
<h2 id="h2">h2</h2>
|
17
17
|
HTML
|
18
18
|
actual = Kramdown::Document.new(text).to_html
|
19
19
|
|
@@ -21,15 +21,15 @@ class TestKramdownList < Minitest::Test
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_japanese_heading
|
24
|
-
text =
|
25
|
-
# 日本語見出し1
|
24
|
+
text = <<~MARKDOWN
|
25
|
+
# 日本語見出し1
|
26
26
|
|
27
|
-
## 日本語見出し2
|
27
|
+
## 日本語見出し2
|
28
28
|
MARKDOWN
|
29
|
-
expected =
|
30
|
-
<h1 id="section">日本語見出し1</h1>
|
29
|
+
expected = <<~HTML
|
30
|
+
<h1 id="section">日本語見出し1</h1>
|
31
31
|
|
32
|
-
<h2 id="section-1">日本語見出し2</h2>
|
32
|
+
<h2 id="section-1">日本語見出し2</h2>
|
33
33
|
HTML
|
34
34
|
actual = Kramdown::Document.new(text).to_html
|
35
35
|
|
@@ -37,33 +37,33 @@ class TestKramdownList < Minitest::Test
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def test_kramdown_list_1
|
40
|
-
text =
|
41
|
-
* level-1
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
40
|
+
text = <<~MARKDOWN
|
41
|
+
* level-1
|
42
|
+
* level-2
|
43
|
+
* level-3
|
44
|
+
* level-4
|
45
|
+
* level-5
|
46
46
|
MARKDOWN
|
47
|
-
expected =
|
48
|
-
<ul>
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
</ul>
|
47
|
+
expected = <<~HTML
|
48
|
+
<ul>
|
49
|
+
<li>level-1
|
50
|
+
<ul>
|
51
|
+
<li>level-2
|
52
|
+
<ul>
|
53
|
+
<li>level-3
|
54
|
+
<ul>
|
55
|
+
<li>level-4
|
56
|
+
<ul>
|
57
|
+
<li>level-5</li>
|
58
|
+
</ul>
|
59
|
+
</li>
|
60
|
+
</ul>
|
61
|
+
</li>
|
62
|
+
</ul>
|
63
|
+
</li>
|
64
|
+
</ul>
|
65
|
+
</li>
|
66
|
+
</ul>
|
67
67
|
HTML
|
68
68
|
actual = Kramdown::Document.new(text).to_html
|
69
69
|
|
@@ -71,30 +71,30 @@ class TestKramdownList < Minitest::Test
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def test_kramdown_list_2
|
74
|
-
text =
|
75
|
-
* level-1
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
74
|
+
text = <<~MARKDOWN
|
75
|
+
* level-1
|
76
|
+
* level-3
|
77
|
+
* level-2
|
78
|
+
* level-4
|
79
|
+
* level-5
|
80
80
|
MARKDOWN
|
81
|
-
expected =
|
82
|
-
<ul>
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
</ul>
|
81
|
+
expected = <<~HTML
|
82
|
+
<ul>
|
83
|
+
<li>level-1
|
84
|
+
<ul>
|
85
|
+
<li>level-3</li>
|
86
|
+
<li>level-2
|
87
|
+
<ul>
|
88
|
+
<li>level-4
|
89
|
+
<ul>
|
90
|
+
<li>level-5</li>
|
91
|
+
</ul>
|
92
|
+
</li>
|
93
|
+
</ul>
|
94
|
+
</li>
|
95
|
+
</ul>
|
96
|
+
</li>
|
97
|
+
</ul>
|
98
98
|
HTML
|
99
99
|
actual = Kramdown::Document.new(text).to_html
|
100
100
|
|
@@ -102,16 +102,16 @@ class TestKramdownList < Minitest::Test
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def test_kramdown_list_3
|
105
|
-
text =
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
* level-1
|
105
|
+
text = <<~MARKDOWN
|
106
|
+
* level-4
|
107
|
+
* level-3
|
108
|
+
* level-2
|
109
|
+
* level-1
|
110
110
|
MARKDOWN
|
111
|
-
expected =
|
112
|
-
<pre><code> * level-4
|
113
|
-
* level-3 * level-2 * level-1
|
114
|
-
</code></pre>
|
111
|
+
expected = <<~HTML
|
112
|
+
<pre><code> * level-4
|
113
|
+
* level-3 * level-2 * level-1
|
114
|
+
</code></pre>
|
115
115
|
HTML
|
116
116
|
actual = Kramdown::Document.new(text).to_html
|
117
117
|
|
@@ -119,24 +119,24 @@ class TestKramdownList < Minitest::Test
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def test_kramdown_list_4
|
122
|
-
text =
|
123
|
-
* level-1
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
* level-1
|
122
|
+
text = <<~MARKDOWN
|
123
|
+
* level-1
|
124
|
+
* level-4
|
125
|
+
* level-3
|
126
|
+
* level-2
|
127
|
+
* level-1
|
128
128
|
MARKDOWN
|
129
|
-
expected =
|
130
|
-
<ul>
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
</ul>
|
129
|
+
expected = <<~HTML
|
130
|
+
<ul>
|
131
|
+
<li>level-1
|
132
|
+
* level-4
|
133
|
+
<ul>
|
134
|
+
<li>level-3</li>
|
135
|
+
<li>level-2</li>
|
136
|
+
</ul>
|
137
|
+
</li>
|
138
|
+
<li>level-1</li>
|
139
|
+
</ul>
|
140
140
|
HTML
|
141
141
|
actual = Kramdown::Document.new(text).to_html
|
142
142
|
|
@@ -144,22 +144,22 @@ class TestKramdownList < Minitest::Test
|
|
144
144
|
end
|
145
145
|
|
146
146
|
def test_kramdown_list_5
|
147
|
-
text =
|
148
|
-
* level-1
|
149
|
-
|
150
|
-
|
151
|
-
* level-1
|
147
|
+
text = <<~MARKDOWN
|
148
|
+
* level-1
|
149
|
+
* level-3
|
150
|
+
* level-2
|
151
|
+
* level-1
|
152
152
|
MARKDOWN
|
153
|
-
expected =
|
154
|
-
<ul>
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
</ul>
|
153
|
+
expected = <<~HTML
|
154
|
+
<ul>
|
155
|
+
<li>level-1
|
156
|
+
<ul>
|
157
|
+
<li>level-3</li>
|
158
|
+
<li>level-2</li>
|
159
|
+
</ul>
|
160
|
+
</li>
|
161
|
+
<li>level-1</li>
|
162
|
+
</ul>
|
163
163
|
HTML
|
164
164
|
actual = Kramdown::Document.new(text).to_html
|
165
165
|
|
data/test/test_option_error.rb
CHANGED
@@ -4,10 +4,10 @@ require 'test_helper'
|
|
4
4
|
|
5
5
|
class TestOptionError < Minitest::Test
|
6
6
|
BASE_HTML = '<h1>h1</h1>'
|
7
|
-
EXPECTED_HTML =
|
8
|
-
<ul class="section-nav">
|
9
|
-
<li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
|
10
|
-
</ul>
|
7
|
+
EXPECTED_HTML = <<~HTML
|
8
|
+
<ul class="section-nav">
|
9
|
+
<li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
|
10
|
+
</ul>
|
11
11
|
HTML
|
12
12
|
|
13
13
|
def test_option_is_nil
|
@@ -4,81 +4,81 @@ require 'test_helper'
|
|
4
4
|
|
5
5
|
class TestVariousTocHtml < Minitest::Test
|
6
6
|
# ref. https://github.com/toshimaru/jekyll-toc/issues/45
|
7
|
-
ANGLE_BRACKET_HTML =
|
8
|
-
<h1>h1</h1>
|
9
|
-
<h1><base href></h1>
|
10
|
-
<h1>& < ></h1>
|
7
|
+
ANGLE_BRACKET_HTML = <<~HTML
|
8
|
+
<h1>h1</h1>
|
9
|
+
<h1><base href></h1>
|
10
|
+
<h1>& < ></h1>
|
11
11
|
HTML
|
12
12
|
|
13
|
-
NO_TOC_HTML =
|
14
|
-
<h1>h1</h1>
|
15
|
-
<h1 class="no_toc">no_toc h1</h1>
|
16
|
-
<h2>h2</h2>
|
17
|
-
<h2 class="no_toc">no_toc h2</h2>
|
18
|
-
<h3>h3</h3>
|
19
|
-
<h3 class="no_toc">no_toc h3</h3>
|
20
|
-
<h4>h4</h4>
|
21
|
-
<h4 class="no_toc">no_toc h4</h4>
|
13
|
+
NO_TOC_HTML = <<~HTML
|
14
|
+
<h1>h1</h1>
|
15
|
+
<h1 class="no_toc">no_toc h1</h1>
|
16
|
+
<h2>h2</h2>
|
17
|
+
<h2 class="no_toc">no_toc h2</h2>
|
18
|
+
<h3>h3</h3>
|
19
|
+
<h3 class="no_toc">no_toc h3</h3>
|
20
|
+
<h4>h4</h4>
|
21
|
+
<h4 class="no_toc">no_toc h4</h4>
|
22
22
|
HTML
|
23
23
|
|
24
|
-
JAPANESE_HEADINGS_HTML =
|
25
|
-
<h1>あ</h1>
|
26
|
-
<h2>い</h2>
|
27
|
-
<h3>う</h3>
|
24
|
+
JAPANESE_HEADINGS_HTML = <<~HTML
|
25
|
+
<h1>あ</h1>
|
26
|
+
<h2>い</h2>
|
27
|
+
<h3>う</h3>
|
28
28
|
HTML
|
29
29
|
|
30
|
-
TAGS_INSIDE_HEADINGS_HTML =
|
31
|
-
<h2><strong>h2</strong></h2>
|
32
|
-
<h2><em>h2</em></h2>
|
30
|
+
TAGS_INSIDE_HEADINGS_HTML = <<~HTML
|
31
|
+
<h2><strong>h2</strong></h2>
|
32
|
+
<h2><em>h2</em></h2>
|
33
33
|
HTML
|
34
34
|
|
35
|
-
TEST_HTML_1 =
|
36
|
-
<h1>h1</h1>
|
37
|
-
<h3>h3</h3>
|
38
|
-
<h6>h6</h6>
|
35
|
+
TEST_HTML_1 = <<~HTML
|
36
|
+
<h1>h1</h1>
|
37
|
+
<h3>h3</h3>
|
38
|
+
<h6>h6</h6>
|
39
39
|
HTML
|
40
40
|
|
41
|
-
TEST_HTML_2 =
|
42
|
-
<h1>h1</h1>
|
43
|
-
<h3>h3</h3>
|
44
|
-
<h2>h2</h2>
|
45
|
-
<h6>h6</h6>
|
41
|
+
TEST_HTML_2 = <<~HTML
|
42
|
+
<h1>h1</h1>
|
43
|
+
<h3>h3</h3>
|
44
|
+
<h2>h2</h2>
|
45
|
+
<h6>h6</h6>
|
46
46
|
HTML
|
47
47
|
|
48
|
-
TEST_HTML_3 =
|
49
|
-
<h6>h6</h6>
|
50
|
-
<h5>h5</h5>
|
51
|
-
<h4>h4</h4>
|
52
|
-
<h3>h3</h3>
|
53
|
-
<h2>h2</h2>
|
54
|
-
<h1>h1</h1>
|
48
|
+
TEST_HTML_3 = <<~HTML
|
49
|
+
<h6>h6</h6>
|
50
|
+
<h5>h5</h5>
|
51
|
+
<h4>h4</h4>
|
52
|
+
<h3>h3</h3>
|
53
|
+
<h2>h2</h2>
|
54
|
+
<h1>h1</h1>
|
55
55
|
HTML
|
56
56
|
|
57
|
-
TEST_HTML_4 =
|
58
|
-
<h1>h1</h1>
|
59
|
-
<h3>h3</h3>
|
60
|
-
<h2>h2</h2>
|
61
|
-
<h4>h4</h4>
|
62
|
-
<h5>h5</h5>
|
57
|
+
TEST_HTML_4 = <<~HTML
|
58
|
+
<h1>h1</h1>
|
59
|
+
<h3>h3</h3>
|
60
|
+
<h2>h2</h2>
|
61
|
+
<h4>h4</h4>
|
62
|
+
<h5>h5</h5>
|
63
63
|
HTML
|
64
64
|
|
65
65
|
def test_nested_toc
|
66
66
|
parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_1)
|
67
67
|
doc = Nokogiri::HTML(parser.toc)
|
68
|
-
expected =
|
69
|
-
<ul class="section-nav">
|
70
|
-
<li class="toc-entry toc-h1">
|
71
|
-
<a href="#h1">h1</a>
|
72
|
-
<ul>
|
73
|
-
<li class="toc-entry toc-h3">
|
74
|
-
<a href="#h3">h3</a>
|
75
|
-
<ul>
|
76
|
-
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
77
|
-
</ul>
|
78
|
-
</li>
|
79
|
-
</ul>
|
80
|
-
</li>
|
81
|
-
</ul>
|
68
|
+
expected = <<~HTML
|
69
|
+
<ul class="section-nav">
|
70
|
+
<li class="toc-entry toc-h1">
|
71
|
+
<a href="#h1">h1</a>
|
72
|
+
<ul>
|
73
|
+
<li class="toc-entry toc-h3">
|
74
|
+
<a href="#h3">h3</a>
|
75
|
+
<ul>
|
76
|
+
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
77
|
+
</ul>
|
78
|
+
</li>
|
79
|
+
</ul>
|
80
|
+
</li>
|
81
|
+
</ul>
|
82
82
|
HTML
|
83
83
|
actual = doc.css('ul.section-nav').to_s
|
84
84
|
|
@@ -88,10 +88,10 @@ class TestVariousTocHtml < Minitest::Test
|
|
88
88
|
def test_nested_toc_with_min_and_max
|
89
89
|
parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_1, { 'min_level' => 2, 'max_level' => 5 })
|
90
90
|
doc = Nokogiri::HTML(parser.toc)
|
91
|
-
expected =
|
92
|
-
<ul class="section-nav">
|
93
|
-
<li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
|
94
|
-
</ul>
|
91
|
+
expected = <<~HTML
|
92
|
+
<ul class="section-nav">
|
93
|
+
<li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
|
94
|
+
</ul>
|
95
95
|
HTML
|
96
96
|
actual = doc.css('ul.section-nav').to_s
|
97
97
|
|
@@ -101,21 +101,21 @@ class TestVariousTocHtml < Minitest::Test
|
|
101
101
|
def test_complex_nested_toc
|
102
102
|
parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_2)
|
103
103
|
doc = Nokogiri::HTML(parser.toc)
|
104
|
-
expected =
|
105
|
-
<ul class="section-nav">
|
106
|
-
<li class="toc-entry toc-h1">
|
107
|
-
<a href="#h1">h1</a>
|
108
|
-
<ul>
|
109
|
-
<li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
|
110
|
-
<li class="toc-entry toc-h2">
|
111
|
-
<a href="#h2">h2</a>
|
112
|
-
<ul>
|
113
|
-
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
114
|
-
</ul>
|
115
|
-
</li>
|
116
|
-
</ul>
|
117
|
-
</li>
|
118
|
-
</ul>
|
104
|
+
expected = <<~HTML
|
105
|
+
<ul class="section-nav">
|
106
|
+
<li class="toc-entry toc-h1">
|
107
|
+
<a href="#h1">h1</a>
|
108
|
+
<ul>
|
109
|
+
<li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
|
110
|
+
<li class="toc-entry toc-h2">
|
111
|
+
<a href="#h2">h2</a>
|
112
|
+
<ul>
|
113
|
+
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
114
|
+
</ul>
|
115
|
+
</li>
|
116
|
+
</ul>
|
117
|
+
</li>
|
118
|
+
</ul>
|
119
119
|
HTML
|
120
120
|
actual = doc.css('ul.section-nav').to_s
|
121
121
|
|
@@ -125,15 +125,15 @@ class TestVariousTocHtml < Minitest::Test
|
|
125
125
|
def test_decremental_headings1
|
126
126
|
parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_3)
|
127
127
|
doc = Nokogiri::HTML(parser.toc)
|
128
|
-
expected =
|
129
|
-
<ul class="section-nav">
|
130
|
-
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
131
|
-
<li class="toc-entry toc-h5"><a href="#h5">h5</a></li>
|
132
|
-
<li class="toc-entry toc-h4"><a href="#h4">h4</a></li>
|
133
|
-
<li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
|
134
|
-
<li class="toc-entry toc-h2"><a href="#h2">h2</a></li>
|
135
|
-
<li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
|
136
|
-
</ul>
|
128
|
+
expected = <<~HTML
|
129
|
+
<ul class="section-nav">
|
130
|
+
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
131
|
+
<li class="toc-entry toc-h5"><a href="#h5">h5</a></li>
|
132
|
+
<li class="toc-entry toc-h4"><a href="#h4">h4</a></li>
|
133
|
+
<li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
|
134
|
+
<li class="toc-entry toc-h2"><a href="#h2">h2</a></li>
|
135
|
+
<li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
|
136
|
+
</ul>
|
137
137
|
HTML
|
138
138
|
actual = doc.css('ul.section-nav').to_s
|
139
139
|
|
@@ -143,26 +143,26 @@ class TestVariousTocHtml < Minitest::Test
|
|
143
143
|
def test_decremental_headings2
|
144
144
|
parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_4)
|
145
145
|
doc = Nokogiri::HTML(parser.toc)
|
146
|
-
expected =
|
147
|
-
<ul class="section-nav">
|
148
|
-
<li class="toc-entry toc-h1">
|
149
|
-
<a href="#h1">h1</a>
|
150
|
-
<ul>
|
151
|
-
<li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
|
152
|
-
<li class="toc-entry toc-h2">
|
153
|
-
<a href="#h2">h2</a>
|
154
|
-
<ul>
|
155
|
-
<li class="toc-entry toc-h4">
|
156
|
-
<a href="#h4">h4</a>
|
157
|
-
<ul>
|
158
|
-
<li class="toc-entry toc-h5"><a href="#h5">h5</a></li>
|
159
|
-
</ul>
|
160
|
-
</li>
|
161
|
-
</ul>
|
162
|
-
</li>
|
163
|
-
</ul>
|
164
|
-
</li>
|
165
|
-
</ul>
|
146
|
+
expected = <<~HTML
|
147
|
+
<ul class="section-nav">
|
148
|
+
<li class="toc-entry toc-h1">
|
149
|
+
<a href="#h1">h1</a>
|
150
|
+
<ul>
|
151
|
+
<li class="toc-entry toc-h3"><a href="#h3">h3</a></li>
|
152
|
+
<li class="toc-entry toc-h2">
|
153
|
+
<a href="#h2">h2</a>
|
154
|
+
<ul>
|
155
|
+
<li class="toc-entry toc-h4">
|
156
|
+
<a href="#h4">h4</a>
|
157
|
+
<ul>
|
158
|
+
<li class="toc-entry toc-h5"><a href="#h5">h5</a></li>
|
159
|
+
</ul>
|
160
|
+
</li>
|
161
|
+
</ul>
|
162
|
+
</li>
|
163
|
+
</ul>
|
164
|
+
</li>
|
165
|
+
</ul>
|
166
166
|
HTML
|
167
167
|
|
168
168
|
assert_equal(expected, doc.css('ul.section-nav').to_s)
|
@@ -171,25 +171,25 @@ class TestVariousTocHtml < Minitest::Test
|
|
171
171
|
def test_no_toc
|
172
172
|
parser = Jekyll::TableOfContents::Parser.new(NO_TOC_HTML)
|
173
173
|
doc = Nokogiri::HTML(parser.toc)
|
174
|
-
expected =
|
175
|
-
<ul class="section-nav">
|
176
|
-
<li class="toc-entry toc-h1">
|
177
|
-
<a href="#h1">h1</a>
|
178
|
-
<ul>
|
179
|
-
<li class="toc-entry toc-h2">
|
180
|
-
<a href="#h2">h2</a>
|
181
|
-
<ul>
|
182
|
-
<li class="toc-entry toc-h3">
|
183
|
-
<a href="#h3">h3</a>
|
184
|
-
<ul>
|
185
|
-
<li class="toc-entry toc-h4"><a href="#h4">h4</a></li>
|
186
|
-
</ul>
|
187
|
-
</li>
|
188
|
-
</ul>
|
189
|
-
</li>
|
190
|
-
</ul>
|
191
|
-
</li>
|
192
|
-
</ul>
|
174
|
+
expected = <<~HTML
|
175
|
+
<ul class="section-nav">
|
176
|
+
<li class="toc-entry toc-h1">
|
177
|
+
<a href="#h1">h1</a>
|
178
|
+
<ul>
|
179
|
+
<li class="toc-entry toc-h2">
|
180
|
+
<a href="#h2">h2</a>
|
181
|
+
<ul>
|
182
|
+
<li class="toc-entry toc-h3">
|
183
|
+
<a href="#h3">h3</a>
|
184
|
+
<ul>
|
185
|
+
<li class="toc-entry toc-h4"><a href="#h4">h4</a></li>
|
186
|
+
</ul>
|
187
|
+
</li>
|
188
|
+
</ul>
|
189
|
+
</li>
|
190
|
+
</ul>
|
191
|
+
</li>
|
192
|
+
</ul>
|
193
193
|
HTML
|
194
194
|
actual = doc.css('ul.section-nav').to_s
|
195
195
|
|
@@ -199,20 +199,20 @@ class TestVariousTocHtml < Minitest::Test
|
|
199
199
|
def test_japanese_toc
|
200
200
|
parser = Jekyll::TableOfContents::Parser.new(JAPANESE_HEADINGS_HTML)
|
201
201
|
doc = Nokogiri::HTML(parser.toc)
|
202
|
-
expected =
|
203
|
-
<ul class="section-nav">
|
204
|
-
<li class="toc-entry toc-h1">
|
205
|
-
<a href="#%E3%81%82">あ</a>
|
206
|
-
<ul>
|
207
|
-
<li class="toc-entry toc-h2">
|
208
|
-
<a href="#%E3%81%84">い</a>
|
209
|
-
<ul>
|
210
|
-
<li class="toc-entry toc-h3"><a href="#%E3%81%86">う</a></li>
|
211
|
-
</ul>
|
212
|
-
</li>
|
213
|
-
</ul>
|
214
|
-
</li>
|
215
|
-
</ul>
|
202
|
+
expected = <<~HTML
|
203
|
+
<ul class="section-nav">
|
204
|
+
<li class="toc-entry toc-h1">
|
205
|
+
<a href="#%E3%81%82">あ</a>
|
206
|
+
<ul>
|
207
|
+
<li class="toc-entry toc-h2">
|
208
|
+
<a href="#%E3%81%84">い</a>
|
209
|
+
<ul>
|
210
|
+
<li class="toc-entry toc-h3"><a href="#%E3%81%86">う</a></li>
|
211
|
+
</ul>
|
212
|
+
</li>
|
213
|
+
</ul>
|
214
|
+
</li>
|
215
|
+
</ul>
|
216
216
|
HTML
|
217
217
|
actual = doc.css('ul.section-nav').to_s
|
218
218
|
|
@@ -222,12 +222,12 @@ class TestVariousTocHtml < Minitest::Test
|
|
222
222
|
def test_angle_bracket
|
223
223
|
parser = Jekyll::TableOfContents::Parser.new(ANGLE_BRACKET_HTML)
|
224
224
|
doc = Nokogiri::HTML(parser.toc)
|
225
|
-
expected =
|
226
|
-
<ul class="section-nav">
|
227
|
-
<li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
|
228
|
-
<li class="toc-entry toc-h1"><a href="#base-href"><base href></a></li>
|
229
|
-
<li class="toc-entry toc-h1"><a href="#--">& < ></a></li>
|
230
|
-
</ul>
|
225
|
+
expected = <<~HTML
|
226
|
+
<ul class="section-nav">
|
227
|
+
<li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
|
228
|
+
<li class="toc-entry toc-h1"><a href="#base-href"><base href></a></li>
|
229
|
+
<li class="toc-entry toc-h1"><a href="#--">& < ></a></li>
|
230
|
+
</ul>
|
231
231
|
HTML
|
232
232
|
actual = doc.css('ul.section-nav').to_s
|
233
233
|
|
@@ -237,43 +237,43 @@ class TestVariousTocHtml < Minitest::Test
|
|
237
237
|
def test_tags_inside_heading
|
238
238
|
parser = Jekyll::TableOfContents::Parser.new(TAGS_INSIDE_HEADINGS_HTML)
|
239
239
|
doc = Nokogiri::HTML(parser.toc)
|
240
|
-
expected =
|
241
|
-
<ul class="section-nav">
|
242
|
-
<li class="toc-entry toc-h2"><a href="#h2">h2</a></li>
|
243
|
-
<li class="toc-entry toc-h2"><a href="#h2-1">h2</a></li>
|
244
|
-
</ul>
|
240
|
+
expected = <<~HTML
|
241
|
+
<ul class="section-nav">
|
242
|
+
<li class="toc-entry toc-h2"><a href="#h2">h2</a></li>
|
243
|
+
<li class="toc-entry toc-h2"><a href="#h2-1">h2</a></li>
|
244
|
+
</ul>
|
245
245
|
HTML
|
246
246
|
actual = doc.css('ul.section-nav').to_s
|
247
247
|
|
248
248
|
assert_equal(expected, actual)
|
249
249
|
end
|
250
250
|
|
251
|
-
TEST_HTML_IGNORE =
|
252
|
-
<h1>h1</h1>
|
253
|
-
<div class="no_toc_section">
|
254
|
-
<h2>h2</h2>
|
255
|
-
</div>
|
256
|
-
<h3>h3</h3>
|
257
|
-
<h6>h6</h6>
|
251
|
+
TEST_HTML_IGNORE = <<~HTML
|
252
|
+
<h1>h1</h1>
|
253
|
+
<div class="no_toc_section">
|
254
|
+
<h2>h2</h2>
|
255
|
+
</div>
|
256
|
+
<h3>h3</h3>
|
257
|
+
<h6>h6</h6>
|
258
258
|
HTML
|
259
259
|
|
260
260
|
def test_nested_toc_with_no_toc_section_class
|
261
261
|
parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_IGNORE)
|
262
262
|
doc = Nokogiri::HTML(parser.toc)
|
263
|
-
expected =
|
264
|
-
<ul class="section-nav">
|
265
|
-
<li class="toc-entry toc-h1">
|
266
|
-
<a href="#h1">h1</a>
|
267
|
-
<ul>
|
268
|
-
<li class="toc-entry toc-h3">
|
269
|
-
<a href="#h3">h3</a>
|
270
|
-
<ul>
|
271
|
-
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
272
|
-
</ul>
|
273
|
-
</li>
|
274
|
-
</ul>
|
275
|
-
</li>
|
276
|
-
</ul>
|
263
|
+
expected = <<~HTML
|
264
|
+
<ul class="section-nav">
|
265
|
+
<li class="toc-entry toc-h1">
|
266
|
+
<a href="#h1">h1</a>
|
267
|
+
<ul>
|
268
|
+
<li class="toc-entry toc-h3">
|
269
|
+
<a href="#h3">h3</a>
|
270
|
+
<ul>
|
271
|
+
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
272
|
+
</ul>
|
273
|
+
</li>
|
274
|
+
</ul>
|
275
|
+
</li>
|
276
|
+
</ul>
|
277
277
|
HTML
|
278
278
|
actual = doc.css('ul.section-nav').to_s
|
279
279
|
assert_equal(expected, actual)
|
@@ -285,36 +285,36 @@ class TestVariousTocHtml < Minitest::Test
|
|
285
285
|
assert_includes(html, '<h2>h2</h2>')
|
286
286
|
end
|
287
287
|
|
288
|
-
TEST_HTML_IGNORE_2 =
|
289
|
-
<h1>h1</h1>
|
290
|
-
<div class="exclude">
|
291
|
-
<h2>h2</h2>
|
292
|
-
</div>
|
293
|
-
<h3>h3</h3>
|
294
|
-
<div class="exclude">
|
295
|
-
<h4>h4</h4>
|
296
|
-
<h5>h5</h5>
|
297
|
-
</div>
|
298
|
-
<h6>h6</h6>
|
288
|
+
TEST_HTML_IGNORE_2 = <<~HTML
|
289
|
+
<h1>h1</h1>
|
290
|
+
<div class="exclude">
|
291
|
+
<h2>h2</h2>
|
292
|
+
</div>
|
293
|
+
<h3>h3</h3>
|
294
|
+
<div class="exclude">
|
295
|
+
<h4>h4</h4>
|
296
|
+
<h5>h5</h5>
|
297
|
+
</div>
|
298
|
+
<h6>h6</h6>
|
299
299
|
HTML
|
300
300
|
|
301
301
|
def test_nested_toc_with_no_toc_section_class_option
|
302
302
|
parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_IGNORE_2, { 'no_toc_section_class' => 'exclude' })
|
303
303
|
doc = Nokogiri::HTML(parser.toc)
|
304
|
-
expected =
|
305
|
-
<ul class="section-nav">
|
306
|
-
<li class="toc-entry toc-h1">
|
307
|
-
<a href="#h1">h1</a>
|
308
|
-
<ul>
|
309
|
-
<li class="toc-entry toc-h3">
|
310
|
-
<a href="#h3">h3</a>
|
311
|
-
<ul>
|
312
|
-
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
313
|
-
</ul>
|
314
|
-
</li>
|
315
|
-
</ul>
|
316
|
-
</li>
|
317
|
-
</ul>
|
304
|
+
expected = <<~HTML
|
305
|
+
<ul class="section-nav">
|
306
|
+
<li class="toc-entry toc-h1">
|
307
|
+
<a href="#h1">h1</a>
|
308
|
+
<ul>
|
309
|
+
<li class="toc-entry toc-h3">
|
310
|
+
<a href="#h3">h3</a>
|
311
|
+
<ul>
|
312
|
+
<li class="toc-entry toc-h6"><a href="#h6">h6</a></li>
|
313
|
+
</ul>
|
314
|
+
</li>
|
315
|
+
</ul>
|
316
|
+
</li>
|
317
|
+
</ul>
|
318
318
|
HTML
|
319
319
|
actual = doc.css('ul.section-nav').to_s
|
320
320
|
assert_equal(expected, actual)
|
@@ -328,21 +328,21 @@ class TestVariousTocHtml < Minitest::Test
|
|
328
328
|
assert_includes(html, '<h5>h5</h5>')
|
329
329
|
end
|
330
330
|
|
331
|
-
TEST_EXPLICIT_ID =
|
332
|
-
<h1>h1</h1>
|
333
|
-
<h1 id="second">h2</h1>
|
334
|
-
<h1 id="third">h3</h1>
|
331
|
+
TEST_EXPLICIT_ID = <<~HTML
|
332
|
+
<h1>h1</h1>
|
333
|
+
<h1 id="second">h2</h1>
|
334
|
+
<h1 id="third">h3</h1>
|
335
335
|
HTML
|
336
336
|
|
337
337
|
def test_toc_with_explicit_id
|
338
338
|
parser = Jekyll::TableOfContents::Parser.new(TEST_EXPLICIT_ID)
|
339
339
|
doc = Nokogiri::HTML(parser.toc)
|
340
|
-
expected =
|
341
|
-
<ul class="section-nav">
|
342
|
-
<li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
|
343
|
-
<li class="toc-entry toc-h1"><a href="#second">h2</a></li>
|
344
|
-
<li class="toc-entry toc-h1"><a href="#third">h3</a></li>
|
345
|
-
</ul>
|
340
|
+
expected = <<~HTML
|
341
|
+
<ul class="section-nav">
|
342
|
+
<li class="toc-entry toc-h1"><a href="#h1">h1</a></li>
|
343
|
+
<li class="toc-entry toc-h1"><a href="#second">h2</a></li>
|
344
|
+
<li class="toc-entry toc-h1"><a href="#third">h3</a></li>
|
345
|
+
</ul>
|
346
346
|
HTML
|
347
347
|
actual = doc.css('ul.section-nav').to_s
|
348
348
|
assert_equal(expected, actual)
|
@@ -352,26 +352,29 @@ class TestVariousTocHtml < Minitest::Test
|
|
352
352
|
assert_includes(html, %(<a id="second" class="anchor" href="#second" aria-hidden="true">))
|
353
353
|
assert_includes(html, %(<a id="third" class="anchor" href="#third" aria-hidden="true">))
|
354
354
|
end
|
355
|
-
end
|
356
355
|
|
357
|
-
def test_custom_css_classes
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
<ul class="custom-
|
365
|
-
<li class="custom-item custom-prefix-
|
366
|
-
<a href="#
|
367
|
-
<ul class="custom-sublist">
|
368
|
-
<li class="custom-item custom-prefix-
|
369
|
-
</
|
370
|
-
|
371
|
-
</
|
372
|
-
</
|
373
|
-
</
|
374
|
-
|
356
|
+
def test_custom_css_classes
|
357
|
+
parser = Jekyll::TableOfContents::Parser.new(
|
358
|
+
TEST_HTML_1,
|
359
|
+
{ 'item_class' => 'custom-item', 'list_class' => 'custom-list', 'sublist_class' => 'custom-sublist', 'item_prefix' => 'custom-prefix-' }
|
360
|
+
)
|
361
|
+
doc = Nokogiri::HTML(parser.toc)
|
362
|
+
expected = <<~HTML
|
363
|
+
<ul class="custom-list">
|
364
|
+
<li class="custom-item custom-prefix-h1">
|
365
|
+
<a href="#h1">h1</a>
|
366
|
+
<ul class="custom-sublist">
|
367
|
+
<li class="custom-item custom-prefix-h3">
|
368
|
+
<a href="#h3">h3</a>
|
369
|
+
<ul class="custom-sublist">
|
370
|
+
<li class="custom-item custom-prefix-h6"><a href="#h6">h6</a></li>
|
371
|
+
</ul>
|
372
|
+
</li>
|
373
|
+
</ul>
|
374
|
+
</li>
|
375
|
+
</ul>
|
376
|
+
HTML
|
375
377
|
|
376
|
-
|
378
|
+
assert_equal(expected, doc.css('ul.custom-list').to_s)
|
379
|
+
end
|
377
380
|
end
|
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.9.0.
|
4
|
+
version: 0.9.0.beta2
|
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: 2018-10-
|
12
|
+
date: 2018-10-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '1.
|
20
|
+
version: '1.8'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '1.
|
27
|
+
version: '1.8'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: appraisal
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -116,6 +116,7 @@ extensions: []
|
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
118
|
- ".gitignore"
|
119
|
+
- ".rubocop.yml"
|
119
120
|
- ".travis.yml"
|
120
121
|
- Appraisals
|
121
122
|
- CHANGELOG.md
|
@@ -150,7 +151,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
150
151
|
requirements:
|
151
152
|
- - ">="
|
152
153
|
- !ruby/object:Gem::Version
|
153
|
-
version: 2.
|
154
|
+
version: '2.3'
|
154
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
156
|
requirements:
|
156
157
|
- - ">"
|
@@ -158,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
159
|
version: 1.3.1
|
159
160
|
requirements: []
|
160
161
|
rubyforge_project:
|
161
|
-
rubygems_version: 2.
|
162
|
+
rubygems_version: 2.5.2.3
|
162
163
|
signing_key:
|
163
164
|
specification_version: 4
|
164
165
|
summary: Jekyll Table of Contents plugin
|