is-kramdown-hooked 0.8.2 → 0.8.4
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 -2
- data/lib/kramdown_parser/kram_parser.rb +27 -0
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 441407ef942bc9023cef0f42290407003c63794cfcb7cd61f745e6f48c2f23c1
|
|
4
|
+
data.tar.gz: dc339b920c31f79e407da8d2f4df2013d86dbfe87df843cae0f6ecd0f60d0288
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eafe784adfb77ae948e20e062ccff8f01ddc329d54ababfa62d8b70dff0e222e9016a423071e6079696b5831bd5c6af71943a8b4c31b703af63baadf51d92177
|
|
7
|
+
data.tar.gz: 022f49b60282a26c60b841f6764e2c7d07fd4cca00ea56458f7fae01936768f21263e19a4b308ec53610492e6ba3aed7c26edb737c923a3a24e2bdba3c0b3eda
|
data/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Extensible Kramdown parser with inner hooks for enhanced Markdown processing in
|
|
|
12
12
|
|
|
13
13
|
## Version
|
|
14
14
|
|
|
15
|
-
+ **0.8.
|
|
15
|
+
+ **0.8.x** — pre-release.
|
|
16
16
|
|
|
17
17
|
## About
|
|
18
18
|
|
|
@@ -32,7 +32,7 @@ is-kramdown-hooked is a flexible Ruby gem that extends the standard Kramdown Mar
|
|
|
32
32
|
Add this line to your Jekyll site's `Gemfile` or any Ruby project's Gemfile:
|
|
33
33
|
|
|
34
34
|
```ruby
|
|
35
|
-
gem 'is-kramdown-hooked', '~> 0.8.
|
|
35
|
+
gem 'is-kramdown-hooked', '~> 0.8.2'
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Then run:
|
|
@@ -16,11 +16,34 @@ class Kramdown::Parser::ISKram < Kramdown::Parser::Kramdown
|
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
+
def register_ast_element_hook *elements, &hook
|
|
20
|
+
@element_hooks ||= []
|
|
21
|
+
@element_hooks << { elements: elements, hook: hook }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def trigger_ast_elements_hooks parser
|
|
25
|
+
return if @element_hooks.nil? || @element_hooks.empty?
|
|
26
|
+
traverse = lambda do |elem|
|
|
27
|
+
elem.children.each_with_index do |child, index|
|
|
28
|
+
handled = false
|
|
29
|
+
@element_hooks.each do |hook|
|
|
30
|
+
if hook[:elements].include?(child.type)
|
|
31
|
+
hooked = hook[:hook].call elem, child, index
|
|
32
|
+
handled ||= hooked
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
traverse.call child unless handled
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
traverse.call parser.root
|
|
39
|
+
end
|
|
40
|
+
|
|
19
41
|
end
|
|
20
42
|
|
|
21
43
|
def parse
|
|
22
44
|
super
|
|
23
45
|
trigger_post_parse_hooks
|
|
46
|
+
trigger_ast_elements_hooks
|
|
24
47
|
end
|
|
25
48
|
|
|
26
49
|
private
|
|
@@ -29,4 +52,8 @@ class Kramdown::Parser::ISKram < Kramdown::Parser::Kramdown
|
|
|
29
52
|
self.class.trigger_post_parse_hooks self
|
|
30
53
|
end
|
|
31
54
|
|
|
55
|
+
def trigger_ast_elements_hooks
|
|
56
|
+
self.class.trigger_ast_elements_hooks self
|
|
57
|
+
end
|
|
58
|
+
|
|
32
59
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: is-kramdown-hooked
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.8.
|
|
4
|
+
version: 0.8.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ivan Shikhalev
|
|
@@ -57,14 +57,14 @@ dependencies:
|
|
|
57
57
|
requirements:
|
|
58
58
|
- - "~>"
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: 0.
|
|
60
|
+
version: 1.0.0
|
|
61
61
|
type: :development
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: 0.
|
|
67
|
+
version: 1.0.0
|
|
68
68
|
description: Flexible Jekyll plugin gem that extends Kramdown Markdown parser with
|
|
69
69
|
customizable AST hooks, enabling enhanced Markdown processing and seamless integration
|
|
70
70
|
within Jekyll sites.
|