jekyll-titles-from-headings 0.5.1 → 0.5.3
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/README.md +2 -1
- data/lib/jekyll-titles-from-headings/generator.rb +31 -19
- data/lib/jekyll-titles-from-headings/version.rb +1 -1
- metadata +27 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a36789e56728be11eb6c911bd0158e7f176ff946ca0681fbde8e60b5ce5e9a5
|
4
|
+
data.tar.gz: e40ce5d4d52c051a1b17b318a183cd2f762006cd04fea731f08f16a225b80230
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b50626d58bddf7137498404b38c2d5eec3c0ccac30cac171cbedcbf5db50affe1c387280c3becb7954f90a99af58a60cdb2c24f385d81e9f3cd8e13f90ed0c0e
|
7
|
+
data.tar.gz: b36324e303a38e1a567d0c70fc1ec9b98a8100968345ca123699165ccb0e4a3de3eae16a9e319d63a6082fb48f6e45cb9b681e36490318d0fef0886998cbec63
|
data/README.md
CHANGED
@@ -27,9 +27,10 @@ Additionally, this allows you to store the title semantically, in the document i
|
|
27
27
|
2. Add the following to your site's config file:
|
28
28
|
|
29
29
|
```yml
|
30
|
-
|
30
|
+
plugins:
|
31
31
|
- jekyll-titles-from-headings
|
32
32
|
```
|
33
|
+
Note: If you are using a Jekyll version less than 3.5.0, use the `gems` key instead of `plugins`.
|
33
34
|
|
34
35
|
## Configuration
|
35
36
|
|
@@ -3,31 +3,27 @@
|
|
3
3
|
module JekyllTitlesFromHeadings
|
4
4
|
class Generator < Jekyll::Generator
|
5
5
|
attr_accessor :site
|
6
|
-
|
7
|
-
# rubocop:disable Lint/InterpolationCheck
|
8
6
|
TITLE_REGEX =
|
9
7
|
%r!
|
10
|
-
\A\s*
|
11
|
-
(?:
|
12
|
-
\#{1,3}\s+(.*)
|
13
|
-
|
|
14
|
-
(.*)\r?\n[-=]+\s*
|
15
|
-
)$
|
16
|
-
!x
|
17
|
-
|
8
|
+
\A\s* # Beginning and whitespace
|
9
|
+
(?: # either
|
10
|
+
\#{1,3}\s+(.*)(?:\s+\#{1,3})? # atx-style header
|
11
|
+
| # or
|
12
|
+
(.*)\r?\n[-=]+\s* # Setex-style header
|
13
|
+
)$ # end of line
|
14
|
+
!x.freeze
|
15
|
+
|
18
16
|
CONVERTER_CLASS = Jekyll::Converters::Markdown
|
19
|
-
STRIP_MARKUP_FILTERS =
|
20
|
-
markdownify strip_html normalize_whitespace
|
21
|
-
].freeze
|
17
|
+
STRIP_MARKUP_FILTERS = [:markdownify, :strip_html, :normalize_whitespace].freeze
|
22
18
|
|
23
19
|
# Regex to strip extra markup still present after markdownify
|
24
20
|
# (footnotes at the moment).
|
25
|
-
EXTRA_MARKUP_REGEX = %r!\[\^[^\]]*\]
|
21
|
+
EXTRA_MARKUP_REGEX = %r!\[\^[^\]]*\]!.freeze
|
26
22
|
|
27
|
-
CONFIG_KEY = "titles_from_headings"
|
28
|
-
ENABLED_KEY = "enabled"
|
29
|
-
STRIP_TITLE_KEY = "strip_title"
|
30
|
-
COLLECTIONS_KEY = "collections"
|
23
|
+
CONFIG_KEY = "titles_from_headings"
|
24
|
+
ENABLED_KEY = "enabled"
|
25
|
+
STRIP_TITLE_KEY = "strip_title"
|
26
|
+
COLLECTIONS_KEY = "collections"
|
31
27
|
|
32
28
|
safe true
|
33
29
|
priority :lowest
|
@@ -46,6 +42,7 @@ module JekyllTitlesFromHeadings
|
|
46
42
|
documents.each do |document|
|
47
43
|
next unless should_add_title?(document)
|
48
44
|
next if document.is_a?(Jekyll::StaticFile)
|
45
|
+
|
49
46
|
document.data["title"] = title_for(document)
|
50
47
|
strip_title!(document) if strip_title?(document)
|
51
48
|
end
|
@@ -69,8 +66,10 @@ module JekyllTitlesFromHeadings
|
|
69
66
|
|
70
67
|
def title_for(document)
|
71
68
|
return document.data["title"] if title?(document)
|
69
|
+
|
72
70
|
matches = document.content.to_s.match(TITLE_REGEX)
|
73
71
|
return strip_markup(matches[1] || matches[2]) if matches
|
72
|
+
|
74
73
|
document.data["title"] # If we cant match a title, we use the inferred one.
|
75
74
|
rescue ArgumentError => e
|
76
75
|
raise e unless e.to_s.start_with?("invalid byte sequence in UTF-8")
|
@@ -100,6 +99,12 @@ module JekyllTitlesFromHeadings
|
|
100
99
|
end
|
101
100
|
end
|
102
101
|
|
102
|
+
def strip_title_excerpt?(document)
|
103
|
+
document.is_a?(Jekyll::Document) &&
|
104
|
+
document.collection.label == "posts" &&
|
105
|
+
document.generate_excerpt?
|
106
|
+
end
|
107
|
+
|
103
108
|
def collections?
|
104
109
|
option(COLLECTIONS_KEY) == true
|
105
110
|
end
|
@@ -111,7 +116,14 @@ module JekyllTitlesFromHeadings
|
|
111
116
|
end
|
112
117
|
|
113
118
|
def strip_title!(document)
|
114
|
-
|
119
|
+
if document.content
|
120
|
+
document.content = document.content.gsub(TITLE_REGEX, "").strip
|
121
|
+
strip_title_excerpt!(document) if strip_title_excerpt?(document)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def strip_title_excerpt!(document)
|
126
|
+
document.data["excerpt"] = Jekyll::Excerpt.new(document)
|
115
127
|
end
|
116
128
|
|
117
129
|
def filters
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-titles-from-headings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Balter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.3'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '3.3'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rspec
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +50,28 @@ dependencies:
|
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
53
|
+
version: '0.71'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0.71'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rubocop-jekyll
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0.10'
|
48
68
|
type: :development
|
49
69
|
prerelease: false
|
50
70
|
version_requirements: !ruby/object:Gem::Requirement
|
51
71
|
requirements:
|
52
72
|
- - "~>"
|
53
73
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
74
|
+
version: '0.10'
|
55
75
|
description:
|
56
76
|
email:
|
57
77
|
- ben.balter@github.com
|
@@ -85,8 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
105
|
- !ruby/object:Gem::Version
|
86
106
|
version: '0'
|
87
107
|
requirements: []
|
88
|
-
|
89
|
-
rubygems_version: 2.7.5
|
108
|
+
rubygems_version: 3.0.6
|
90
109
|
signing_key:
|
91
110
|
specification_version: 4
|
92
111
|
summary: A Jekyll plugin to pull the page title from the first Markdown heading when
|