jekyll-gfm-admonitions 0.1.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 +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +102 -0
- data/assets/admonitions.css +73 -0
- data/lib/jekyll-gfm-admonitions.rb +74 -0
- metadata +76 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 73f62b9375b8f6b7d657aba5597cab2d612a70350d044af9807bbee619774aa1
|
4
|
+
data.tar.gz: 06e4c485c9d50d38fdb22e9ac7228ea431f8f55e41c808af6a73837cf34037fa
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 299f06fe2684ed5b9f792decd2c1d666af9f17906f4c65413de499f526f5636eb834101ef95be18a93d9ec28e79cea4b0d49eafc8001792b1a0c8859b7f9be01
|
7
|
+
data.tar.gz: 11e51faa997ee7d745814a2d8761a36020273c559c5b492dbbcab07e4379e4d0d8469dd8b56e5429522258084b533e0bdcbb6581f26a4348933b07eea93e79e5
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2024 Robin De Schepper
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
- The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
# GitHub Flavored Admonitions
|
2
|
+
|
3
|
+
A Jekyll plugin to render GitHub-flavored admonitions in your Jekyll sites.
|
4
|
+
This plugin allows you to use GitHub-flavored markdown syntax to create stylish admonition
|
5
|
+
blocks for notes, warnings, tips, cautions, and important messages.
|
6
|
+
|
7
|
+
## Supported Admonitions
|
8
|
+
|
9
|
+
The following admonitions are supported:
|
10
|
+
|
11
|
+
- **Important**: `> [!IMPORTANT]`
|
12
|
+
- **Note**: `> [!NOTE]`
|
13
|
+
- **Tip**: `> [!TIP]`
|
14
|
+
- **Warning**: `> [!WARNING]`
|
15
|
+
- **Caution**: `> [!CAUTION]`
|
16
|
+
|
17
|
+
### Example Usage
|
18
|
+
|
19
|
+
To use admonitions in your markdown files, simply add the following syntax:
|
20
|
+
|
21
|
+
```markdown
|
22
|
+
> [!IMPORTANT]
|
23
|
+
> This is an important message.
|
24
|
+
|
25
|
+
> [!NOTE]
|
26
|
+
> This is a note.
|
27
|
+
|
28
|
+
> [!TIP]
|
29
|
+
> This is a helpful tip.
|
30
|
+
|
31
|
+
> [!WARNING]
|
32
|
+
> This is a warning.
|
33
|
+
|
34
|
+
> [!CAUTION]
|
35
|
+
> This is a caution message.
|
36
|
+
```
|
37
|
+
|
38
|
+
> [!IMPORTANT]
|
39
|
+
> This is an important message.
|
40
|
+
|
41
|
+
> [!NOTE]
|
42
|
+
> This is a note.
|
43
|
+
|
44
|
+
> [!TIP]
|
45
|
+
> This is a helpful tip.
|
46
|
+
|
47
|
+
> [!WARNING]
|
48
|
+
> This is a warning.
|
49
|
+
|
50
|
+
> [!CAUTION]
|
51
|
+
> This is a caution message.
|
52
|
+
|
53
|
+
## Installation
|
54
|
+
|
55
|
+
To install the plugin, add it to your Jekyll project's `Gemfile`:
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
group :jekyll_plugins do
|
59
|
+
|
60
|
+
# Other plugins go here ...
|
61
|
+
|
62
|
+
# ... Add this line:
|
63
|
+
gem "jekyll-gfm-admonitions"
|
64
|
+
end
|
65
|
+
```
|
66
|
+
|
67
|
+
Then run:
|
68
|
+
|
69
|
+
```bash
|
70
|
+
bundle install
|
71
|
+
```
|
72
|
+
|
73
|
+
### Configuring Jekyll
|
74
|
+
|
75
|
+
Next, you need to enable the plugin in your Jekyll configuration file (`_config.yml`):
|
76
|
+
|
77
|
+
```yaml
|
78
|
+
plugins:
|
79
|
+
- jekyll-gfm-admonitions
|
80
|
+
```
|
81
|
+
|
82
|
+
Then, during build/serve, you should see a log similar to:
|
83
|
+
|
84
|
+
```
|
85
|
+
GFMA: Converted adminitions in 1 file(s).
|
86
|
+
```
|
87
|
+
|
88
|
+
## When using GitHub Pages
|
89
|
+
|
90
|
+
To enable custom plugins in your Jekyll build for GitHub Pages, you need to use GitHub
|
91
|
+
Actions (GHA) to build and deploy your Jekyll site. For detailed instructions on setting
|
92
|
+
up GitHub Actions for your Jekyll project, please follow this link:
|
93
|
+
[GitHub Actions Setup for Jekyll](https://jekyllrb.com/docs/continuous-integration/github-actions/).
|
94
|
+
|
95
|
+
## License
|
96
|
+
|
97
|
+
This project is licensed under the MIT License. See the [LICENSE.txt](LICENSE.txt) file
|
98
|
+
for details.
|
99
|
+
|
100
|
+
## Contributing
|
101
|
+
|
102
|
+
Contributions are welcome! Please feel free to submit issues or pull requests.
|
@@ -0,0 +1,73 @@
|
|
1
|
+
.markdown-alert {
|
2
|
+
padding: 0.5rem 1rem;
|
3
|
+
margin-bottom: 1rem;
|
4
|
+
color: inherit;
|
5
|
+
border-left: .25em solid #30363d;
|
6
|
+
}
|
7
|
+
|
8
|
+
.markdown-body .markdown-alert > :first-child {
|
9
|
+
margin-top: 0;
|
10
|
+
}
|
11
|
+
|
12
|
+
.markdown-body .markdown-alert > :last-child {
|
13
|
+
margin-bottom: 0;
|
14
|
+
}
|
15
|
+
|
16
|
+
.markdown-body .markdown-alert .markdown-alert-title {
|
17
|
+
display: flex;
|
18
|
+
font-weight: 500;
|
19
|
+
align-items: center;
|
20
|
+
line-height: 1;
|
21
|
+
}
|
22
|
+
|
23
|
+
.markdown-body .markdown-alert svg {
|
24
|
+
margin-right: 0.5rem !important;
|
25
|
+
}
|
26
|
+
|
27
|
+
.markdown-body .markdown-alert svg path {
|
28
|
+
fill: currentColor;
|
29
|
+
}
|
30
|
+
|
31
|
+
.markdown-body .markdown-alert.markdown-alert-note {
|
32
|
+
border-left-color: #4493f8;
|
33
|
+
}
|
34
|
+
|
35
|
+
.markdown-body .markdown-alert.markdown-alert-note svg path {
|
36
|
+
color: #4493f8;
|
37
|
+
}
|
38
|
+
|
39
|
+
.markdown-body .markdown-alert.markdown-alert-important {
|
40
|
+
border-left-color: #ab7df8;
|
41
|
+
}
|
42
|
+
|
43
|
+
.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title {
|
44
|
+
color: #ab7df8;
|
45
|
+
}
|
46
|
+
|
47
|
+
.markdown-body .markdown-alert.markdown-alert-warning {
|
48
|
+
border-left-color: #9e6a03;
|
49
|
+
}
|
50
|
+
|
51
|
+
.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title {
|
52
|
+
color: #d29922;
|
53
|
+
}
|
54
|
+
|
55
|
+
.markdown-body .markdown-alert.markdown-alert-tip {
|
56
|
+
border-left-color: #238636;
|
57
|
+
}
|
58
|
+
|
59
|
+
.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title {
|
60
|
+
color: #3fb950;
|
61
|
+
}
|
62
|
+
|
63
|
+
.markdown-body .markdown-alert.markdown-alert-caution {
|
64
|
+
border-left-color: #da3633;
|
65
|
+
}
|
66
|
+
|
67
|
+
.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title {
|
68
|
+
color: #f85149;
|
69
|
+
}
|
70
|
+
|
71
|
+
.markdown-body > :first-child > .heading-element:first-child {
|
72
|
+
margin-top: 0 !important;
|
73
|
+
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'octicons'
|
4
|
+
require 'cssminify'
|
5
|
+
|
6
|
+
ADMONITION_ICONS = {
|
7
|
+
'important' => 'report',
|
8
|
+
'note' => 'info',
|
9
|
+
'tip' => 'light-bulb',
|
10
|
+
'warning' => 'alert',
|
11
|
+
'caution' => 'stop'
|
12
|
+
}.freeze
|
13
|
+
|
14
|
+
# JekyllGFMAdmonitions is a module that provides functionality to process and
|
15
|
+
# convert GitHub-flavored markdown admonitions into HTML within Jekyll.
|
16
|
+
module JekyllGFMAdmonitions
|
17
|
+
# GFMAdmonitionConverter is a Jekyll generator that converts custom
|
18
|
+
# admonition blocks in markdown (e.g., `> [!IMPORTANT]`) into styled HTML
|
19
|
+
# alert boxes with icons.
|
20
|
+
#
|
21
|
+
# This generator processes both posts and pages, replacing admonition
|
22
|
+
# syntax with HTML markup that includes appropriate iconography and CSS styling.
|
23
|
+
class GFMAdmonitionConverter < Jekyll::Generator
|
24
|
+
safe true
|
25
|
+
|
26
|
+
def initialize(*args)
|
27
|
+
super(*args)
|
28
|
+
@converted = 0
|
29
|
+
end
|
30
|
+
|
31
|
+
def generate(site)
|
32
|
+
# Process admonitions in posts
|
33
|
+
site.posts.docs.each do |doc|
|
34
|
+
process(doc)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Process admonitions in pages
|
38
|
+
site.pages.each do |page|
|
39
|
+
process(page)
|
40
|
+
end
|
41
|
+
|
42
|
+
Jekyll.logger.info 'GFMA:', "Converted adminitions in #{@converted} file(s)."
|
43
|
+
end
|
44
|
+
|
45
|
+
def process(doc)
|
46
|
+
original_content = doc.content.dup
|
47
|
+
convert_admonitions(doc)
|
48
|
+
|
49
|
+
return unless doc.content != original_content
|
50
|
+
|
51
|
+
inject_css(doc)
|
52
|
+
@converted += 1
|
53
|
+
end
|
54
|
+
|
55
|
+
def convert_admonitions(doc)
|
56
|
+
doc.content.gsub!(/>\s*\[!(IMPORTANT|NOTE|WARNING|TIP|CAUTION)\]\s*\n((?:>.*\n?)*)/) do
|
57
|
+
type = ::Regexp.last_match(1).downcase
|
58
|
+
title = type.capitalize
|
59
|
+
text = ::Regexp.last_match(2).gsub(/^>\s*/, '').strip
|
60
|
+
icon = Octicons::Octicon.new(ADMONITION_ICONS[type]).to_svg
|
61
|
+
|
62
|
+
"<div class='markdown-alert markdown-alert-#{type}'>
|
63
|
+
<p class='markdown-alert-title'>#{icon} #{title}</p>
|
64
|
+
<p>#{text}</p>
|
65
|
+
</div>"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def inject_css(doc)
|
70
|
+
css = File.read(File.expand_path('../assets/admonitions.css', __dir__))
|
71
|
+
doc.content += "<style>#{CSSminify.compress(css)}</style>"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
metadata
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-gfm-admonitions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robin De Schepper
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-09-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
description: This plugin allows you to use GitHub-flavored markdown syntaxto create
|
42
|
+
admonition blocks in Jekyll sites.
|
43
|
+
email:
|
44
|
+
- robin.deschepper93@gmail.com
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- LICENSE.txt
|
50
|
+
- README.md
|
51
|
+
- assets/admonitions.css
|
52
|
+
- lib/jekyll-gfm-admonitions.rb
|
53
|
+
homepage: https://github.com/helveg/jekyll-gfm-admonitions
|
54
|
+
licenses:
|
55
|
+
- MIT
|
56
|
+
metadata: {}
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options: []
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 2.7.0
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
requirements: []
|
72
|
+
rubygems_version: 3.5.20
|
73
|
+
signing_key:
|
74
|
+
specification_version: 4
|
75
|
+
summary: A Jekyll plugin to render GitHub-flavored admonitions.
|
76
|
+
test_files: []
|