jekyll-pandoc-mermaid 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/jekyll-pandoc-mermaid.rb +71 -0
  3. metadata +105 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6aba17e8a43e1f92f3c18c2f9b15e80452c93bab1adfb6676111718de646da6a
4
+ data.tar.gz: 23f8be9f5cc20173a2cdcfe553e6c21410f563671eb7048a12f4aa7424df72f6
5
+ SHA512:
6
+ metadata.gz: e6014e780b03cf828755f8cf8cdebda9b5d39190acc48546872a1a41a7a285d43c981a394e1ec6f5e787de15b511f33565a13744e7d3f1d6c3ded5484102b60b
7
+ data.tar.gz: e8b2a760042c2fb6ec19878868a6ef715c25f936c93bbef9762e5f9d5396384dc3fbd28c3335e5683c3d7b09378cdc12e21331dca5c6c375ce7c47c9891a7212
@@ -0,0 +1,71 @@
1
+ Jekyll::Hooks.register :documents, :pre_render do |doc|
2
+ next if not jekyll_pandoc_mermaid_is_enable(doc.site.config)
3
+
4
+ doc.content = replace_mermaid_format_to_html_entites_before_rendering(doc.content)
5
+ end
6
+
7
+ #
8
+
9
+ def replace_mermaid_format_to_html_entites_before_rendering(input_text)
10
+ regex = /{% mermaid %}([\w\W]*?){% endmermaid %}/
11
+
12
+ output_text = input_text.gsub(regex) { |_|
13
+ match = Regexp.last_match
14
+ mermaid_block_text = Regexp.last_match[0]
15
+
16
+ mermaid_block_text.gsub!(/\n/, '
')
17
+ mermaid_block_text.gsub!(/-/, '-')
18
+ mermaid_block_text.gsub!(/"/, '\"')
19
+
20
+ mermaid_block_text
21
+ }
22
+
23
+ return output_text
24
+ end
25
+
26
+ #
27
+
28
+ # can modify not doc.content(unrendered content of the document),
29
+ # but doc.output(rendered output) after rendering
30
+ Jekyll::Hooks.register :documents, :post_render do |doc|
31
+ next if not jekyll_pandoc_mermaid_is_enable(doc.site.config)
32
+
33
+ doc.output = replace_html_entites_to_mermaid_format_after_rendering(doc.output)
34
+ end
35
+
36
+ #
37
+
38
+ def replace_html_entites_to_mermaid_format_after_rendering(input_text)
39
+
40
+ regex = /<div class="mermaid">([\w\W]*?)<\/div>/
41
+
42
+ output_text = input_text.gsub(regex) { |_|
43
+ match = Regexp.last_match
44
+ mermaid_block_text = Regexp.last_match[0]
45
+
46
+ mermaid_block_text.gsub!(/‘/, "'")
47
+ mermaid_block_text.gsub!(/’/, "'")
48
+ mermaid_block_text.gsub!(/“/, '"')
49
+ mermaid_block_text.gsub!(/”/, '"')
50
+
51
+ mermaid_block_text
52
+ }
53
+
54
+ return output_text
55
+ end
56
+
57
+ #
58
+
59
+ def jekyll_pandoc_mermaid_is_enable(config)
60
+ Jekyll::External.require_with_graceful_fail "jekyll-pandoc"
61
+ Jekyll::External.require_with_graceful_fail "jekyll-mermaid"
62
+
63
+ if config['markdown'] != 'Pandoc'
64
+ return false
65
+ elsif config['mermaid'] == nil or config['mermaid']['src'] == nil
66
+ return false
67
+ end
68
+
69
+ return true
70
+ end
71
+
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-pandoc-mermaid
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Jihoon Kim
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-01-31 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: '4.0'
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '4.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '4.0'
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '4.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: jekyll-pandoc
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 2.0.1
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 2.0.1
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 2.0.1
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: 2.0.1
53
+ - !ruby/object:Gem::Dependency
54
+ name: jekyll-mermaid
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.0.0
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 1.0.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.0.0
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: 1.0.0
73
+ description: jekyll-pandoc-mermaid can solve rendering issue that occures when using
74
+ jekyll-pandoc and jekyll-mermaid plugin together
75
+ email: hoonti06@gmail.com
76
+ executables: []
77
+ extensions: []
78
+ extra_rdoc_files: []
79
+ files:
80
+ - lib/jekyll-pandoc-mermaid.rb
81
+ homepage: https://github.com/hoonti06/jekyll-pandoc-mermaid
82
+ licenses:
83
+ - MIT
84
+ metadata: {}
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ requirements: []
100
+ rubygems_version: 3.0.3
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: jekyll-pandoc-mermaid can help to use jekyll-mermaid plugin when using jekyll-pandoc
104
+ plugin
105
+ test_files: []