asciidoctor-diagram 1.5.18 → 2.0.4

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.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +75 -0
  3. data/README.adoc +98 -23
  4. data/examples/features.adoc +2 -2
  5. data/lib/asciidoctor-diagram.rb +8 -0
  6. data/lib/asciidoctor-diagram/a2s/converter.rb +59 -0
  7. data/lib/asciidoctor-diagram/a2s/extension.rb +6 -52
  8. data/lib/asciidoctor-diagram/blockdiag/converter.rb +37 -0
  9. data/lib/asciidoctor-diagram/blockdiag/extension.rb +9 -116
  10. data/lib/asciidoctor-diagram/bpmn.rb +7 -0
  11. data/lib/asciidoctor-diagram/bpmn/converter.rb +62 -0
  12. data/lib/asciidoctor-diagram/bpmn/extension.rb +14 -0
  13. data/lib/asciidoctor-diagram/bytefield.rb +7 -0
  14. data/lib/asciidoctor-diagram/bytefield/converter.rb +26 -0
  15. data/lib/asciidoctor-diagram/bytefield/extension.rb +14 -0
  16. data/lib/asciidoctor-diagram/diagram_converter.rb +23 -0
  17. data/lib/asciidoctor-diagram/diagram_processor.rb +357 -0
  18. data/lib/asciidoctor-diagram/diagram_source.rb +322 -0
  19. data/lib/asciidoctor-diagram/ditaa/converter.rb +90 -0
  20. data/lib/asciidoctor-diagram/ditaa/extension.rb +6 -71
  21. data/lib/asciidoctor-diagram/dpic.rb +7 -0
  22. data/lib/asciidoctor-diagram/dpic/converter.rb +30 -0
  23. data/lib/asciidoctor-diagram/dpic/extension.rb +14 -0
  24. data/lib/asciidoctor-diagram/erd/converter.rb +31 -0
  25. data/lib/asciidoctor-diagram/erd/extension.rb +6 -35
  26. data/lib/asciidoctor-diagram/gnuplot.rb +7 -0
  27. data/lib/asciidoctor-diagram/gnuplot/converter.rb +63 -0
  28. data/lib/asciidoctor-diagram/gnuplot/extension.rb +14 -0
  29. data/lib/asciidoctor-diagram/graphviz/converter.rb +32 -0
  30. data/lib/asciidoctor-diagram/graphviz/extension.rb +6 -35
  31. data/lib/asciidoctor-diagram/http/converter.rb +99 -0
  32. data/lib/asciidoctor-diagram/http/server.rb +132 -0
  33. data/lib/asciidoctor-diagram/lilypond.rb +7 -0
  34. data/lib/asciidoctor-diagram/lilypond/converter.rb +54 -0
  35. data/lib/asciidoctor-diagram/lilypond/extension.rb +14 -0
  36. data/lib/asciidoctor-diagram/meme/converter.rb +122 -0
  37. data/lib/asciidoctor-diagram/meme/extension.rb +5 -107
  38. data/lib/asciidoctor-diagram/mermaid/converter.rb +179 -0
  39. data/lib/asciidoctor-diagram/mermaid/extension.rb +6 -159
  40. data/lib/asciidoctor-diagram/msc/converter.rb +35 -0
  41. data/lib/asciidoctor-diagram/msc/extension.rb +6 -36
  42. data/lib/asciidoctor-diagram/nomnoml/converter.rb +25 -0
  43. data/lib/asciidoctor-diagram/nomnoml/extension.rb +6 -28
  44. data/lib/asciidoctor-diagram/pikchr.rb +7 -0
  45. data/lib/asciidoctor-diagram/pikchr/converter.rb +26 -0
  46. data/lib/asciidoctor-diagram/pikchr/extension.rb +14 -0
  47. data/lib/asciidoctor-diagram/plantuml/converter.rb +117 -0
  48. data/lib/asciidoctor-diagram/plantuml/extension.rb +10 -119
  49. data/lib/asciidoctor-diagram/shaape/converter.rb +25 -0
  50. data/lib/asciidoctor-diagram/shaape/extension.rb +6 -28
  51. data/lib/asciidoctor-diagram/smcat.rb +7 -0
  52. data/lib/asciidoctor-diagram/smcat/converter.rb +44 -0
  53. data/lib/asciidoctor-diagram/smcat/extension.rb +14 -0
  54. data/lib/asciidoctor-diagram/svgbob/converter.rb +49 -0
  55. data/lib/asciidoctor-diagram/svgbob/extension.rb +6 -28
  56. data/lib/asciidoctor-diagram/symbolator.rb +7 -0
  57. data/lib/asciidoctor-diagram/symbolator/converter.rb +23 -0
  58. data/lib/asciidoctor-diagram/symbolator/extension.rb +14 -0
  59. data/lib/asciidoctor-diagram/syntrax/converter.rb +58 -0
  60. data/lib/asciidoctor-diagram/syntrax/extension.rb +6 -51
  61. data/lib/asciidoctor-diagram/tikz/converter.rb +56 -0
  62. data/lib/asciidoctor-diagram/tikz/extension.rb +6 -60
  63. data/lib/asciidoctor-diagram/umlet/converter.rb +24 -0
  64. data/lib/asciidoctor-diagram/umlet/extension.rb +6 -28
  65. data/lib/asciidoctor-diagram/util/cli.rb +14 -3
  66. data/lib/asciidoctor-diagram/util/cli_generator.rb +19 -1
  67. data/lib/asciidoctor-diagram/util/gif.rb +2 -2
  68. data/lib/asciidoctor-diagram/util/java.rb +1 -1
  69. data/lib/asciidoctor-diagram/util/java_socket.rb +7 -9
  70. data/lib/asciidoctor-diagram/util/pdf.rb +2 -2
  71. data/lib/asciidoctor-diagram/util/png.rb +2 -2
  72. data/lib/asciidoctor-diagram/util/svg.rb +46 -19
  73. data/lib/asciidoctor-diagram/util/which.rb +0 -29
  74. data/lib/asciidoctor-diagram/vega/converter.rb +47 -0
  75. data/lib/asciidoctor-diagram/vega/extension.rb +6 -44
  76. data/lib/asciidoctor-diagram/version.rb +1 -1
  77. data/lib/asciidoctor-diagram/wavedrom/converter.rb +50 -0
  78. data/lib/asciidoctor-diagram/wavedrom/extension.rb +6 -46
  79. data/lib/ditaa-1.3.15.jar +0 -0
  80. data/lib/ditaamini-0.12.jar +0 -0
  81. data/lib/plantuml-1.3.15.jar +0 -0
  82. data/lib/plantuml.jar +0 -0
  83. data/lib/server-1.3.15.jar +0 -0
  84. data/spec/a2s_spec.rb +2 -140
  85. data/spec/blockdiag_spec.rb +2 -200
  86. data/spec/bpmn_spec.rb +56 -0
  87. data/spec/bytefield_spec.rb +92 -0
  88. data/spec/ditaa_spec.rb +37 -143
  89. data/spec/dpic_spec.rb +19 -0
  90. data/spec/erd_spec.rb +2 -199
  91. data/spec/gnuplot_spec.rb +225 -0
  92. data/spec/graphviz_spec.rb +6 -145
  93. data/spec/lilypond_spec.rb +13 -0
  94. data/spec/mermaid_spec.rb +35 -200
  95. data/spec/msc_spec.rb +2 -199
  96. data/spec/nomnoml_spec.rb +4 -142
  97. data/spec/pikchr_spec.rb +51 -0
  98. data/spec/plantuml_spec.rb +24 -507
  99. data/spec/shaape_spec.rb +9 -221
  100. data/spec/shared_examples.rb +552 -0
  101. data/spec/smcat_spec.rb +26 -0
  102. data/spec/svgbob_spec.rb +2 -140
  103. data/spec/symbolator_spec.rb +23 -0
  104. data/spec/syntrax_spec.rb +5 -215
  105. data/spec/test_helper.rb +1 -18
  106. data/spec/tikz_spec.rb +4 -24
  107. data/spec/umlet_spec.rb +2 -58
  108. data/spec/vega_spec.rb +4 -117
  109. data/spec/wavedrom_spec.rb +2 -199
  110. metadata +73 -11
  111. data/lib/asciidoctor-diagram/extensions.rb +0 -568
  112. data/lib/ditaa-1.3.13.jar +0 -0
  113. data/lib/ditaamini-0.11.jar +0 -0
  114. data/lib/plantuml-1.3.13.jar +0 -0
  115. data/lib/server-1.3.13.jar +0 -0
@@ -0,0 +1,26 @@
1
+ require_relative 'test_helper'
2
+
3
+ code = <<-eos
4
+ initial,
5
+ doing: entry/ write unit test
6
+ do/ write code
7
+ exit/ ...,
8
+ # smcat recognizes initial
9
+ # and final states by name
10
+ # and renders them appropriately
11
+ final;
12
+
13
+ initial => "on backlog" : item adds most value;
14
+ "on backlog" => doing : working on it;
15
+ doing => testing : built & unit tested;
16
+ testing => "on backlog" : test not ok;
17
+ testing => final : test ok;
18
+ eos
19
+
20
+ describe Asciidoctor::Diagram::SmcatBlockMacroProcessor, :broken_on_windows do
21
+ include_examples "block_macro", :smcat, code, [:svg]
22
+ end
23
+
24
+ describe Asciidoctor::Diagram::SmcatBlockProcessor, :broken_on_windows do
25
+ include_examples "block", :smcat, code, [:svg]
26
+ end
@@ -21,147 +21,9 @@ code = <<-eos
21
21
  eos
22
22
 
23
23
  describe Asciidoctor::Diagram::SvgBobBlockMacroProcessor, :broken_on_travis, :broken_on_windows do
24
- it "should generate SVG images when format is set to 'svg'" do
25
- File.write('svgbob.txt', code)
26
-
27
- doc = <<-eos
28
- = Hello, SvgBob!
29
- Doc Writer <doc@example.com>
30
-
31
- == First Section
32
-
33
- svgbob::svgbob.txt[format="svg"]
34
- eos
35
-
36
- d = load_asciidoc doc
37
- expect(d).to_not be_nil
38
-
39
- b = d.find { |bl| bl.context == :image }
40
- expect(b).to_not be_nil
41
-
42
- expect(b.content_model).to eq :empty
43
-
44
- target = b.attributes['target']
45
- expect(target).to_not be_nil
46
- expect(target).to match(/\.svg/)
47
- expect(File.exist?(target)).to be true
48
-
49
- expect(b.attributes['width']).to_not be_nil
50
- expect(b.attributes['height']).to_not be_nil
51
- end
24
+ include_examples "block_macro", :svgbob, code, [:svg]
52
25
  end
53
26
 
54
27
  describe Asciidoctor::Diagram::SvgBobBlockProcessor, :broken_on_travis, :broken_on_windows do
55
- it "should generate SVG images when format is set to 'svg'" do
56
- doc = <<-eos
57
- = Hello, SvgBob!
58
- Doc Writer <doc@example.com>
59
-
60
- == First Section
61
-
62
- [svgbob, format="svg"]
63
- ----
64
- #{code}
65
- ----
66
- eos
67
-
68
- d = load_asciidoc doc
69
- expect(d).to_not be_nil
70
-
71
- b = d.find { |bl| bl.context == :image }
72
- expect(b).to_not be_nil
73
-
74
- expect(b.content_model).to eq :empty
75
-
76
- target = b.attributes['target']
77
- expect(target).to_not be_nil
78
- expect(target).to match(/\.svg/)
79
- expect(File.exist?(target)).to be true
80
-
81
- expect(b.attributes['width']).to_not be_nil
82
- expect(b.attributes['height']).to_not be_nil
83
- end
84
-
85
- it "should raise an error when when format is set to an invalid value" do
86
- doc = <<-eos
87
- = Hello, SvgBob!
88
- Doc Writer <doc@example.com>
89
-
90
- == First Section
91
-
92
- [svgbob, format="foobar"]
93
- ----
94
- ----
95
- eos
96
-
97
- expect { load_asciidoc doc }.to raise_error(/support.*format/i)
98
- end
99
-
100
- it "should not regenerate images when source has not changed" do
101
- File.write('svgbob.txt', code)
102
-
103
- doc = <<-eos
104
- = Hello, SvgBob!
105
- Doc Writer <doc@example.com>
106
-
107
- == First Section
108
-
109
- svgbob::svgbob.txt
110
-
111
- [svgbob]
112
- ----
113
- #{code}
114
- ----
115
- eos
116
-
117
- d = load_asciidoc doc
118
- b = d.find { |bl| bl.context == :image }
119
- expect(b).to_not be_nil
120
- target = b.attributes['target']
121
- mtime1 = File.mtime(target)
122
-
123
- sleep 1
124
-
125
- d = load_asciidoc doc
126
-
127
- mtime2 = File.mtime(target)
128
-
129
- expect(mtime2).to eq mtime1
130
- end
131
-
132
- it "should handle two block macros with the same source" do
133
- File.write('svgbob.txt', code)
134
-
135
- doc = <<-eos
136
- = Hello, SvgBob!
137
- Doc Writer <doc@example.com>
138
-
139
- == First Section
140
-
141
- svgbob::svgbob.txt[]
142
- svgbob::svgbob.txt[]
143
- eos
144
-
145
- load_asciidoc doc
146
- expect(File.exist?('svgbob.svg')).to be true
147
- end
148
-
149
- it "should respect target attribute in block macros" do
150
- File.write('svgbob.txt', code)
151
-
152
- doc = <<-eos
153
- = Hello, SvgBob!
154
- Doc Writer <doc@example.com>
155
-
156
- == First Section
157
-
158
- svgbob::svgbob.txt["foobar"]
159
- svgbob::svgbob.txt["foobaz"]
160
- eos
161
-
162
- load_asciidoc doc
163
- expect(File.exist?('foobar.svg')).to be true
164
- expect(File.exist?('foobaz.svg')).to be true
165
- expect(File.exist?('svgbob.svg')).to be false
166
- end
28
+ include_examples "block", :svgbob, code, [:svg]
167
29
  end
@@ -0,0 +1,23 @@
1
+ require_relative 'test_helper'
2
+
3
+ code = <<-eos
4
+ library ieee;
5
+ use ieee.std_logic_1164.all;
6
+
7
+ package demo is
8
+ component demo_device is
9
+ generic (
10
+ SIZE : positive;
11
+ RESET_ACTIVE_LEVEL : std_ulogic := '1'
12
+ );
13
+ end component;
14
+ end package;
15
+ eos
16
+
17
+ describe Asciidoctor::Diagram::SymbolatorBlockMacroProcessor, :broken_on_windows do
18
+ include_examples "block_macro", :symbolator, code, [:png, :svg, :pdf]
19
+ end
20
+
21
+ describe Asciidoctor::Diagram::SymbolatorBlockProcessor, :broken_on_windows do
22
+ include_examples "block", :symbolator, code, [:png, :svg, :pdf]
23
+ end
@@ -1,228 +1,18 @@
1
1
  require_relative 'test_helper'
2
2
 
3
- describe Asciidoctor::Diagram::SyntraxBlockMacroProcessor, :broken_on_appveyor do
4
- it "should generate PNG images when format is set to 'png'" do
5
- code = <<-eos
3
+ code = <<-eos
6
4
  indentstack(10,
7
5
  line(opt('-'), choice('0', line('1-9', loop(None, '0-9'))),
8
6
  opt('.', loop('0-9', None))),
9
7
 
10
8
  line(opt(choice('e', 'E'), choice(None, '+', '-'), loop('0-9', None)))
11
9
  )
12
- eos
13
-
14
- File.write('syntrax.txt', code)
15
-
16
- doc = <<-eos
17
- = Hello, Syntrax!
18
- Doc Writer <doc@example.com>
19
-
20
- == First Section
21
-
22
- syntrax::syntrax.txt[format="png"]
23
- eos
24
-
25
- d = load_asciidoc doc
26
- expect(d).to_not be_nil
10
+ eos
27
11
 
28
- b = d.find { |bl| bl.context == :image }
29
- expect(b).to_not be_nil
30
-
31
- expect(b.content_model).to eq :empty
32
-
33
- target = b.attributes['target']
34
- expect(target).to_not be_nil
35
- expect(target).to match(/\.png$/)
36
- expect(File.exist?(target)).to be true
37
-
38
- expect(b.attributes['width']).to_not be_nil
39
- expect(b.attributes['height']).to_not be_nil
40
- end
12
+ describe Asciidoctor::Diagram::SyntraxBlockMacroProcessor, :broken_on_appveyor do
13
+ include_examples "block_macro", :syntrax, code, [:png, :svg]
41
14
  end
42
15
 
43
16
  describe Asciidoctor::Diagram::SyntraxBlockProcessor, :broken_on_appveyor do
44
- it "should generate PNG images when format is set to 'png'" do
45
- doc = <<-eos
46
- = Hello, Syntrax!
47
- Doc Writer <doc@example.com>
48
-
49
- == First Section
50
-
51
- [syntrax, format="png"]
52
- ----
53
- indentstack(10,
54
- line(opt('-'), choice('0', line('1-9', loop(None, '0-9'))),
55
- opt('.', loop('0-9', None))),
56
-
57
- line(opt(choice('e', 'E'), choice(None, '+', '-'), loop('0-9', None)))
58
- )
59
- ----
60
- eos
61
-
62
- d = load_asciidoc doc
63
- expect(d).to_not be_nil
64
-
65
- b = d.find { |bl| bl.context == :image }
66
- expect(b).to_not be_nil
67
-
68
- expect(b.content_model).to eq :empty
69
-
70
- target = b.attributes['target']
71
- expect(target).to_not be_nil
72
- expect(target).to match(/\.png$/)
73
- expect(File.exist?(target)).to be true
74
-
75
- expect(b.attributes['width']).to_not be_nil
76
- expect(b.attributes['height']).to_not be_nil
77
- end
78
-
79
- it "should generate SVG images when format is set to 'svg'" do
80
- doc = <<-eos
81
- = Hello, Syntrax!
82
- Doc Writer <doc@example.com>
83
-
84
- == First Section
85
-
86
- [syntrax, format="svg"]
87
- ----
88
- indentstack(10,
89
- line(opt('-'), choice('0', line('1-9', loop(None, '0-9'))),
90
- opt('.', loop('0-9', None))),
91
-
92
- line(opt(choice('e', 'E'), choice(None, '+', '-'), loop('0-9', None)))
93
- )
94
- ----
95
- eos
96
-
97
- d = load_asciidoc doc
98
- expect(d).to_not be_nil
99
-
100
- b = d.find { |bl| bl.context == :image }
101
- expect(b).to_not be_nil
102
-
103
- expect(b.content_model).to eq :empty
104
-
105
- target = b.attributes['target']
106
- expect(target).to_not be_nil
107
- expect(target).to match(/\.svg/)
108
- expect(File.exist?(target)).to be true
109
-
110
- expect(b.attributes['width']).to_not be_nil
111
- expect(b.attributes['height']).to_not be_nil
112
- end
113
-
114
- it "should raise an error when when format is set to an invalid value" do
115
- doc = <<-eos
116
- = Hello, Syntrax!
117
- Doc Writer <doc@example.com>
118
-
119
- == First Section
120
-
121
- [syntrax, format="foobar"]
122
- ----
123
- ----
124
- eos
125
-
126
- expect { load_asciidoc doc }.to raise_error(/support.*format/i)
127
- end
128
-
129
- it "should not regenerate images when source has not changed" do
130
- code = <<-eos
131
- indentstack(10,
132
- line(opt('-'), choice('0', line('1-9', loop(None, '0-9'))),
133
- opt('.', loop('0-9', None))),
134
-
135
- line(opt(choice('e', 'E'), choice(None, '+', '-'), loop('0-9', None)))
136
- )
137
- eos
138
-
139
- File.write('syntrax.txt', code)
140
-
141
- doc = <<-eos
142
- = Hello, Syntrax!
143
- Doc Writer <doc@example.com>
144
-
145
- == First Section
146
-
147
- syntrax::syntrax.txt
148
-
149
- [syntrax, format="png"]
150
- ----
151
- indentstack(10,
152
- line(opt('-'), choice('0', line('1-9', loop(None, '0-9'))),
153
- opt('.', loop('0-9', None))),
154
-
155
- line(opt(choice('e', 'E'), choice(None, '+', '-'), loop('0-9', None)))
156
- )
157
- ----
158
- eos
159
-
160
- d = load_asciidoc doc
161
- b = d.find { |bl| bl.context == :image }
162
- expect(b).to_not be_nil
163
- target = b.attributes['target']
164
- mtime1 = File.mtime(target)
165
-
166
- sleep 1
167
-
168
- d = load_asciidoc doc
169
-
170
- mtime2 = File.mtime(target)
171
-
172
- expect(mtime2).to eq mtime1
173
- end
174
-
175
- it "should handle two block macros with the same source" do
176
- code = <<-eos
177
- indentstack(10,
178
- line(opt('-'), choice('0', line('1-9', loop(None, '0-9'))),
179
- opt('.', loop('0-9', None))),
180
-
181
- line(opt(choice('e', 'E'), choice(None, '+', '-'), loop('0-9', None)))
182
- )
183
- eos
184
-
185
- File.write('syntrax.txt', code)
186
-
187
- doc = <<-eos
188
- = Hello, Syntrax!
189
- Doc Writer <doc@example.com>
190
-
191
- == First Section
192
-
193
- syntrax::syntrax.txt[]
194
- syntrax::syntrax.txt[]
195
- eos
196
-
197
- load_asciidoc doc
198
- expect(File.exist?('syntrax.png')).to be true
199
- end
200
-
201
- it "should respect target attribute in block macros" do
202
- code = <<-eos
203
- indentstack(10,
204
- line(opt('-'), choice('0', line('1-9', loop(None, '0-9'))),
205
- opt('.', loop('0-9', None))),
206
-
207
- line(opt(choice('e', 'E'), choice(None, '+', '-'), loop('0-9', None)))
208
- )
209
- eos
210
-
211
- File.write('syntrax.txt', code)
212
-
213
- doc = <<-eos
214
- = Hello, Syntrax!
215
- Doc Writer <doc@example.com>
216
-
217
- == First Section
218
-
219
- syntrax::syntrax.txt["foobar"]
220
- syntrax::syntrax.txt["foobaz"]
221
- eos
222
-
223
- load_asciidoc doc
224
- expect(File.exist?('foobar.png')).to be true
225
- expect(File.exist?('foobaz.png')).to be true
226
- expect(File.exist?('syntrax.png')).to be false
227
- end
17
+ include_examples "block", :syntrax, code, [:png, :svg]
228
18
  end
@@ -6,25 +6,8 @@ require 'stringio'
6
6
  require 'tmpdir'
7
7
 
8
8
  require_relative '../lib/asciidoctor-diagram'
9
- require_relative '../lib/asciidoctor-diagram/a2s/extension'
10
- require_relative '../lib/asciidoctor-diagram/blockdiag/extension'
11
- require_relative '../lib/asciidoctor-diagram/ditaa/extension'
12
- require_relative '../lib/asciidoctor-diagram/erd/extension'
13
- require_relative '../lib/asciidoctor-diagram/graphviz/extension'
14
- require_relative '../lib/asciidoctor-diagram/meme/extension'
15
- require_relative '../lib/asciidoctor-diagram/mermaid/extension'
16
- require_relative '../lib/asciidoctor-diagram/msc/extension'
17
- require_relative '../lib/asciidoctor-diagram/nomnoml/extension'
18
- require_relative '../lib/asciidoctor-diagram/plantuml/extension'
19
- require_relative '../lib/asciidoctor-diagram/shaape/extension'
20
- require_relative '../lib/asciidoctor-diagram/svgbob/extension'
21
- require_relative '../lib/asciidoctor-diagram/syntrax/extension'
22
- require_relative '../lib/asciidoctor-diagram/tikz/extension'
23
- require_relative '../lib/asciidoctor-diagram/umlet/extension'
24
- require_relative '../lib/asciidoctor-diagram/vega/extension'
25
- require_relative '../lib/asciidoctor-diagram/wavedrom/extension'
26
-
27
9
  require_relative '../lib/asciidoctor-diagram/util/platform'
10
+ require_relative 'shared_examples'
28
11
 
29
12
  module Asciidoctor
30
13
  class AbstractBlock