jekyll-diagrams 0.5.0 → 0.5.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94652913742bd24e2f69b464a8836a424358ecd5babb10724428b8c3991a70b3
4
- data.tar.gz: b6b21032b1dfb7cc19c986cdfcf55d7eeee43d5aa54657a9fb58928965dfad31
3
+ metadata.gz: 52a77bb73a18b1e0b3d922615f50a062ce500c7f7ad1d220b3f648ad1cba8ba1
4
+ data.tar.gz: 45b4d1695a7494c8a4ecfd70b0d32f33dd31007b1d63408d44f5762d5fb47639
5
5
  SHA512:
6
- metadata.gz: 552cf35767c1a2d057acfd791f819b24050d352b8797a6a9809689ac67be94ea23bec365a006cee4b4807b6a87f728f67e3bf30b5251901d667b487a3174fb5d
7
- data.tar.gz: 2565847c3a1fdbd14dc10d574ca9f92d0069010da7748d1d4a6f0be16274a3a5e35f8c1a7c05b4742a39e0e68c9d0ad28ae86869ff1732e2e7a1880580c9505a
6
+ metadata.gz: 012db758b38a586e03675b7af7c37ae88628361180d5ad1dd09aa6fb029c1cbd80eb98710542de4a490796cb45303aa1c5b3377536d2a8bfddf23cbc4fd80ba1
7
+ data.tar.gz: 0b62461401ae935a95c74e34412bcdb159ddf7b5f8c83d478e496d103f65d6643b7279ea12d98e8a9cdd6387e922a2c2aec1db1a6b4081d2d26324e9dea5bf19
data/.gitignore CHANGED
@@ -5,4 +5,3 @@
5
5
  /test/dest/
6
6
  /test/fixtures/.jekyll-cache/
7
7
  /tmp/
8
- *.gem
@@ -5,8 +5,14 @@ rvm:
5
5
  - 2.5
6
6
  - 2.6
7
7
 
8
+ addons:
9
+ apt:
10
+ packages:
11
+ - graphviz
12
+ - python3
13
+ - python3-pip
14
+ - python3-setuptools
15
+
8
16
  before_install:
9
- - sudo apt update && sudo apt install -y graphviz
10
- - sudo apt install -y python3 python3-pip python3-setuptools
11
17
  - sudo pip3 install blockdiag seqdiag actdiag nwdiag
12
18
  - gem update --system && gem install bundler
data/README.md CHANGED
@@ -45,12 +45,7 @@ plugins:
45
45
 
46
46
  ### Graphviz
47
47
 
48
- You need first install graphviz with package manager on your system. e.g.
49
-
50
- * Gentoo Linux : `emerge graphviz`
51
- * Arch Linux : `pacman -S graphviz`
52
-
53
- Then you can use `graphviz`, `graph`, and `digraph` Liquid Tag for creating amazing Graphviz images!
48
+ You need first install graphviz with package manager on your system. Then you can use `graphviz` Liquid Tag to create amazing Graphviz images!
54
49
 
55
50
  ```
56
51
  {% graphviz %}
@@ -69,41 +64,18 @@ digraph {
69
64
  {% endgraphviz %}
70
65
  ```
71
66
 
72
- You can also use `diagraph` and `graph` tag. e.g.
73
-
74
- ```
75
- {% digraph %}
76
- node [shape=circle, style=filled];
77
- S [fillcolor=green];
78
- A [fillcolor=yellow];
79
- B [fillcolor=yellow];
80
- C [fillcolor=yellow];
81
- D [shape=doublecircle, fillcolor=green];
82
- S -> A [label=a];
83
- S -> B [label=b];
84
- A -> D [label=c];
85
- B -> D [label=d];
86
- {% enddigraph %}
87
- ```
88
-
89
67
  ### Blockdiag
90
68
 
91
69
  Blockdiag contains:
92
70
 
93
- * `blockdiag` : simple block-diagram image generator
94
- * `seqdiag` : simple sequence-diagram image generator
95
- * `actdiag` : simple activity-diagram image generator
96
- * `nwdiag` : simple network-diagram image generators
71
+ * `blockdiag` : generates block diagram image
72
+ * `seqdiag` : generates sequence diagram image
73
+ * `actdiag` : generates activity diagram image
74
+ * `nwdiag` : generates network diagram image
75
+ * `rackdiag` : generates rack structure diagram
76
+ * `packetdiag` : generates packet header diagram
97
77
 
98
- Fisrt you should install them via `pip`:
99
-
100
- ```bash
101
- $ pip install blockdiag seqdiag actdiag nwdiag
102
- ```
103
-
104
- And set `$PATH` to make sure your system can find it in `$PATH`.
105
-
106
- Then you can use `blockdiag`, `seqdiag`, `actdiag` and `nwdiag` Liquid Tag. e.g.
78
+ 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.
107
79
 
108
80
  ```
109
81
  {% blockdiag %}
@@ -131,40 +103,21 @@ seqdiag {
131
103
 
132
104
  ## Configuration
133
105
 
134
- You need to provide a configuration.
135
- A simple configuration is shown below:
106
+ You can to provide a configuration, this is optional.
107
+
108
+ A simple example configuration is shown below:
136
109
 
137
110
  ```yaml
138
111
  diagrams:
139
112
  graphviz:
140
113
  engine: dot
141
- options: '-Tsvg'
142
114
  blockdiag:
143
- options: '-Tsvg --nodoctype'
115
+ options: '--antialias'
144
116
  ```
145
117
 
146
118
  ### Graphviz
147
119
 
148
- `engine` is the default image render engine. Default is set to `dot`. You can also specify for every single image via:
149
-
150
- ```
151
- {% graphviz neato %}
152
- digraph {
153
- node [shape=circle, style=filled];
154
- S [fillcolor=green];
155
- A [fillcolor=yellow];
156
- B [fillcolor=yellow];
157
- C [fillcolor=yellow];
158
- D [shape=doublecircle, fillcolor=green];
159
- S -> A [label=a];
160
- S -> B [label=b];
161
- A -> D [label=c];
162
- B -> D [label=d];
163
- }
164
- {% endgraphviz %}
165
- ```
166
-
167
- `options` is the command line options, and will be appended to the command.
120
+ `engine` is the default image render engine. Default is set to `dot`.
168
121
 
169
122
  ### Blockdiag
170
123
 
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Diagrams
3
- VERSION = "0.5.0"
3
+ VERSION = '0.5.1'
4
4
  end
5
5
  end
@@ -1,3 +1,14 @@
1
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
+
2
13
  require 'jekyll/diagrams/graphviz'
3
14
  require 'jekyll/diagrams/blockdiag'
@@ -4,62 +4,43 @@ require 'tempfile'
4
4
  module Jekyll
5
5
  module Diagrams
6
6
  class BlockdiagBlock < Liquid::Block
7
+ DEFAULTS = {
8
+ }
9
+ OPTIONS = '-T svg --nodoctype'
10
+
7
11
  def initialize(tag_name, text, tokens)
8
12
  super
9
13
  @tag_name = tag_name
10
14
  end
11
15
 
12
16
  def render(context)
13
- config = context.registers[:site].config["diagrams"]
14
-
15
- @renderer = DiagRenderer.new(config['blockdiag'])
16
-
17
- render_diagram(super)
18
- end
19
-
20
- private
21
-
22
- def render_diagram(code)
23
- @renderer.render(code, @tag_name)
24
- end
25
- end
17
+ code = super.to_s
18
+ config = DEFAULTS.merge(Utils.config_for(context, 'blockdiag'))
26
19
 
27
- class DiagRenderer
28
- DEFAULTS = {
29
- 'options' => '-Tsvg --nodoctype'
30
- }
20
+ tmpfile = Tempfile.new(@tag_name).path
21
+ output = "#{tmpfile}.svg"
31
22
 
32
- def initialize(config)
33
- @config = DEFAULTS.merge(config)
34
- end
35
-
36
- def render(code, engine)
37
- tmp = Tempfile.new(engine).path
38
- dest = "#{tmp}.svg"
39
-
40
- File.write(tmp, code)
41
- cmd = "#{engine} #{@config['options']} #{tmp} -o #{dest}"
42
- ret, status = Open3.capture2(cmd, binmode: true)
23
+ File.write(tmpfile, code)
24
+ cmd = "#@tag_name #{OPTIONS} #{config['options']} #{tmpfile} -o #{output}"
25
+ _, status = Open3.capture2(cmd, binmode: true)
43
26
 
44
27
  if !status.success?
45
28
  raise "Non-zero exit status '#{cmd}': #{status}"
46
29
  end
47
30
 
48
- svg = File.read(dest).force_encoding 'UTF-8'
49
-
50
- wrap_div(svg, engine)
31
+ svg = File.read(output)
32
+ wrap(svg.force_encoding('UTF-8'))
51
33
  end
52
34
 
53
35
  private
54
36
 
55
- def wrap_div(svg, engine)
56
- "<div class='diag #{engine}'>#{svg}</div>"
37
+ def wrap(svg)
38
+ "<div class='diagrams #@tag_name'>#{svg}</div>"
57
39
  end
58
40
  end
59
41
  end
60
42
  end
61
43
 
62
-
63
44
  %w(blockdiag seqdiag actdiag nwdiag rackdiag packetdiag).each do |tag|
64
- Liquid::Template.register_tag tag, Jekyll::Diagrams::BlockdiagBlock
45
+ Liquid::Template.register_tag(tag, Jekyll::Diagrams::BlockdiagBlock)
65
46
  end
@@ -3,62 +3,44 @@ require 'open3'
3
3
  module Jekyll
4
4
  module Diagrams
5
5
  class GraphvizBlock < Liquid::Block
6
+ DEFAULTS = {
7
+ 'engine' => 'dot'
8
+ }
9
+ OPTIONS = '-T svg'
10
+
6
11
  def initialize(tag_name, text, tokens)
7
12
  super
8
13
  @tag_name = tag_name
9
- @engine = text.strip
10
14
  end
11
15
 
12
16
  def render(context)
13
- config = context.registers[:site].config["diagrams"]
14
-
15
- @renderer = GraphvizRenderer.new(config["graphviz"])
16
-
17
- render_diagram(super)
18
- end
19
-
20
- private
17
+ code = super.to_s
18
+ config = DEFAULTS.merge(Utils.config_for(context, 'graphviz'))
21
19
 
22
- def render_diagram(code)
23
20
  code = case @tag_name
24
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."
25
24
  "#@tag_name {\n#{code}\n}"
26
25
  when 'graphviz'
27
26
  code
28
- else
29
- raise "unknown liquid tag name: #{@tag_name}"
30
27
  end
31
28
 
32
- @renderer.render(code, @engine)
33
- end
34
- end
35
-
36
- class GraphvizRenderer
37
- DEFAULTS = {
38
- 'engine' => 'dot',
39
- 'options' => '-Tsvg'
40
- }
41
-
42
- def initialize(config)
43
- @config = DEFAULTS.merge(config)
44
- end
45
-
46
- def render(code, engine = DEFAULTS['engine'])
47
- cmd = "#{@config['engine']} #{@config['options']}"
48
- svg, status = Open3.capture2(
49
- cmd,
50
- stdin_data: code,
51
- binmode: true
52
- )
29
+ cmd = "#{config['engine']} #{OPTIONS} #{config['options']}"
30
+ svg, status = Open3.capture2(cmd, stdin_data: code, binmode: true)
53
31
 
54
32
  if !status.success?
55
33
  raise "Non-zero exit status '#{cmd}': #{status}"
56
34
  end
57
35
 
58
- svg.sub! /^<!DOCTYPE(([^>]|\n)*)>(\n?)/, ''
59
- svg.force_encoding 'UTF-8'
36
+ svg.sub!(/^<\?xml(([^>]|\n)*>\n?){4}/, '')
37
+ wrap(svg.force_encoding('UTF-8'))
38
+ end
39
+
40
+ private
60
41
 
61
- "<div class='graphviz'>#{svg}</div>"
42
+ def wrap(svg)
43
+ "<div class='diagrams graphviz'>#{svg}</div>"
62
44
  end
63
45
  end
64
46
  end
@@ -16,10 +16,10 @@ class TestJekyllDiagrams < Minitest::Test
16
16
 
17
17
 
18
18
  def test_render_graphviz
19
- assert_match %r!<div class="graphviz">!, @graphviz_contents
19
+ assert_match %r!<div class="diagrams graphviz">!, @graphviz_contents
20
20
  end
21
21
 
22
22
  def test_render_blockdiag
23
- assert_match %r!<div class="diag \w+">!, @blockdiag_contents
23
+ assert_match %r!<div class="diagrams \w+">!, @blockdiag_contents
24
24
  end
25
25
  end
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.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - zhustec
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-25 00:00:00.000000000 Z
11
+ date: 2019-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll