jekyll-diagrams 0.6.0 → 0.7.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 +4 -4
- data/.travis.yml +5 -1
- data/README.md +196 -45
- data/lib/jekyll-diagrams/block.rb +1 -1
- data/lib/jekyll-diagrams/blockdiag.rb +4 -10
- data/lib/jekyll-diagrams/erd.rb +21 -0
- data/lib/jekyll-diagrams/mermaid.rb +31 -0
- data/lib/jekyll-diagrams/renderer.rb +4 -4
- data/lib/jekyll-diagrams/smcat.rb +31 -0
- data/lib/jekyll-diagrams/syntrax.rb +23 -0
- data/lib/jekyll-diagrams/version.rb +1 -1
- data/lib/jekyll-diagrams/wavedrom.rb +17 -0
- data/lib/jekyll-diagrams.rb +6 -1
- metadata +6 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50b1e58e8ce58f22fef54776c2413abafc5ee1ee16b8ceecd84cf64b8bdfb25c
|
4
|
+
data.tar.gz: e440f946189747d473e4d0cca362a4732b7d1e2fcac94c91d8f0c63e1aaf416b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f62eab1353bd18378dc8b53ade153079fa4b9d99f032a81f5a7130fc15e86fb2727495eaff9e780d48fb8dfb4fc009c6d0d5ecdb1f226e65356da3546d7a615a
|
7
|
+
data.tar.gz: 48ab6a18cf4f93ac5ad50368674c2fb06a0b5ad134f51cadaa46355683751e79dad0e1edf8db60e2a66842c750a7352e49539842cd1ce826f8274be0dc943275
|
data/.travis.yml
CHANGED
@@ -10,11 +10,15 @@ addons:
|
|
10
10
|
apt:
|
11
11
|
packages:
|
12
12
|
- default-jre
|
13
|
+
- gnuplot
|
13
14
|
- graphviz
|
15
|
+
- node
|
16
|
+
- npm
|
14
17
|
- python3
|
15
18
|
- python3-pip
|
16
19
|
- python3-setuptools
|
17
20
|
|
18
21
|
before_install:
|
19
22
|
- sudo pip3 install blockdiag seqdiag actdiag nwdiag
|
20
|
-
- gem update --system && gem install bundler
|
23
|
+
- gem update --system && gem install bundler
|
24
|
+
- npm install -g wavedrom-cli mermaid.cli
|
data/README.md
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
# Jekyll Diagrams
|
2
2
|
|
3
|
-
[](https://travis-ci.com/zhustec/jekyll-diagrams)
|
4
3
|
[](https://rubygems.org/gems/jekyll-diagrams)
|
4
|
+
[](https://travis-ci.com/zhustec/jekyll-diagrams)
|
5
5
|
[](https://depfu.com/repos/zhustec/jekyll-diagrams)
|
6
6
|
[](https://github.com/zhustec/jekyll-diagrams/blob/master/LICENSE)
|
7
7
|
|
8
8
|
Jekyll Diagrams is a jekyll plugins for creating amazing diagrams, including:
|
9
9
|
|
10
|
+
- Blockdiag(Blockdia, Seqdiag, Actdiag, Nwdiag, Rackdiag and Packatdiag)
|
11
|
+
- Erd
|
10
12
|
- Graphviz
|
11
|
-
-
|
13
|
+
- Mermaid
|
12
14
|
- PlantUML
|
15
|
+
- State Machine cat
|
16
|
+
- Syntrax
|
13
17
|
|
14
18
|
## Installation
|
15
19
|
|
@@ -44,47 +48,6 @@ plugins:
|
|
44
48
|
|
45
49
|
## Usage
|
46
50
|
|
47
|
-
### Graphviz
|
48
|
-
|
49
|
-
You need first install graphviz with package manager on your system. Then you can use `graphviz` Liquid Tag to create amazing Graphviz images!
|
50
|
-
|
51
|
-
```text
|
52
|
-
{% graphviz %}
|
53
|
-
digraph {
|
54
|
-
node [shape=circle, style=filled];
|
55
|
-
S [fillcolor=green];
|
56
|
-
A [fillcolor=yellow];
|
57
|
-
B [fillcolor=yellow];
|
58
|
-
C [fillcolor=yellow];
|
59
|
-
D [shape=doublecircle, fillcolor=green];
|
60
|
-
S -> A [label=a];
|
61
|
-
S -> B [label=b];
|
62
|
-
A -> D [label=c];
|
63
|
-
B -> D [label=d];
|
64
|
-
}
|
65
|
-
{% endgraphviz %}
|
66
|
-
```
|
67
|
-
|
68
|
-
#### Configuration
|
69
|
-
|
70
|
-
A simple configuration example is shown below:
|
71
|
-
|
72
|
-
```yaml
|
73
|
-
jekyll-diagrams:
|
74
|
-
graphviz:
|
75
|
-
default_layout: dot
|
76
|
-
graph_attribute: color=red
|
77
|
-
node_attribute:
|
78
|
-
- color=blue
|
79
|
-
- fillcolor=red
|
80
|
-
edge_attribute:
|
81
|
-
color: red
|
82
|
-
fillcolor: blue
|
83
|
-
```
|
84
|
-
|
85
|
-
- `default_layout`: Change the default layout here.
|
86
|
-
- `graph/node/edge_attribute`: Default graph/node/edge attribute, can be String(when just one attribute), Array or Hash.
|
87
|
-
|
88
51
|
### Blockdiag
|
89
52
|
|
90
53
|
Blockdiag contains:
|
@@ -96,7 +59,16 @@ Blockdiag contains:
|
|
96
59
|
* `rackdiag` : generates rack structure diagram
|
97
60
|
* `packetdiag` : generates packet header diagram
|
98
61
|
|
99
|
-
|
62
|
+
#### Prerequisites
|
63
|
+
|
64
|
+
- Install it via pip or other methods
|
65
|
+
- Set path properly, make sure your system can find it
|
66
|
+
|
67
|
+
```bash
|
68
|
+
$ pip install blockdiag seqdiag actiag nwdiag
|
69
|
+
```
|
70
|
+
|
71
|
+
#### Examples
|
100
72
|
|
101
73
|
```text
|
102
74
|
{% blockdiag %}
|
@@ -122,7 +94,7 @@ seqdiag {
|
|
122
94
|
{% endseqdiag %}
|
123
95
|
```
|
124
96
|
|
125
|
-
####
|
97
|
+
#### Configurations
|
126
98
|
|
127
99
|
```yaml
|
128
100
|
jekyll-diagrams:
|
@@ -134,8 +106,116 @@ jekyll-diagrams:
|
|
134
106
|
size: 320x400
|
135
107
|
```
|
136
108
|
|
109
|
+
### Erd
|
110
|
+
|
111
|
+
#### Prerequisites
|
112
|
+
|
113
|
+
- Install Graphviz
|
114
|
+
- [**Install Erd**](https://github.com/BurntSushi/erd#installation)
|
115
|
+
|
116
|
+
#### Examples
|
117
|
+
|
118
|
+
```text
|
119
|
+
{% erd %}
|
120
|
+
[Person]
|
121
|
+
*name
|
122
|
+
height
|
123
|
+
weight
|
124
|
+
`birth date`
|
125
|
+
+birth_place_id
|
126
|
+
|
127
|
+
[`Birth Place`]
|
128
|
+
*id
|
129
|
+
`birth city`
|
130
|
+
'birth state'
|
131
|
+
"birth country"
|
132
|
+
|
133
|
+
Person *--1 `Birth Place`
|
134
|
+
{% enderd %}
|
135
|
+
```
|
136
|
+
|
137
|
+
#### Configurations
|
138
|
+
|
139
|
+
```yaml
|
140
|
+
jekyll-diagrams:
|
141
|
+
erd:
|
142
|
+
config: path_to_config_file
|
143
|
+
edge: 'one type of edge: compound, noedge, ortho, poly, spline'
|
144
|
+
```
|
145
|
+
|
146
|
+
### Graphviz
|
147
|
+
|
148
|
+
#### Prerequisites
|
149
|
+
|
150
|
+
- Install it.
|
151
|
+
|
152
|
+
#### Examples
|
153
|
+
|
154
|
+
```text
|
155
|
+
{% graphviz %}
|
156
|
+
digraph {
|
157
|
+
node [shape=circle, style=filled];
|
158
|
+
S [fillcolor=green];
|
159
|
+
A [fillcolor=yellow];
|
160
|
+
B [fillcolor=yellow];
|
161
|
+
C [fillcolor=yellow];
|
162
|
+
D [shape=doublecircle, fillcolor=green];
|
163
|
+
S -> A [label=a];
|
164
|
+
S -> B [label=b];
|
165
|
+
A -> D [label=c];
|
166
|
+
B -> D [label=d];
|
167
|
+
}
|
168
|
+
{% endgraphviz %}
|
169
|
+
```
|
170
|
+
|
171
|
+
#### Configurations
|
172
|
+
|
173
|
+
```yaml
|
174
|
+
jekyll-diagrams:
|
175
|
+
graphviz:
|
176
|
+
default_layout: dot
|
177
|
+
graph_attribute: color=red
|
178
|
+
node_attribute:
|
179
|
+
- color=blue
|
180
|
+
- fillcolor=red
|
181
|
+
edge_attribute:
|
182
|
+
color: red
|
183
|
+
fillcolor: blue
|
184
|
+
```
|
185
|
+
|
186
|
+
- `default_layout`: Change the default layout here.
|
187
|
+
- `graph/node/edge_attribute`: Default graph/node/edge attribute, can be String(when just one attribute), Array or Hash.
|
188
|
+
|
189
|
+
### Mermaid
|
190
|
+
|
191
|
+
#### Prerequisites
|
192
|
+
|
193
|
+
- [**Install mermaid.cli**](https://github.com/mermaidjs/mermaid.cli#mermaidcli)
|
194
|
+
|
195
|
+
#### Configurations
|
196
|
+
|
197
|
+
```yaml
|
198
|
+
jekyll-diagrams:
|
199
|
+
mermaid:
|
200
|
+
theme: default,
|
201
|
+
width: 800,
|
202
|
+
height: 600,
|
203
|
+
backgroundColor: white
|
204
|
+
```
|
205
|
+
|
206
|
+
- `theme`: Theme of the chart, could be default, forest, dark or neutral. (default: default)
|
207
|
+
- `width`: Width of the page. (default: 800)
|
208
|
+
- `height`: Height of the page. (default: 600)
|
209
|
+
- `backgroundColor`: Background color. Example: transparent, red, '#F0F0F0'. (default: white)
|
210
|
+
|
137
211
|
### PlantUML
|
138
212
|
|
213
|
+
#### Prerequisites
|
214
|
+
|
215
|
+
- Java Runtime
|
216
|
+
|
217
|
+
#### Examples
|
218
|
+
|
139
219
|
```text
|
140
220
|
{% plantuml %}
|
141
221
|
@startuml
|
@@ -149,6 +229,77 @@ Car -- Person : < owns
|
|
149
229
|
{% endplantuml %}
|
150
230
|
```
|
151
231
|
|
232
|
+
### State Machine cat
|
233
|
+
|
234
|
+
#### Prerequisites
|
235
|
+
|
236
|
+
- Nodejs Runtime
|
237
|
+
- Install it `npm install [-g] state-machine-cat`
|
238
|
+
- Set path
|
239
|
+
|
240
|
+
#### Examples
|
241
|
+
|
242
|
+
```text
|
243
|
+
{% smcat %}
|
244
|
+
initial,
|
245
|
+
"tape player off",
|
246
|
+
"tape player on" {
|
247
|
+
stopped => playing : play;
|
248
|
+
playing => stopped : stop;
|
249
|
+
playing => paused : pause;
|
250
|
+
paused => playing : pause;
|
251
|
+
paused => stopped : stop;
|
252
|
+
};
|
253
|
+
|
254
|
+
initial => "tape player off";
|
255
|
+
"tape player off" => stopped : power;
|
256
|
+
"tape player on" => "tape player off" : power;
|
257
|
+
{% endsmcat %}
|
258
|
+
```
|
259
|
+
|
260
|
+
#### Configuration
|
261
|
+
|
262
|
+
```yaml
|
263
|
+
jekyll-diagrams:
|
264
|
+
smcat:
|
265
|
+
input-type: smcat
|
266
|
+
engine: dot
|
267
|
+
direction: top-down
|
268
|
+
```
|
269
|
+
|
270
|
+
- `input-type`: smcat|scxml|json (default: "smcat")
|
271
|
+
- `engine`: dot|circo|fdp|neato|osage|twopi (default: "dot")
|
272
|
+
- `direction`: top-down|bottom-top|left-right|right-left (default: "top-down")
|
273
|
+
|
274
|
+
### Syntrax
|
275
|
+
|
276
|
+
#### Prerequisites
|
277
|
+
|
278
|
+
- [Install it with Pango and PangoCairo](https://kevinpt.github.io/syntrax/#requirements)
|
279
|
+
|
280
|
+
#### Examples
|
281
|
+
|
282
|
+
```text
|
283
|
+
{% syntrax %}
|
284
|
+
indentstack(10,
|
285
|
+
line(opt('-'), choice('0', line('1-9', loop(None, '0-9'))),
|
286
|
+
opt('.', loop('0-9', None))),
|
287
|
+
|
288
|
+
line(opt(choice('e', 'E'), choice(None, '+', '-'), loop('0-9', None)))
|
289
|
+
)
|
290
|
+
{% endsyntrax %}
|
291
|
+
```
|
292
|
+
|
293
|
+
#### Configurations
|
294
|
+
|
295
|
+
```yaml
|
296
|
+
jekyll-diagrams:
|
297
|
+
syntrax:
|
298
|
+
scale: 'Scale image'
|
299
|
+
style: 'Style config file'
|
300
|
+
transparent: 'Transparent background'
|
301
|
+
```
|
302
|
+
|
152
303
|
## Contributing
|
153
304
|
|
154
305
|
Bug reports and pull requests are welcome on GitHub at https://github.com/zhustec/jekyll-diagrams. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
@@ -7,7 +7,7 @@ module Jekyll
|
|
7
7
|
def render_svg(code, config)
|
8
8
|
command = build_command(config)
|
9
9
|
|
10
|
-
render_with_tempfile(command, code
|
10
|
+
render_with_tempfile(command, code) do |command, input, output|
|
11
11
|
"#{command} #{input} -o #{output}"
|
12
12
|
end
|
13
13
|
end
|
@@ -18,16 +18,10 @@ module Jekyll
|
|
18
18
|
|
19
19
|
def build_command(config)
|
20
20
|
command = "#{block_name} -Tsvg --nodoctype"
|
21
|
+
command << ' --antialias' if config.has_key?('antialias')
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
if antialias && antialias != 'false'
|
25
|
-
command << ' --antialias'
|
26
|
-
end
|
27
|
-
|
28
|
-
%w(config font fontmap size).each do |key|
|
29
|
-
value = config.fetch(key, nil)
|
30
|
-
command << " --#{key}=#{value}" if value
|
23
|
+
%w(config font fontmap size).each do |conf|
|
24
|
+
command << " --#{conf}=#{config[conf]}" if config.has_key?(conf)
|
31
25
|
end
|
32
26
|
|
33
27
|
command
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Diagrams
|
3
|
+
class ErdBlock < Block
|
4
|
+
def render_svg(code, config)
|
5
|
+
render_with_stdin_stdout(build_command(config), code)
|
6
|
+
end
|
7
|
+
|
8
|
+
def build_command(config)
|
9
|
+
command = 'erd --fmt=svg'
|
10
|
+
|
11
|
+
%w(config edge).each do |conf|
|
12
|
+
command << " --#{conf}=#{config[conf]}" if config.has_key?(conf)
|
13
|
+
end
|
14
|
+
|
15
|
+
command
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Liquid::Template.register_tag(:erb, Jekyll::Diagrams::ErdBlock)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Diagrams
|
3
|
+
class MermaidBlock < Block
|
4
|
+
CONFIGURATIONS = {
|
5
|
+
'theme' => 'default',
|
6
|
+
'width' => 800,
|
7
|
+
'height' => 600,
|
8
|
+
'backgroundColor' => 'white'
|
9
|
+
}.freeze
|
10
|
+
|
11
|
+
def render_svg(code, config)
|
12
|
+
render_with_tempfile(build_command(config), code) do |command, input, output|
|
13
|
+
"#{command} --input #{input} --output #{output}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def build_command(config)
|
18
|
+
command = 'mmdc'
|
19
|
+
command << ' --transparent' if config.has_key?('transparent')
|
20
|
+
|
21
|
+
CONFIGURATIONS.merge(config).each do |conf, value|
|
22
|
+
command << " --#{conf} #{value}"
|
23
|
+
end
|
24
|
+
|
25
|
+
command
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Liquid::Template.register_tag(:mermaid, Jekyll::Diagrams::MermaidBlock)
|
@@ -10,8 +10,8 @@ module Jekyll
|
|
10
10
|
render_with_command(command, :stdout, stdin_data: content, binmode: true)
|
11
11
|
end
|
12
12
|
|
13
|
-
def render_with_stdin(command, content
|
14
|
-
Tempfile.open(['jekyll_diagrams_output', "
|
13
|
+
def render_with_stdin(command, content)
|
14
|
+
Tempfile.open(['jekyll_diagrams_output', ".svg"]) do |output|
|
15
15
|
output.close
|
16
16
|
command = yield command, output.path
|
17
17
|
|
@@ -19,11 +19,11 @@ module Jekyll
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
def render_with_tempfile(command, content
|
22
|
+
def render_with_tempfile(command, content)
|
23
23
|
Tempfile.open('jekyll_diagrams_input') do |input|
|
24
24
|
File.write(input.path, content)
|
25
25
|
|
26
|
-
Tempfile.open(['jekyll_diagrams_output', "
|
26
|
+
Tempfile.open(['jekyll_diagrams_output', ".svg"]) do |output|
|
27
27
|
output.close
|
28
28
|
command = yield command, input.path, output.path
|
29
29
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Diagrams
|
3
|
+
class SMCatBlock < Block
|
4
|
+
CONFIGURATIONS = {
|
5
|
+
'input-type' => 'smcat',
|
6
|
+
'engine' => 'dot',
|
7
|
+
'direction' => 'top-down'
|
8
|
+
}.freeze
|
9
|
+
|
10
|
+
def render_svg(code, config)
|
11
|
+
svg = render_with_tempfile(build_command(config), code) do |command, input, output|
|
12
|
+
"#{command} #{input} --output-to #{output}"
|
13
|
+
end
|
14
|
+
|
15
|
+
svg.sub!(/^<\?xml(([^>]|\n)*>\n?){4}/, '')
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_command(config)
|
19
|
+
command = 'smcat'
|
20
|
+
|
21
|
+
CONFIGURATIONS.merge(config).each do |conf, value|
|
22
|
+
command << " --#{conf} #{value}"
|
23
|
+
end
|
24
|
+
|
25
|
+
command
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Liquid::Template.register_tag(:smcat, Jekyll::Diagrams::SMCatBlock)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Diagrams
|
3
|
+
class SyntraxBlock < Block
|
4
|
+
def render_svg(code, config)
|
5
|
+
render_with_tempfile(build_command(config), code) do |command, input, output|
|
6
|
+
"#{command} --input #{input} --output #{output}"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def build_command(config)
|
11
|
+
command = 'syntrax'
|
12
|
+
|
13
|
+
%w(scale style).each do |conf|
|
14
|
+
command << " --#{conf} #{config[conf]}" if config.has_key?(conf)
|
15
|
+
end
|
16
|
+
|
17
|
+
command
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
Liquid::Template.register_tag(:syntrax, Jekyll::Diagrams::SyntraxBlock)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Diagrams
|
3
|
+
class WavedromBlock < Block
|
4
|
+
def render_svg(code, config)
|
5
|
+
render_with_tempfile(build_command(config), code) do |command, input, output|
|
6
|
+
"#{command} --input #{input} --svg #{output}"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def build_command(config)
|
11
|
+
'wavedrom-cli'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Liquid::Template.register_tag(:wavedrom, Jekyll::Diagrams::WavedromBlock)
|
data/lib/jekyll-diagrams.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
require_relative 'jekyll-diagrams/util'
|
2
2
|
require_relative 'jekyll-diagrams/renderer'
|
3
3
|
require_relative 'jekyll-diagrams/block'
|
4
|
+
|
4
5
|
require_relative 'jekyll-diagrams/blockdiag'
|
6
|
+
require_relative 'jekyll-diagrams/erd'
|
5
7
|
require_relative 'jekyll-diagrams/graphviz'
|
6
|
-
require_relative 'jekyll-diagrams/
|
8
|
+
require_relative 'jekyll-diagrams/mermaid'
|
9
|
+
require_relative 'jekyll-diagrams/plantuml'
|
10
|
+
require_relative 'jekyll-diagrams/smcat'
|
11
|
+
require_relative 'jekyll-diagrams/wavedrom'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-diagrams
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zhustec
|
@@ -89,11 +89,16 @@ files:
|
|
89
89
|
- lib/jekyll-diagrams.rb
|
90
90
|
- lib/jekyll-diagrams/block.rb
|
91
91
|
- lib/jekyll-diagrams/blockdiag.rb
|
92
|
+
- lib/jekyll-diagrams/erd.rb
|
92
93
|
- lib/jekyll-diagrams/graphviz.rb
|
94
|
+
- lib/jekyll-diagrams/mermaid.rb
|
93
95
|
- lib/jekyll-diagrams/plantuml.rb
|
94
96
|
- lib/jekyll-diagrams/renderer.rb
|
97
|
+
- lib/jekyll-diagrams/smcat.rb
|
98
|
+
- lib/jekyll-diagrams/syntrax.rb
|
95
99
|
- lib/jekyll-diagrams/util.rb
|
96
100
|
- lib/jekyll-diagrams/version.rb
|
101
|
+
- lib/jekyll-diagrams/wavedrom.rb
|
97
102
|
- test/test_helper.rb
|
98
103
|
- vendor/plantuml.1.2020.1.jar
|
99
104
|
homepage: https://github.com/zhustec/jekyll-diagrams
|