jekyll-toc-plus 0.20.0 → 0.21.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/.rubocop.yml +2 -18
- data/CHANGELOG.md +29 -1
- data/CLAUDE.md +51 -0
- data/Gemfile +0 -2
- data/README.md +11 -2
- data/jekyll-toc-plus.gemspec +33 -0
- data/lib/jekyll-toc-plus.rb +27 -15
- data/lib/table_of_contents/configuration.rb +4 -3
- data/lib/table_of_contents/helper.rb +1 -1
- data/lib/table_of_contents/parser.rb +13 -5
- data/lib/table_of_contents/version.rb +1 -1
- metadata +6 -10
- data/Appraisals +0 -9
- data/gemfiles/jekyll_3.9.gemfile +0 -17
- data/gemfiles/jekyll_4.0.gemfile +0 -17
- data/gemfiles/jekyll_4.1.gemfile +0 -17
- data/gemfiles/jekyll_4.2.gemfile +0 -17
- data/gemfiles/jekyll_4.3.gemfile +0 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9d7d885bed409b2179feb9778b06baf21181d9beaa1afbcb8579e8b642bf2fb6
|
|
4
|
+
data.tar.gz: ae7409264bb42c87b72de4a527a6e0e8a77c5f8cc638a5bdf17093d4a39fb2c3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 506c7cd216eeb6af1aec9b17193dbb5d300853f64ce539e816e84fc81e4b97423807a8a231ff154d94f08f8b6025d8b23f2df73684dd7ccbeebc252604c8da93
|
|
7
|
+
data.tar.gz: 398a1dbdd54565f0b5f8152cbaaa4247bee486404ee1cb85606a222c36fb01ff1375dd81aa45c61b59889ac033cfd3a9e0744b1f5d73c1bcca77e4f65e57107b
|
data/.rubocop.yml
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
AllCops:
|
|
2
|
-
TargetRubyVersion: 2
|
|
2
|
+
TargetRubyVersion: 3.2
|
|
3
3
|
NewCops: enable
|
|
4
4
|
Exclude:
|
|
5
5
|
- "*.gemspec"
|
|
6
|
-
- "gemfiles/*"
|
|
7
6
|
- "vendor/**/*"
|
|
8
7
|
- Rakefile
|
|
9
8
|
- Gemfile
|
|
10
|
-
|
|
9
|
+
plugins:
|
|
11
10
|
- rubocop-minitest
|
|
12
11
|
- rubocop-rake
|
|
13
12
|
- rubocop-performance
|
|
@@ -24,21 +23,6 @@ Naming/FileName:
|
|
|
24
23
|
|
|
25
24
|
Layout/LineLength:
|
|
26
25
|
Enabled: false
|
|
27
|
-
Layout/SpaceAroundMethodCallOperator:
|
|
28
|
-
Enabled: true
|
|
29
|
-
|
|
30
|
-
Lint/RaiseException:
|
|
31
|
-
Enabled: true
|
|
32
|
-
Lint/StructNewOverride:
|
|
33
|
-
Enabled: true
|
|
34
26
|
|
|
35
27
|
Style/WordArray:
|
|
36
28
|
Enabled: false
|
|
37
|
-
Style/HashEachMethods:
|
|
38
|
-
Enabled: true
|
|
39
|
-
Style/HashTransformKeys:
|
|
40
|
-
Enabled: true
|
|
41
|
-
Style/HashTransformValues:
|
|
42
|
-
Enabled: true
|
|
43
|
-
Style/ExponentialNotation:
|
|
44
|
-
Enabled: true
|
data/CHANGELOG.md
CHANGED
|
@@ -1 +1,29 @@
|
|
|
1
|
-
Changelog
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Versions through 0.20.0 are documented under
|
|
4
|
+
[GitHub Releases](https://github.com/jannewaren/jekyll-toc-plus/releases).
|
|
5
|
+
|
|
6
|
+
## [Unreleased]
|
|
7
|
+
|
|
8
|
+
## [0.21.0] - 2026-06-20
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- `no_toc_class` config option to customize the class that excludes a heading
|
|
13
|
+
from the TOC (default: `no_toc`), mirroring the configurable `no_toc_section_class`.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- The `{% toc %}` tag now requires `toc: true` strictly, matching the `toc` /
|
|
18
|
+
`toc_only` / `inject_anchors` filters. Previously the tag accepted any truthy
|
|
19
|
+
front-matter value. If you relied on a non-`true` truthy value (e.g. `toc: "yes"`)
|
|
20
|
+
to render the tag, set it to `toc: true`.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Escape heading ids when interpolating them into `href` attributes, preventing
|
|
25
|
+
HTML/attribute injection from an author-supplied `id` containing characters
|
|
26
|
+
such as `"`.
|
|
27
|
+
- De-duplicate headings that share an explicit `id`: a second `id="foo"` now
|
|
28
|
+
links to `#foo-1` instead of emitting a duplicate `#foo` fragment. Previously
|
|
29
|
+
only generated ids were de-duplicated.
|
data/CLAUDE.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## What this is
|
|
6
|
+
|
|
7
|
+
`jekyll-toc-plus` is a Ruby gem / Jekyll plugin that generates a Table of Contents from rendered HTML content. It is a fork of [`toshimaru/jekyll-toc`](https://github.com/toshimaru/jekyll-toc), adding the options `div_list`, `flat_list`, `toc_only_direct_text`, and per-page `toc_config` front-matter overrides. It aims to stay a drop-in replacement for upstream.
|
|
8
|
+
|
|
9
|
+
## Commands
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
bundle install # install dev dependencies
|
|
13
|
+
bundle exec rake # run the full test suite (default task)
|
|
14
|
+
bundle exec rake test # same, explicit
|
|
15
|
+
bundle exec rubocop # lint
|
|
16
|
+
bundle exec rubocop -A # lint with autocorrect
|
|
17
|
+
|
|
18
|
+
# Run a single test file (note: tests `require 'test_helper'`, so -Itest is required)
|
|
19
|
+
bundle exec ruby -Ilib -Itest test/parser/test_toc_filter.rb
|
|
20
|
+
|
|
21
|
+
# Run a single test by name
|
|
22
|
+
bundle exec ruby -Ilib -Itest test/parser/test_toc_filter.rb -n test_nested_toc
|
|
23
|
+
|
|
24
|
+
bundle exec rake build # build the .gem
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
CI (`.github/workflows`) runs the test suite across Ruby `3.2`, `3.3`, `3.4`, and `4.0` (on Jekyll 4.4), plus a separate RuboCop job. RuboCop targets Ruby 3.2 syntax; keep new code compatible.
|
|
28
|
+
|
|
29
|
+
## Architecture
|
|
30
|
+
|
|
31
|
+
The plugin is two thin Liquid integrations over one parser.
|
|
32
|
+
|
|
33
|
+
**Entry point — `lib/jekyll-toc-plus.rb`** (the file `require`d by Jekyll). Registers:
|
|
34
|
+
- `Jekyll::TableOfContentsFilter`, a Liquid filter module exposing three filters: `toc` (TOC + anchored content), `toc_only` (just the TOC list; a supported filter, kept because — unlike the `{% toc %}` tag — it works on any page), and `inject_anchors` (just the anchored content). Each is gated by `toc_enabled?`, which requires the page's front matter to have `toc: true`.
|
|
35
|
+
- `Jekyll::TocTag`, the `{% toc %}` Liquid tag. Equivalent to `toc_only` but reads `content` directly from the page register, so it only works for Posts/Collections (documented limitation).
|
|
36
|
+
|
|
37
|
+
**Config resolution** is shared via `TableOfContents::ConfigResolver#merge_toc_config`, mixed into both the filter (called through `toc_config`) and the tag: site-wide `_config.yml` `toc:` settings are merged with per-page `toc_config:` front matter, where **page values override site values**. This is the mechanism behind per-page `min_level`/`max_level`/`toc_only_direct_text` overrides.
|
|
38
|
+
|
|
39
|
+
**`TableOfContents::Parser`** (`lib/table_of_contents/parser.rb`) does all real work:
|
|
40
|
+
- Parses the HTML once with Nokogiri (`DocumentFragment`) in `initialize`, then `parse_content` walks the configured heading levels, skipping headings with the `no_toc` class or inside any `no_toc_section_class` container. Each entry records its id (existing `id` attribute, else a slug from the heading text), escaped text, node name, and heading number.
|
|
41
|
+
- `build_toc` emits the list; it dispatches to `build_flat_toc_list` (when `flat_list`) or the recursive `build_nested_toc_list`, which builds nested sublists by comparing each entry's heading number to the minimum level in the slice.
|
|
42
|
+
- `inject_anchors_into_html` mutates the parsed doc, inserting `<a class="anchor">` before each heading, and returns the modified HTML.
|
|
43
|
+
- `list_tag` / `list_parent_tag` select the output element: `div` when `div_list`, otherwise `ul`/`ol` (per `ordered_list`) + `li`.
|
|
44
|
+
|
|
45
|
+
**`Configuration`** (`configuration.rb`) merges user options over the single source of truth `DEFAULT_CONFIG` and exposes them as readers. When adding a new option, add it to `DEFAULT_CONFIG`, expose an `attr_reader`, assign it in `initialize`, and document it in `README.md`'s Default Configuration block.
|
|
46
|
+
|
|
47
|
+
**`Helper`** (`helper.rb`) is mixed into `Parser`: `generate_toc_id` slugifies heading text (downcase, strip punctuation via a Unicode-aware regexp, dasherize, URL-encode) and `extract_text` implements `toc_only_direct_text` by pulling only direct text-node children of a heading.
|
|
48
|
+
|
|
49
|
+
## Tests
|
|
50
|
+
|
|
51
|
+
Minitest, run via Rake. `test/test_helper.rb` boots SimpleCov + Minitest reporters and defines `SIMPLE_HTML` (h1–h6) plus the `TestHelpers#read_html_and_create_parser` helper. Parser-level behavior lives in `test/parser/`; the Liquid tag/front-matter override behavior is in `test/test_page_config_override.rb` and `test/test_toc_tag.rb` (which stub the Liquid context with `Struct`). New options should get a focused file under `test/parser/`.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -130,7 +130,7 @@ location with the `toc_only` filter.
|
|
|
130
130
|
|
|
131
131
|
## Generated HTML
|
|
132
132
|
|
|
133
|
-
jekyll-toc generates an unordered list by default. The HTML output is as follows.
|
|
133
|
+
jekyll-toc-plus generates an unordered list by default. The HTML output is as follows.
|
|
134
134
|
|
|
135
135
|
```html
|
|
136
136
|
<ul id="toc" class="section-nav">
|
|
@@ -158,7 +158,7 @@ jekyll-toc generates an unordered list by default. The HTML output is as follows
|
|
|
158
158
|
|
|
159
159
|
## Customization
|
|
160
160
|
|
|
161
|
-
jekyll-toc is customizable on `_config.yml`.
|
|
161
|
+
jekyll-toc-plus is customizable on `_config.yml`.
|
|
162
162
|
|
|
163
163
|
### Default Configuration
|
|
164
164
|
|
|
@@ -168,6 +168,7 @@ toc:
|
|
|
168
168
|
min_level: 1
|
|
169
169
|
max_level: 6
|
|
170
170
|
ordered_list: false
|
|
171
|
+
no_toc_class: no_toc
|
|
171
172
|
no_toc_section_class: no_toc_section
|
|
172
173
|
list_id: toc
|
|
173
174
|
list_class: section-nav
|
|
@@ -230,6 +231,14 @@ The heading is ignored in the toc by adding `no_toc` class.
|
|
|
230
231
|
<h2>h2</h2>
|
|
231
232
|
```
|
|
232
233
|
|
|
234
|
+
The class can be configured on `_config.yml`:
|
|
235
|
+
|
|
236
|
+
```yml
|
|
237
|
+
# _config.yml
|
|
238
|
+
toc:
|
|
239
|
+
no_toc_class: skip-toc # default: no_toc
|
|
240
|
+
```
|
|
241
|
+
|
|
233
242
|
### Skip TOC Sectionally
|
|
234
243
|
|
|
235
244
|
The headings are ignored inside the element which has `no_toc_section` class.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/table_of_contents/version'
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = 'jekyll-toc-plus'
|
|
7
|
+
spec.version = Jekyll::TableOfContents::VERSION
|
|
8
|
+
spec.summary = 'Jekyll Table of Contents plugin'
|
|
9
|
+
spec.description = 'Jekyll (Ruby static website generator) plugin which generates a Table of Contents for the page.'
|
|
10
|
+
spec.authors = ['toshimaru', 'torbjoernk', 'Janne Warén']
|
|
11
|
+
spec.email = 'janne.waren@gmail.com'
|
|
12
|
+
spec.homepage = 'https://github.com/jannewaren/jekyll-toc-plus'
|
|
13
|
+
spec.license = 'MIT'
|
|
14
|
+
spec.require_paths = ['lib']
|
|
15
|
+
|
|
16
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
|
17
|
+
spec.metadata['source_code_uri'] = 'https://github.com/jannewaren/jekyll-toc-plus'
|
|
18
|
+
spec.metadata['changelog_uri'] = 'https://github.com/jannewaren/jekyll-toc-plus/releases'
|
|
19
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
20
|
+
|
|
21
|
+
# Specify which files should be added to the gem when it is released.
|
|
22
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
23
|
+
spec.files = Dir.chdir(__dir__) do
|
|
24
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
|
25
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|circleci)|appveyor)})
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
spec.required_ruby_version = '>= 3.2'
|
|
30
|
+
|
|
31
|
+
spec.add_dependency 'jekyll', '>= 4.4'
|
|
32
|
+
spec.add_dependency 'nokogiri', '~> 1.12'
|
|
33
|
+
end
|
data/lib/jekyll-toc-plus.rb
CHANGED
|
@@ -5,28 +5,42 @@ require 'table_of_contents/configuration'
|
|
|
5
5
|
require 'table_of_contents/parser'
|
|
6
6
|
|
|
7
7
|
module Jekyll
|
|
8
|
+
module TableOfContents
|
|
9
|
+
# Resolves the effective TOC config by merging site-wide `_config.yml`
|
|
10
|
+
# `toc:` settings with per-page `toc_config:` front matter, where page
|
|
11
|
+
# values override site values. Shared by the filter and the tag.
|
|
12
|
+
module ConfigResolver
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def merge_toc_config(registers)
|
|
16
|
+
site_config = registers[:site].config['toc'] || {}
|
|
17
|
+
page_config = registers[:page]['toc_config'] || {}
|
|
18
|
+
site_config.merge(page_config)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
8
23
|
# toc tag for Jekyll
|
|
9
24
|
class TocTag < Liquid::Tag
|
|
25
|
+
include TableOfContents::ConfigResolver
|
|
26
|
+
|
|
10
27
|
def render(context)
|
|
11
|
-
return '' unless context.registers[:page]['toc']
|
|
28
|
+
return '' unless context.registers[:page]['toc'] == true
|
|
12
29
|
|
|
13
30
|
content_html = context.registers[:page]['content']
|
|
14
|
-
toc_config = merge_toc_config(context)
|
|
31
|
+
toc_config = merge_toc_config(context.registers)
|
|
15
32
|
TableOfContents::Parser.new(content_html, toc_config).build_toc
|
|
16
33
|
end
|
|
17
|
-
|
|
18
|
-
private
|
|
19
|
-
|
|
20
|
-
def merge_toc_config(context)
|
|
21
|
-
site_config = context.registers[:site].config['toc'] || {}
|
|
22
|
-
page_config = context.registers[:page]['toc_config'] || {}
|
|
23
|
-
site_config.merge(page_config)
|
|
24
|
-
end
|
|
25
34
|
end
|
|
26
35
|
|
|
27
36
|
# Jekyll Table of Contents filter plugin
|
|
28
37
|
module TableOfContentsFilter
|
|
29
|
-
|
|
38
|
+
include TableOfContents::ConfigResolver
|
|
39
|
+
|
|
40
|
+
# Renders the TOC only (no anchors injected into the content).
|
|
41
|
+
# Kept as a supported filter: unlike the {% toc %} tag, it works on any
|
|
42
|
+
# page because it receives the content as input, whereas the tag reads
|
|
43
|
+
# page['content'] and therefore only works for Posts and Collections.
|
|
30
44
|
def toc_only(html)
|
|
31
45
|
return '' unless toc_enabled?
|
|
32
46
|
|
|
@@ -52,12 +66,10 @@ module Jekyll
|
|
|
52
66
|
end
|
|
53
67
|
|
|
54
68
|
def toc_config
|
|
55
|
-
|
|
56
|
-
page_config = @context.registers[:page]['toc_config'] || {}
|
|
57
|
-
site_config.merge(page_config)
|
|
69
|
+
merge_toc_config(@context.registers)
|
|
58
70
|
end
|
|
59
71
|
end
|
|
60
72
|
end
|
|
61
73
|
|
|
62
74
|
Liquid::Template.register_filter(Jekyll::TableOfContentsFilter)
|
|
63
|
-
Liquid::Template.register_tag('toc', Jekyll::TocTag)
|
|
75
|
+
Liquid::Template.register_tag('toc', Jekyll::TocTag)
|
|
@@ -12,6 +12,7 @@ module Jekyll
|
|
|
12
12
|
'min_level' => 1,
|
|
13
13
|
'max_level' => 6,
|
|
14
14
|
'ordered_list' => false,
|
|
15
|
+
'no_toc_class' => 'no_toc',
|
|
15
16
|
'no_toc_section_class' => 'no_toc_section',
|
|
16
17
|
'list_id' => 'toc',
|
|
17
18
|
'list_class' => 'section-nav',
|
|
@@ -28,7 +29,7 @@ module Jekyll
|
|
|
28
29
|
|
|
29
30
|
@toc_levels = options['min_level']..options['max_level']
|
|
30
31
|
@ordered_list = options['ordered_list']
|
|
31
|
-
@no_toc_class = '
|
|
32
|
+
@no_toc_class = options['no_toc_class']
|
|
32
33
|
@no_toc_section_class = options['no_toc_section_class']
|
|
33
34
|
@list_id = options['list_id']
|
|
34
35
|
@list_class = options['list_class']
|
|
@@ -43,9 +44,9 @@ module Jekyll
|
|
|
43
44
|
private
|
|
44
45
|
|
|
45
46
|
def generate_option_hash(options)
|
|
47
|
+
return DEFAULT_CONFIG.dup unless options.is_a?(Hash)
|
|
48
|
+
|
|
46
49
|
DEFAULT_CONFIG.merge(options)
|
|
47
|
-
rescue TypeError
|
|
48
|
-
DEFAULT_CONFIG
|
|
49
50
|
end
|
|
50
51
|
end
|
|
51
52
|
end
|
|
@@ -24,9 +24,8 @@ module Jekyll
|
|
|
24
24
|
|
|
25
25
|
def inject_anchors_into_html
|
|
26
26
|
@entries.each do |entry|
|
|
27
|
-
# NOTE: `entry[:id]` is automatically URL encoded by Nokogiri
|
|
28
27
|
entry[:header_content].add_previous_sibling(
|
|
29
|
-
%(<a class="anchor" href="##{entry
|
|
28
|
+
%(<a class="anchor" href="##{escaped_id(entry)}" aria-hidden="true"><span class="octicon octicon-link"></span></a>)
|
|
30
29
|
)
|
|
31
30
|
end
|
|
32
31
|
|
|
@@ -44,7 +43,9 @@ module Jekyll
|
|
|
44
43
|
.reject { |n| n.classes.include?(@configuration.no_toc_class) }
|
|
45
44
|
.inject([]) do |entries, node|
|
|
46
45
|
text = extract_text(node, only_direct_text: @configuration.toc_only_direct_text)
|
|
47
|
-
|
|
46
|
+
# Use the attribute's string value (not the Nokogiri::XML::Attr object)
|
|
47
|
+
# so duplicate explicit ids dedupe correctly via the `headers` hash.
|
|
48
|
+
id = node.attribute('id')&.value || generate_toc_id(text)
|
|
48
49
|
|
|
49
50
|
suffix_num = headers[id]
|
|
50
51
|
headers[id] += 1
|
|
@@ -73,7 +74,7 @@ module Jekyll
|
|
|
73
74
|
toc_list = +''
|
|
74
75
|
|
|
75
76
|
entries.each do |entry|
|
|
76
|
-
toc_list << %(<#{list_parent_tag} class="#{@configuration.item_class} #{@configuration.item_prefix}#{entry[:node_name]}"><a href="##{entry
|
|
77
|
+
toc_list << %(<#{list_parent_tag} class="#{@configuration.item_class} #{@configuration.item_prefix}#{entry[:node_name]}"><a href="##{escaped_id(entry)}">#{entry[:text]}</a></#{list_parent_tag}>\n)
|
|
77
78
|
end
|
|
78
79
|
|
|
79
80
|
toc_list
|
|
@@ -90,7 +91,7 @@ module Jekyll
|
|
|
90
91
|
if entry[:h_num] == min_h_num
|
|
91
92
|
# If the current entry should not be indented in the list, add the entry to the list
|
|
92
93
|
# If the next entry should be indented in the list, generate a sublist
|
|
93
|
-
toc_list << %(<#{list_parent_tag} class="#{@configuration.item_class} #{@configuration.item_prefix}#{entry[:node_name]}"><a href="##{entry
|
|
94
|
+
toc_list << %(<#{list_parent_tag} class="#{@configuration.item_class} #{@configuration.item_prefix}#{entry[:node_name]}"><a href="##{escaped_id(entry)}">#{entry[:text]}</a>)
|
|
94
95
|
next_i = i + 1
|
|
95
96
|
if next_i < entries.count && entries[next_i][:h_num] > min_h_num
|
|
96
97
|
nest_entries = get_nest_entries(entries[next_i, entries.count], min_h_num)
|
|
@@ -109,6 +110,13 @@ module Jekyll
|
|
|
109
110
|
toc_list
|
|
110
111
|
end
|
|
111
112
|
|
|
113
|
+
# Escapes an entry's id for safe interpolation into an HTML attribute
|
|
114
|
+
# value (the `href="#..."` fragment). Author-supplied ids may contain
|
|
115
|
+
# characters such as `"` that would otherwise break out of the attribute.
|
|
116
|
+
def escaped_id(entry)
|
|
117
|
+
CGI.escapeHTML(entry[:id])
|
|
118
|
+
end
|
|
119
|
+
|
|
112
120
|
# Returns the entries in a nested list
|
|
113
121
|
# The nested list starts at the first entry in entries (inclusive)
|
|
114
122
|
# The nested list ends at the first entry in entries with depth min_h_num or greater (exclusive)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jekyll-toc-plus
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.21.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- toshimaru
|
|
@@ -17,14 +17,14 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - ">="
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: '
|
|
20
|
+
version: '4.4'
|
|
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: '
|
|
27
|
+
version: '4.4'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: nokogiri
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -47,17 +47,13 @@ extensions: []
|
|
|
47
47
|
extra_rdoc_files: []
|
|
48
48
|
files:
|
|
49
49
|
- ".rubocop.yml"
|
|
50
|
-
- Appraisals
|
|
51
50
|
- CHANGELOG.md
|
|
51
|
+
- CLAUDE.md
|
|
52
52
|
- Gemfile
|
|
53
53
|
- LICENSE.md
|
|
54
54
|
- README.md
|
|
55
55
|
- Rakefile
|
|
56
|
-
-
|
|
57
|
-
- gemfiles/jekyll_4.0.gemfile
|
|
58
|
-
- gemfiles/jekyll_4.1.gemfile
|
|
59
|
-
- gemfiles/jekyll_4.2.gemfile
|
|
60
|
-
- gemfiles/jekyll_4.3.gemfile
|
|
56
|
+
- jekyll-toc-plus.gemspec
|
|
61
57
|
- lib/jekyll-toc-plus.rb
|
|
62
58
|
- lib/table_of_contents/configuration.rb
|
|
63
59
|
- lib/table_of_contents/helper.rb
|
|
@@ -78,7 +74,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
78
74
|
requirements:
|
|
79
75
|
- - ">="
|
|
80
76
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: '2
|
|
77
|
+
version: '3.2'
|
|
82
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
79
|
requirements:
|
|
84
80
|
- - ">="
|
data/Appraisals
DELETED
data/gemfiles/jekyll_3.9.gemfile
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "appraisal"
|
|
6
|
-
gem "minitest-reporters"
|
|
7
|
-
gem "minitest"
|
|
8
|
-
gem "pry"
|
|
9
|
-
gem "rake"
|
|
10
|
-
gem "rubocop-minitest"
|
|
11
|
-
gem "rubocop-performance"
|
|
12
|
-
gem "rubocop-rake"
|
|
13
|
-
gem "rubocop"
|
|
14
|
-
gem "simplecov", "~> 0.22.0"
|
|
15
|
-
gem "jekyll", "3.9"
|
|
16
|
-
|
|
17
|
-
gemspec path: "../"
|
data/gemfiles/jekyll_4.0.gemfile
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "appraisal"
|
|
6
|
-
gem "minitest-reporters"
|
|
7
|
-
gem "minitest"
|
|
8
|
-
gem "pry"
|
|
9
|
-
gem "rake"
|
|
10
|
-
gem "rubocop-minitest"
|
|
11
|
-
gem "rubocop-performance"
|
|
12
|
-
gem "rubocop-rake"
|
|
13
|
-
gem "rubocop"
|
|
14
|
-
gem "simplecov", "~> 0.22.0"
|
|
15
|
-
gem "jekyll", "4.0"
|
|
16
|
-
|
|
17
|
-
gemspec path: "../"
|
data/gemfiles/jekyll_4.1.gemfile
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "appraisal"
|
|
6
|
-
gem "minitest-reporters"
|
|
7
|
-
gem "minitest"
|
|
8
|
-
gem "pry"
|
|
9
|
-
gem "rake"
|
|
10
|
-
gem "rubocop-minitest"
|
|
11
|
-
gem "rubocop-performance"
|
|
12
|
-
gem "rubocop-rake"
|
|
13
|
-
gem "rubocop"
|
|
14
|
-
gem "simplecov", "~> 0.22.0"
|
|
15
|
-
gem "jekyll", "4.1"
|
|
16
|
-
|
|
17
|
-
gemspec path: "../"
|
data/gemfiles/jekyll_4.2.gemfile
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "appraisal"
|
|
6
|
-
gem "minitest-reporters"
|
|
7
|
-
gem "minitest"
|
|
8
|
-
gem "pry"
|
|
9
|
-
gem "rake"
|
|
10
|
-
gem "rubocop-minitest"
|
|
11
|
-
gem "rubocop-performance"
|
|
12
|
-
gem "rubocop-rake"
|
|
13
|
-
gem "rubocop"
|
|
14
|
-
gem "simplecov", "~> 0.22.0"
|
|
15
|
-
gem "jekyll", "4.2"
|
|
16
|
-
|
|
17
|
-
gemspec path: "../"
|
data/gemfiles/jekyll_4.3.gemfile
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "appraisal"
|
|
6
|
-
gem "minitest-reporters"
|
|
7
|
-
gem "minitest"
|
|
8
|
-
gem "pry"
|
|
9
|
-
gem "rake"
|
|
10
|
-
gem "rubocop-minitest"
|
|
11
|
-
gem "rubocop-performance"
|
|
12
|
-
gem "rubocop-rake"
|
|
13
|
-
gem "rubocop"
|
|
14
|
-
gem "simplecov", "~> 0.22.0"
|
|
15
|
-
gem "jekyll", "4.3"
|
|
16
|
-
|
|
17
|
-
gemspec path: "../"
|