jekyll-local-diagram 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/ext/plantuml.jar +0 -0
- data/lib/block/mathjax-block.rb +15 -0
- data/lib/block/mermaid-block.rb +16 -0
- data/lib/block/plantuml-block.rb +16 -0
- data/lib/jekyll-local-diagram.rb +52 -0
- metadata +76 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: de548cfc1a4926b2ec2ac5ca55066f8170ffc17f729dc72b226a4d49aa17d9e9
|
4
|
+
data.tar.gz: 2133a7317648f1b213463ccb7d67ceb88022c64e35af3a9f9dfb8dd941426e88
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 04aeb7e17b67b3a5d3d8cf81dcdd4634c95466428f759ae78f5e726f5abc99e8bb7bcf31648e1525b54f032972e060b0d70bc5bfac313c3f5a2ebd09e33e6808
|
7
|
+
data.tar.gz: 1fc3f0d3dc30fae210b900879ed1651eecdecf54b6e7f2fed1d3deed5cbf8783dbeab3fe478f41a868f885a1a035ddbc6b98dc0e5b2e4b86e14856a9f968ad73
|
data/ext/plantuml.jar
ADDED
Binary file
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module JekyllLocalDiagram
|
2
|
+
class MathJaxBlock < JekyllLocalDiagramBlock
|
3
|
+
def initialize(tag_name, markup, tokens)
|
4
|
+
super
|
5
|
+
@ext = 'tex'
|
6
|
+
@blockclass = 'mathjax'
|
7
|
+
end
|
8
|
+
|
9
|
+
def build_cmd(input, output)
|
10
|
+
"tex2svg \"#{File.read(input)}\"> #{output}"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
Liquid::Template.register_tag('mathjax', JekyllLocalDiagram::MathJaxBlock)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module JekyllLocalDiagram
|
2
|
+
class MermaidBlock < JekyllLocalDiagram::JekyllLocalDiagramBlock
|
3
|
+
def initialize(tag_name, markup, tokens)
|
4
|
+
super
|
5
|
+
@ext = 'mmd'
|
6
|
+
@blockclass = 'mermaid'
|
7
|
+
@puppetercfg = File.join(File.expand_path(File.join(File.dirname(__FILE__), '../..')), '/cfg/puppeteer.json')
|
8
|
+
end
|
9
|
+
|
10
|
+
def build_cmd(input, output)
|
11
|
+
"mmdc -i #{input} -o #{output} -p #{@puppetercfg}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Liquid::Template.register_tag('mermaid', JekyllLocalDiagram::MermaidBlock)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module JekyllLocalDiagram
|
2
|
+
class PlantumlBlock < JekyllLocalDiagram::JekyllLocalDiagramBlock
|
3
|
+
def initialize(tag_name, markup, tokens)
|
4
|
+
super
|
5
|
+
@ext = 'uml'
|
6
|
+
@blockclass = 'plantuml'
|
7
|
+
@jarpath = File.join(File.expand_path(File.join(File.dirname(__FILE__), '../..')), '/ext/plantuml.jar')
|
8
|
+
end
|
9
|
+
|
10
|
+
def build_cmd(input, output)
|
11
|
+
"java -jar #{@jarpath} -tsvg -o #{File.dirname(output)} #{input}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Liquid::Template.register_tag('plantuml', JekyllLocalDiagram::PlantumlBlock)
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'liquid'
|
4
|
+
require 'digest'
|
5
|
+
require 'fileutils'
|
6
|
+
require 'logger'
|
7
|
+
|
8
|
+
module JekyllLocalDiagram
|
9
|
+
class JekyllLocalDiagramBlock < Liquid::Block
|
10
|
+
def initialize(tag_name, markup, tokens)
|
11
|
+
super
|
12
|
+
@html = (markup or '').strip
|
13
|
+
@logger = Logger.new(STDOUT)
|
14
|
+
@logger.level = Logger::DEBUG
|
15
|
+
end
|
16
|
+
|
17
|
+
def render(context)
|
18
|
+
site = context.registers[:site]
|
19
|
+
name = Digest::MD5.hexdigest(super)
|
20
|
+
path = File.join('assets', 'images', @ext)
|
21
|
+
type = 'svg'
|
22
|
+
mimetype = 'svg+xml'
|
23
|
+
imgfile = "#{name}.#{type}"
|
24
|
+
imgpath = File.join(site.source, path)
|
25
|
+
if !File.exists?(File.join(imgpath, imgfile))
|
26
|
+
txtfile = File.join(imgpath, "#{name}.#{@ext}")
|
27
|
+
img = File.join(imgpath, imgfile)
|
28
|
+
if File.exists?(img)
|
29
|
+
@logger.debug("File #{imgfile} already exists (#{File.size(img)} bytes)")
|
30
|
+
else
|
31
|
+
FileUtils.mkdir_p(imgpath)
|
32
|
+
File.open(txtfile, 'w') { |f|
|
33
|
+
f.write(super)
|
34
|
+
}
|
35
|
+
cmd = build_cmd(txtfile, img)
|
36
|
+
@logger.debug("Executing #{@blockclass} command: #{cmd}")
|
37
|
+
system(cmd) or raise "#{@blockclass} error: #{super}"
|
38
|
+
site.static_files << Jekyll::StaticFile.new(
|
39
|
+
site, site.source, path, imgfile
|
40
|
+
)
|
41
|
+
@logger.debug("File #{imgfile} created (#{File.size(img)} bytes)")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
"<p><object data='#{site.baseurl}/#{path}/#{imgfile}' type='image/#{mimetype}' #{@html} class='#{@blockclass}'></object></p>"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
require 'block/plantuml-block'
|
50
|
+
require 'block/mermaid-block'
|
51
|
+
require 'block/mathjax-block'
|
52
|
+
|
metadata
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-local-diagram
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Steve Knight
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-09-29 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.2.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.2.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: liquid
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.0'
|
41
|
+
description:
|
42
|
+
email: steve@hackinghat.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- ext/plantuml.jar
|
48
|
+
- lib/block/mathjax-block.rb
|
49
|
+
- lib/block/mermaid-block.rb
|
50
|
+
- lib/block/plantuml-block.rb
|
51
|
+
- lib/jekyll-local-diagram.rb
|
52
|
+
homepage: https://github.com/hackinghat/jekyll-local-diagram
|
53
|
+
licenses:
|
54
|
+
- MIT
|
55
|
+
metadata: {}
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options: []
|
58
|
+
require_paths:
|
59
|
+
- lib
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
requirements: []
|
71
|
+
rubygems_version: 3.3.7
|
72
|
+
signing_key:
|
73
|
+
specification_version: 4
|
74
|
+
summary: Generate local diagrams with support for non-UML diagrams, to be used with
|
75
|
+
jekyll-local-diagrams-build-action
|
76
|
+
test_files: []
|