jekyll-diagrams 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52a77bb73a18b1e0b3d922615f50a062ce500c7f7ad1d220b3f648ad1cba8ba1
4
- data.tar.gz: 45b4d1695a7494c8a4ecfd70b0d32f33dd31007b1d63408d44f5762d5fb47639
3
+ metadata.gz: 939c351c21994ececde693c60b108ddd81d8fd98f3dacc11a7722b8972f294bf
4
+ data.tar.gz: cb597bafa191ce822a239ab565718ae4efce683204bd45a39ed4e61f656e6b91
5
5
  SHA512:
6
- metadata.gz: 012db758b38a586e03675b7af7c37ae88628361180d5ad1dd09aa6fb029c1cbd80eb98710542de4a490796cb45303aa1c5b3377536d2a8bfddf23cbc4fd80ba1
7
- data.tar.gz: 0b62461401ae935a95c74e34412bcdb159ddf7b5f8c83d478e496d103f65d6643b7279ea12d98e8a9cdd6387e922a2c2aec1db1a6b4081d2d26324e9dea5bf19
6
+ metadata.gz: f19c1dd680ffdd9f11af3ea082e38759d120b63d163ecd9bba19ab27cfd185c08eca82ee036ae9f675597ccd58db60eabecac8abb9d0dfdf7f78b312ecc1e6fa
7
+ data.tar.gz: f6675947274f26d32558e06446ed3617fda8c183287aa54df9835df9446fccdcbb1d8eb7fa3126751ba70192f0e5de1b3b4362ccbf46fe4bb60eebe17a4130c4
data/.gitignore CHANGED
@@ -5,3 +5,4 @@
5
5
  /test/dest/
6
6
  /test/fixtures/.jekyll-cache/
7
7
  /tmp/
8
+ /*.gem
data/.travis.yml CHANGED
@@ -4,10 +4,12 @@ rvm:
4
4
  - 2.4
5
5
  - 2.5
6
6
  - 2.6
7
+ - 2.7
7
8
 
8
9
  addons:
9
10
  apt:
10
11
  packages:
12
+ - default-jre
11
13
  - graphviz
12
14
  - python3
13
15
  - python3-pip
@@ -15,4 +17,4 @@ addons:
15
17
 
16
18
  before_install:
17
19
  - sudo pip3 install blockdiag seqdiag actdiag nwdiag
18
- - gem update --system && gem install bundler
20
+ - gem update --system && gem install bundler
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gemspec
3
+ gemspec
data/LICENSE CHANGED
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
21
+ THE SOFTWARE.
data/README.md CHANGED
@@ -9,6 +9,7 @@ Jekyll Diagrams is a jekyll plugins for creating amazing diagrams, including:
9
9
 
10
10
  - Graphviz
11
11
  - Blockdiag, Seqdiag, Actdiag and Nwdiag
12
+ - PlantUML
12
13
 
13
14
  ## Installation
14
15
 
@@ -47,7 +48,7 @@ plugins:
47
48
 
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!
49
50
 
50
- ```
51
+ ```text
51
52
  {% graphviz %}
52
53
  digraph {
53
54
  node [shape=circle, style=filled];
@@ -64,6 +65,26 @@ digraph {
64
65
  {% endgraphviz %}
65
66
  ```
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
+
67
88
  ### Blockdiag
68
89
 
69
90
  Blockdiag contains:
@@ -77,7 +98,7 @@ Blockdiag contains:
77
98
 
78
99
  You need first install it and set path properly to make sure your system can find it. Then you can use `blockdiag`, `seqdiag`, `actdiag`, `nwdiag`, `rackdiag`, `packetdiag` Liquid Tag.
79
100
 
80
- ```
101
+ ```text
81
102
  {% blockdiag %}
82
103
  blockdiag {
83
104
  A -> B -> C -> D;
@@ -88,7 +109,7 @@ blockdiag {
88
109
 
89
110
  And `seqdiag`:
90
111
 
91
- ```
112
+ ```text
92
113
  {% seqdiag %}
93
114
  seqdiag {
94
115
  browser -> webserver [label = "GET /index.html"];
@@ -101,27 +122,32 @@ seqdiag {
101
122
  {% endseqdiag %}
102
123
  ```
103
124
 
104
- ## Configuration
105
-
106
- You can to provide a configuration, this is optional.
107
-
108
- A simple example configuration is shown below:
125
+ #### Configuration
109
126
 
110
127
  ```yaml
111
- diagrams:
112
- graphviz:
113
- engine: dot
128
+ jekyll-diagrams:
114
129
  blockdiag:
115
- options: '--antialias'
130
+ antialias: true
131
+ config: configuration_file
132
+ font: your_custom_font
133
+ fontmap: your_custom_font
134
+ size: 320x400
116
135
  ```
117
136
 
118
- ### Graphviz
137
+ ### PlantUML
119
138
 
120
- `engine` is the default image render engine. Default is set to `dot`.
139
+ ```text
140
+ {% plantuml %}
141
+ @startuml
142
+ class Car
121
143
 
122
- ### Blockdiag
144
+ Driver - Car : drives >
145
+ Car *- Wheel : have 4 >
146
+ Car -- Person : < owns
123
147
 
124
- `options` is the command line options, and will be appended to the command.
148
+ @enduml
149
+ {% endplantuml %}
150
+ ```
125
151
 
126
152
  ## Contributing
127
153
 
@@ -129,4 +155,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/zhuste
129
155
 
130
156
  ## License
131
157
 
132
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
158
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile CHANGED
@@ -7,4 +7,4 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task default: :test
10
+ task default: :test
@@ -5,24 +5,21 @@ require 'jekyll-diagrams/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'jekyll-diagrams'
8
- spec.summary = 'Jekyll plugins for diagrams support'
9
8
  spec.version = Jekyll::Diagrams::VERSION
10
9
  spec.authors = ['zhustec']
11
10
  spec.email = ['zhustec@foxmail.com']
12
11
  spec.homepage = 'https://github.com/zhustec/jekyll-diagrams'
12
+ spec.description = 'Jekyll plugins for diagrams support.'
13
+ spec.summary = 'Jekyll plugins for diagrams support, including Graphviz, Blockdiag, PlantUML and so on.'
13
14
  spec.license = 'MIT'
14
- spec.description = 'Jekyll plugins for diagrams support, including Graphviz, Blockdiag, Seqdiag and so on.'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.test_files = spec.files.grep(%r!^(test|spec|features)!)
18
-
19
18
  spec.require_paths = ['lib']
20
19
 
21
- spec.required_ruby_version = '>= 2.3.0'
22
-
23
20
  spec.add_dependency 'jekyll', '>= 3.7', '< 5.0'
24
21
 
25
22
  spec.add_development_dependency 'bundler'
26
23
  spec.add_development_dependency 'rake'
27
24
  spec.add_development_dependency 'minitest', '~> 5.0'
28
- end
25
+ end
@@ -1 +1,6 @@
1
- require 'jekyll/diagrams'
1
+ require_relative 'jekyll-diagrams/util'
2
+ require_relative 'jekyll-diagrams/renderer'
3
+ require_relative 'jekyll-diagrams/block'
4
+ require_relative 'jekyll-diagrams/blockdiag'
5
+ require_relative 'jekyll-diagrams/graphviz'
6
+ require_relative 'jekyll-diagrams/plantuml'
@@ -0,0 +1,24 @@
1
+ module Jekyll
2
+ module Diagrams
3
+ class Block < Liquid::Block
4
+ include Renderer
5
+
6
+ def render(context)
7
+ svg = render_svg(super.to_s, read_config(context))
8
+ wrap_class(svg)
9
+ end
10
+
11
+ def render_svg(content, config)
12
+ raise 'Not Implemented'
13
+ end
14
+
15
+ def read_config(context)
16
+ Util.config_for(context, block_name)
17
+ end
18
+
19
+ def wrap_class(content)
20
+ "<div class='diagrams #{block_name}'>#{content}</div>"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ require 'open3'
2
+ require 'tempfile'
3
+
4
+ module Jekyll
5
+ module Diagrams
6
+ class BlockdiagBlock < Block
7
+ def render_svg(code, config)
8
+ command = build_command(config)
9
+
10
+ render_with_tempfile(command, code, :svg) do |command, input, output|
11
+ "#{command} #{input} -o #{output}"
12
+ end
13
+ end
14
+
15
+ def read_config(context)
16
+ Util.config_for(context, 'blockdiag').merge(Util.config_for(context, block_name))
17
+ end
18
+
19
+ def build_command(config)
20
+ command = "#{block_name} -Tsvg --nodoctype"
21
+
22
+ antialias = config.fetch('antialias', false)
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
31
+ end
32
+
33
+ command
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ %i(blockdiag seqdiag actdiag nwdiag rackdiag packetdiag).each do |tag|
40
+ Liquid::Template.register_tag(tag, Jekyll::Diagrams::BlockdiagBlock)
41
+ end
@@ -0,0 +1,42 @@
1
+ module Jekyll
2
+ module Diagrams
3
+ class GraphvizBlock < Block
4
+ CONFIGRATIONS = {
5
+ 'K' => 'default_layout',
6
+ 'G' => 'graph_attribute',
7
+ 'N' => 'node_attribute',
8
+ 'E' => 'edge_attribute'
9
+ }.freeze
10
+
11
+ def render_svg(code, config)
12
+ svg = render_with_stdin_stdout(build_command(config), code)
13
+ svg.sub!(/^<\?xml(([^>]|\n)*>\n?){4}/, '')
14
+ end
15
+
16
+ def build_command(config)
17
+ command = 'dot -Tsvg'
18
+
19
+ CONFIGRATIONS.each do |prefix, conf|
20
+ next unless config.has_key?(conf)
21
+
22
+ attrs = config[conf]
23
+
24
+ attrs = case attrs
25
+ when String
26
+ attrs
27
+ when Array
28
+ attrs.join(" -#{prefix}")
29
+ when Hash
30
+ attrs.map { |k, v| "#{k}=#{v}" }.join(" -#{prefix}")
31
+ end
32
+
33
+ command << " -#{prefix}#{attrs}"
34
+ end
35
+
36
+ command
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ Liquid::Template.register_tag(:graphviz, Jekyll::Diagrams::GraphvizBlock)
@@ -0,0 +1,19 @@
1
+ module Jekyll
2
+ module Diagrams
3
+ class PlantUMLBlock < 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
+ options = 'java'
10
+ options << ' -Djava.awt.headless=true'
11
+ options << ' -jar '
12
+ options << Util.java_classpath('plantuml.1.2020.1.jar')
13
+ options << ' -tsvg -pipe'
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ Liquid::Template.register_tag(:plantuml, Jekyll::Diagrams::PlantUMLBlock)
@@ -0,0 +1,46 @@
1
+ require 'open3'
2
+ require 'tempfile'
3
+
4
+ module Jekyll
5
+ module Diagrams
6
+ module Renderer
7
+ def render_with_stdin_stdout(command, content)
8
+ command = yield command if block_given?
9
+
10
+ render_with_command(command, :stdout, stdin_data: content, binmode: true)
11
+ end
12
+
13
+ def render_with_stdin(command, content, format)
14
+ Tempfile.open(['jekyll_diagrams_output', ".#{format}"]) do |output|
15
+ output.close
16
+ command = yield command, output.path
17
+
18
+ render_with_command(command, output.path, stdin_data: content)
19
+ end
20
+ end
21
+
22
+ def render_with_tempfile(command, content, format)
23
+ Tempfile.open('jekyll_diagrams_input') do |input|
24
+ File.write(input.path, content)
25
+
26
+ Tempfile.open(['jekyll_diagrams_output', ".#{format}"]) do |output|
27
+ output.close
28
+ command = yield command, input.path, output.path
29
+
30
+ render_with_command(command, output.path)
31
+ end
32
+ end
33
+ end
34
+
35
+ def render_with_command(command, output, options = {})
36
+ stdout, stderr, status = Open3.capture3(command, options)
37
+
38
+ if !status.success?
39
+ raise "#{command} failed: #{stdout.empty? ? stderr : stdout}"
40
+ end
41
+
42
+ output == :stdout ? stdout : File.read(output)
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,32 @@
1
+ module Jekyll
2
+ module Diagrams
3
+ module Util
4
+ class << self
5
+ def diagrams_config(context)
6
+ site_config = context.registers[:site].config
7
+ new_config = site_config.fetch('jekyll-diagrams', {})
8
+ old_config = site_config.fetch('diagrams', {})
9
+
10
+ return new_config if old_config.empty?
11
+
12
+ Jekyll.warn "Configuration `diagram` in _config.yml will be depreated"
13
+ Jekyll.warn " Rename it to `jekyll-diagram` instead."
14
+
15
+ old_config.merge(new_config)
16
+ end
17
+
18
+ def config_for(context, name)
19
+ diagrams_config(context).fetch(name, {})
20
+ end
21
+
22
+ def java_classpath(jar)
23
+ File.join(vendor_path, jar)
24
+ end
25
+
26
+ def vendor_path
27
+ File.expand_path('../../vendor', __dir__)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Diagrams
3
- VERSION = '0.5.1'
3
+ VERSION = '0.6.0'
4
4
  end
5
- end
5
+ end
data/test/test_helper.rb CHANGED
@@ -2,17 +2,4 @@ require 'jekyll'
2
2
  require 'fileutils'
3
3
  require File.expand_path('../lib/jekyll-diagrams', __dir__)
4
4
 
5
- Jekyll.logger.log_level = :error
6
-
7
- SOURCE_DIR = File.expand_path("fixtures", __dir__)
8
- DEST_DIR = File.expand_path("dest", __dir__)
9
-
10
- def source_dir(*files)
11
- File.join(SOURCE_DIR, *files)
12
- end
13
-
14
- def dest_dir(*files)
15
- File.join(DEST_DIR, *files)
16
- end
17
-
18
- require 'minitest/autorun'
5
+ require 'minitest/autorun'
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-diagrams
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - zhustec
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-01 00:00:00.000000000 Z
11
+ date: 2020-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -72,8 +72,7 @@ dependencies:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '5.0'
75
- description: Jekyll plugins for diagrams support, including Graphviz, Blockdiag, Seqdiag
76
- and so on.
75
+ description: Jekyll plugins for diagrams support.
77
76
  email:
78
77
  - zhustec@foxmail.com
79
78
  executables: []
@@ -88,16 +87,15 @@ files:
88
87
  - Rakefile
89
88
  - jekyll-diagrams.gemspec
90
89
  - lib/jekyll-diagrams.rb
90
+ - lib/jekyll-diagrams/block.rb
91
+ - lib/jekyll-diagrams/blockdiag.rb
92
+ - lib/jekyll-diagrams/graphviz.rb
93
+ - lib/jekyll-diagrams/plantuml.rb
94
+ - lib/jekyll-diagrams/renderer.rb
95
+ - lib/jekyll-diagrams/util.rb
91
96
  - lib/jekyll-diagrams/version.rb
92
- - lib/jekyll/diagrams.rb
93
- - lib/jekyll/diagrams/blockdiag.rb
94
- - lib/jekyll/diagrams/graphviz.rb
95
- - test/fixtures/_config.yml
96
- - test/fixtures/_layouts/default.html
97
- - test/fixtures/_posts/2019-08-25-blockdiag.md
98
- - test/fixtures/_posts/2019-08-25-graphviz.md
99
- - test/jekyll-diagrams_test.rb
100
97
  - test/test_helper.rb
98
+ - vendor/plantuml.1.2020.1.jar
101
99
  homepage: https://github.com/zhustec/jekyll-diagrams
102
100
  licenses:
103
101
  - MIT
@@ -110,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
108
  requirements:
111
109
  - - ">="
112
110
  - !ruby/object:Gem::Version
113
- version: 2.3.0
111
+ version: '0'
114
112
  required_rubygems_version: !ruby/object:Gem::Requirement
115
113
  requirements:
116
114
  - - ">="
@@ -121,11 +119,7 @@ rubyforge_project:
121
119
  rubygems_version: 2.7.6.2
122
120
  signing_key:
123
121
  specification_version: 4
124
- summary: Jekyll plugins for diagrams support
122
+ summary: Jekyll plugins for diagrams support, including Graphviz, Blockdiag, PlantUML
123
+ and so on.
125
124
  test_files:
126
- - test/fixtures/_config.yml
127
- - test/fixtures/_layouts/default.html
128
- - test/fixtures/_posts/2019-08-25-blockdiag.md
129
- - test/fixtures/_posts/2019-08-25-graphviz.md
130
- - test/jekyll-diagrams_test.rb
131
125
  - test/test_helper.rb
@@ -1,14 +0,0 @@
1
- require 'jekyll'
2
-
3
- module Jekyll
4
- module Diagrams
5
- module Utils
6
- def self.config_for(context, name)
7
- context.registers[:site].config.fetch('diagrams', {}).fetch(name, {})
8
- end
9
- end
10
- end
11
- end
12
-
13
- require 'jekyll/diagrams/graphviz'
14
- require 'jekyll/diagrams/blockdiag'
@@ -1,46 +0,0 @@
1
- require 'open3'
2
- require 'tempfile'
3
-
4
- module Jekyll
5
- module Diagrams
6
- class BlockdiagBlock < Liquid::Block
7
- DEFAULTS = {
8
- }
9
- OPTIONS = '-T svg --nodoctype'
10
-
11
- def initialize(tag_name, text, tokens)
12
- super
13
- @tag_name = tag_name
14
- end
15
-
16
- def render(context)
17
- code = super.to_s
18
- config = DEFAULTS.merge(Utils.config_for(context, 'blockdiag'))
19
-
20
- tmpfile = Tempfile.new(@tag_name).path
21
- output = "#{tmpfile}.svg"
22
-
23
- File.write(tmpfile, code)
24
- cmd = "#@tag_name #{OPTIONS} #{config['options']} #{tmpfile} -o #{output}"
25
- _, status = Open3.capture2(cmd, binmode: true)
26
-
27
- if !status.success?
28
- raise "Non-zero exit status '#{cmd}': #{status}"
29
- end
30
-
31
- svg = File.read(output)
32
- wrap(svg.force_encoding('UTF-8'))
33
- end
34
-
35
- private
36
-
37
- def wrap(svg)
38
- "<div class='diagrams #@tag_name'>#{svg}</div>"
39
- end
40
- end
41
- end
42
- end
43
-
44
- %w(blockdiag seqdiag actdiag nwdiag rackdiag packetdiag).each do |tag|
45
- Liquid::Template.register_tag(tag, Jekyll::Diagrams::BlockdiagBlock)
46
- end
@@ -1,51 +0,0 @@
1
- require 'open3'
2
-
3
- module Jekyll
4
- module Diagrams
5
- class GraphvizBlock < Liquid::Block
6
- DEFAULTS = {
7
- 'engine' => 'dot'
8
- }
9
- OPTIONS = '-T svg'
10
-
11
- def initialize(tag_name, text, tokens)
12
- super
13
- @tag_name = tag_name
14
- end
15
-
16
- def render(context)
17
- code = super.to_s
18
- config = DEFAULTS.merge(Utils.config_for(context, 'graphviz'))
19
-
20
- code = case @tag_name
21
- when 'graph', 'digraph'
22
- Jekyll.logger.warn "Warning:", "graph and digraph is depreated and will remove in the later version."
23
- Jekyll.logger.warn "", "Using graphviz instead."
24
- "#@tag_name {\n#{code}\n}"
25
- when 'graphviz'
26
- code
27
- end
28
-
29
- cmd = "#{config['engine']} #{OPTIONS} #{config['options']}"
30
- svg, status = Open3.capture2(cmd, stdin_data: code, binmode: true)
31
-
32
- if !status.success?
33
- raise "Non-zero exit status '#{cmd}': #{status}"
34
- end
35
-
36
- svg.sub!(/^<\?xml(([^>]|\n)*>\n?){4}/, '')
37
- wrap(svg.force_encoding('UTF-8'))
38
- end
39
-
40
- private
41
-
42
- def wrap(svg)
43
- "<div class='diagrams graphviz'>#{svg}</div>"
44
- end
45
- end
46
- end
47
- end
48
-
49
- %w(graphviz graph digraph).each do |tag|
50
- Liquid::Template.register_tag(tag, Jekyll::Diagrams::GraphvizBlock)
51
- end
@@ -1,6 +0,0 @@
1
- diagrams:
2
- graphviz:
3
- engine: dot
4
- options: '-Tsvg'
5
- blockdiag:
6
- options: '-Tsvg --nodoctype'
@@ -1,8 +0,0 @@
1
- <html>
2
- <head>
3
- <title>Jekyll Diagrams Testing Page</title>
4
- </head>
5
- <body>
6
- {{ content }}
7
- </body>
8
- </html>
@@ -1,23 +0,0 @@
1
- ---
2
- title: A post with blockdiag
3
- description: A post with blockdiag
4
- layout: default
5
- ---
6
-
7
- {% blockdiag %}
8
- blockdiag {
9
- A -> B -> C -> D;
10
- A -> E -> F -> G;
11
- }
12
- {% endblockdiag %}
13
-
14
- {% seqdiag %}
15
- seqdiag {
16
- browser -> webserver [label = "GET /index.html"];
17
- browser <-- webserver;
18
- browser -> webserver [label = "POST /blog/comment"];
19
- webserver -> database [label = "INSERT comment"];
20
- webserver <-- database;
21
- browser <-- webserver;
22
- }
23
- {% endseqdiag %}
@@ -1,48 +0,0 @@
1
- ---
2
- title: A post with graphviz
3
- description: A post with graphviz
4
- layout: default
5
- ---
6
-
7
- {% graphviz %}
8
- digraph {
9
- node [shape=circle, style=filled];
10
- S [fillcolor=green];
11
- A [fillcolor=yellow];
12
- B [fillcolor=yellow];
13
- C [fillcolor=yellow];
14
- D [shape=doublecircle, fillcolor=green];
15
- S -> A [label=a];
16
- S -> B [label=b];
17
- A -> D [label=c];
18
- B -> D [label=d];
19
- }
20
- {% endgraphviz %}
21
-
22
- {% digraph %}
23
- node [shape=circle, style=filled];
24
- S [fillcolor=green];
25
- A [fillcolor=yellow];
26
- B [fillcolor=yellow];
27
- C [fillcolor=yellow];
28
- D [shape=doublecircle, fillcolor=green];
29
- S -> A [label=a];
30
- S -> B [label=b];
31
- A -> D [label=c];
32
- B -> D [label=d];
33
- {% enddigraph %}
34
-
35
- {% graphviz neato %}
36
- digraph {
37
- node [shape=circle, style=filled];
38
- S [fillcolor=green];
39
- A [fillcolor=yellow];
40
- B [fillcolor=yellow];
41
- C [fillcolor=yellow];
42
- D [shape=doublecircle, fillcolor=green];
43
- S -> A [label=a];
44
- S -> B [label=b];
45
- A -> D [label=c];
46
- B -> D [label=d];
47
- }
48
- {% endgraphviz %}
@@ -1,25 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestJekyllDiagrams < Minitest::Test
4
- def setup
5
- @config = Jekyll.configuration({
6
- source: source_dir,
7
- destination: dest_dir,
8
- url: 'http://example.org'
9
- })
10
-
11
- @site = Jekyll::Site.new(@config)
12
- @site.process
13
- @graphviz_contents = File.read(dest_dir('2019/08/25/graphviz.html'))
14
- @blockdiag_contents = File.read(dest_dir('2019/08/25/blockdiag.html'))
15
- end
16
-
17
-
18
- def test_render_graphviz
19
- assert_match %r!<div class="diagrams graphviz">!, @graphviz_contents
20
- end
21
-
22
- def test_render_blockdiag
23
- assert_match %r!<div class="diagrams \w+">!, @blockdiag_contents
24
- end
25
- end