asciidoctor-diagram 1.5.18 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +28 -0
  3. data/README.adoc +56 -14
  4. data/examples/features.adoc +2 -2
  5. data/lib/asciidoctor-diagram/a2s/converter.rb +55 -0
  6. data/lib/asciidoctor-diagram/a2s/extension.rb +6 -52
  7. data/lib/asciidoctor-diagram/blockdiag/converter.rb +37 -0
  8. data/lib/asciidoctor-diagram/blockdiag/extension.rb +9 -116
  9. data/lib/asciidoctor-diagram/bpmn/converter.rb +62 -0
  10. data/lib/asciidoctor-diagram/bpmn/extension.rb +14 -0
  11. data/lib/asciidoctor-diagram/bpmn.rb +7 -0
  12. data/lib/asciidoctor-diagram/diagram_converter.rb +19 -0
  13. data/lib/asciidoctor-diagram/diagram_processor.rb +320 -0
  14. data/lib/asciidoctor-diagram/diagram_source.rb +275 -0
  15. data/lib/asciidoctor-diagram/ditaa/converter.rb +86 -0
  16. data/lib/asciidoctor-diagram/ditaa/extension.rb +6 -71
  17. data/lib/asciidoctor-diagram/erd/converter.rb +31 -0
  18. data/lib/asciidoctor-diagram/erd/extension.rb +6 -35
  19. data/lib/asciidoctor-diagram/gnuplot/converter.rb +63 -0
  20. data/lib/asciidoctor-diagram/gnuplot/extension.rb +14 -0
  21. data/lib/asciidoctor-diagram/gnuplot.rb +7 -0
  22. data/lib/asciidoctor-diagram/graphviz/converter.rb +32 -0
  23. data/lib/asciidoctor-diagram/graphviz/extension.rb +6 -35
  24. data/lib/asciidoctor-diagram/http/server.rb +127 -0
  25. data/lib/asciidoctor-diagram/lilypond/converter.rb +54 -0
  26. data/lib/asciidoctor-diagram/lilypond/extension.rb +14 -0
  27. data/lib/asciidoctor-diagram/lilypond.rb +7 -0
  28. data/lib/asciidoctor-diagram/meme/converter.rb +122 -0
  29. data/lib/asciidoctor-diagram/meme/extension.rb +5 -107
  30. data/lib/asciidoctor-diagram/mermaid/converter.rb +178 -0
  31. data/lib/asciidoctor-diagram/mermaid/extension.rb +6 -159
  32. data/lib/asciidoctor-diagram/msc/converter.rb +35 -0
  33. data/lib/asciidoctor-diagram/msc/extension.rb +6 -36
  34. data/lib/asciidoctor-diagram/nomnoml/converter.rb +25 -0
  35. data/lib/asciidoctor-diagram/nomnoml/extension.rb +6 -28
  36. data/lib/asciidoctor-diagram/plantuml/converter.rb +115 -0
  37. data/lib/asciidoctor-diagram/plantuml/extension.rb +10 -119
  38. data/lib/asciidoctor-diagram/shaape/converter.rb +25 -0
  39. data/lib/asciidoctor-diagram/shaape/extension.rb +6 -28
  40. data/lib/asciidoctor-diagram/smcat/converter.rb +44 -0
  41. data/lib/asciidoctor-diagram/smcat/extension.rb +14 -0
  42. data/lib/asciidoctor-diagram/smcat.rb +7 -0
  43. data/lib/asciidoctor-diagram/svgbob/converter.rb +25 -0
  44. data/lib/asciidoctor-diagram/svgbob/extension.rb +6 -28
  45. data/lib/asciidoctor-diagram/syntrax/converter.rb +55 -0
  46. data/lib/asciidoctor-diagram/syntrax/extension.rb +6 -51
  47. data/lib/asciidoctor-diagram/tikz/converter.rb +56 -0
  48. data/lib/asciidoctor-diagram/tikz/extension.rb +6 -60
  49. data/lib/asciidoctor-diagram/umlet/converter.rb +24 -0
  50. data/lib/asciidoctor-diagram/umlet/extension.rb +6 -28
  51. data/lib/asciidoctor-diagram/util/java.rb +1 -1
  52. data/lib/asciidoctor-diagram/util/java_socket.rb +7 -9
  53. data/lib/asciidoctor-diagram/util/which.rb +0 -29
  54. data/lib/asciidoctor-diagram/vega/converter.rb +47 -0
  55. data/lib/asciidoctor-diagram/vega/extension.rb +6 -44
  56. data/lib/asciidoctor-diagram/version.rb +1 -1
  57. data/lib/asciidoctor-diagram/wavedrom/converter.rb +50 -0
  58. data/lib/asciidoctor-diagram/wavedrom/extension.rb +6 -46
  59. data/lib/asciidoctor-diagram.rb +4 -0
  60. data/lib/ditaa-1.3.14.jar +0 -0
  61. data/lib/ditaamini-0.12.jar +0 -0
  62. data/lib/plantuml-1.3.14.jar +0 -0
  63. data/lib/plantuml.jar +0 -0
  64. data/lib/server-1.3.14.jar +0 -0
  65. data/spec/bpmn-example.xml +44 -0
  66. data/spec/bpmn_spec.rb +96 -0
  67. data/spec/gnuplot_spec.rb +478 -0
  68. data/spec/lilypond_spec.rb +151 -0
  69. data/spec/mermaid_spec.rb +33 -1
  70. data/spec/plantuml_spec.rb +89 -0
  71. data/spec/smcat_spec.rb +164 -0
  72. data/spec/test_helper.rb +3 -0
  73. metadata +52 -11
  74. data/lib/asciidoctor-diagram/extensions.rb +0 -568
  75. data/lib/ditaa-1.3.13.jar +0 -0
  76. data/lib/ditaamini-0.11.jar +0 -0
  77. data/lib/plantuml-1.3.13.jar +0 -0
  78. data/lib/server-1.3.13.jar +0 -0
@@ -0,0 +1,478 @@
1
+ require_relative 'test_helper'
2
+
3
+ code = <<-eos
4
+ plot [0:5][0:20] x**2 title 'O(n^2)'
5
+ eos
6
+
7
+ describe Asciidoctor::Diagram::GnuplotBlockMacroProcessor do
8
+ it "should generate PNG images when format is set to 'png'" do
9
+ File.write('gnuplot.txt', code)
10
+
11
+ doc = <<-eos
12
+ = Hello, Gnuplot!
13
+ Doc Writer <doc@example.com>
14
+
15
+ == First Section
16
+
17
+ gnuplot::gnuplot.txt[format="png"]
18
+ eos
19
+
20
+ d = load_asciidoc doc
21
+ expect(d).to_not be_nil
22
+
23
+ b = d.find { |bl| bl.context == :image }
24
+ expect(b).to_not be_nil
25
+
26
+ expect(b.content_model).to eq :empty
27
+
28
+ target = b.attributes['target']
29
+ expect(target).to_not be_nil
30
+ expect(target).to match(/\.png$/)
31
+ expect(File.exist?(target)).to be true
32
+
33
+ expect(b.attributes['width']).to_not be_nil
34
+ expect(b.attributes['height']).to_not be_nil
35
+ end
36
+
37
+
38
+ it "should generate SVG images when format is set to 'svg'" do
39
+ File.write('gnuplot.txt', code)
40
+
41
+ doc = <<-eos
42
+ = Hello, Gnuplot!
43
+ Doc Writer <doc@example.com>
44
+
45
+ == First Section
46
+
47
+ gnuplot::gnuplot.txt[format="svg"]
48
+ eos
49
+
50
+ d = load_asciidoc doc
51
+ expect(d).to_not be_nil
52
+
53
+ b = d.find { |bl| bl.context == :image }
54
+ expect(b).to_not be_nil
55
+
56
+ expect(b.content_model).to eq :empty
57
+
58
+ target = b.attributes['target']
59
+ expect(target).to_not be_nil
60
+ expect(target).to match(/\.svg/)
61
+ expect(File.exist?(target)).to be true
62
+
63
+ expect(b.attributes['width']).to_not be_nil
64
+ expect(b.attributes['height']).to_not be_nil
65
+ end
66
+
67
+ it "should generate GIF images when format is set to 'gif'" do
68
+ File.write('gnuplot.txt', code)
69
+
70
+ doc = <<-eos
71
+ = Hello, Gnuplot!
72
+ Doc Writer <doc@example.com>
73
+
74
+ == First Section
75
+
76
+ gnuplot::gnuplot.txt[format="gif"]
77
+ eos
78
+
79
+ d = load_asciidoc doc
80
+ expect(d).to_not be_nil
81
+
82
+ b = d.find { |bl| bl.context == :image }
83
+ expect(b).to_not be_nil
84
+
85
+ expect(b.content_model).to eq :empty
86
+
87
+ target = b.attributes['target']
88
+ expect(target).to_not be_nil
89
+ expect(target).to match(/\.gif$/)
90
+ expect(File.exist?(target)).to be true
91
+
92
+ expect(b.attributes['width']).to_not be_nil
93
+ expect(b.attributes['height']).to_not be_nil
94
+ end
95
+
96
+
97
+ it "should generate literal blocks when format is set to 'txt'" do
98
+ doc = <<-eos
99
+ = Hello, Gnuplot!
100
+ Doc Writer <doc@example.com>
101
+
102
+ == First Section
103
+
104
+ [gnuplot, format="txt"]
105
+ ----
106
+ #{code}
107
+ ----
108
+ eos
109
+
110
+ d = load_asciidoc doc
111
+ expect(d).to_not be_nil
112
+
113
+ b = d.find { |bl| bl.context == :literal }
114
+ expect(b).to_not be_nil
115
+
116
+ expect(b.content_model).to eq :verbatim
117
+
118
+ expect(b.attributes['target']).to be_nil
119
+ end
120
+
121
+
122
+ end
123
+
124
+ describe Asciidoctor::Diagram::GnuplotBlockProcessor do
125
+ it "should generate PNG images when format is set to 'png'" do
126
+ doc = <<-eos
127
+ = Hello, Gnuplot!
128
+ Doc Writer <doc@example.com>
129
+
130
+ == First Section
131
+
132
+ [gnuplot, format="png"]
133
+ ----
134
+ #{code}
135
+ ----
136
+ eos
137
+
138
+ d = load_asciidoc doc
139
+ expect(d).to_not be_nil
140
+
141
+ b = d.find { |bl| bl.context == :image }
142
+ expect(b).to_not be_nil
143
+
144
+ expect(b.content_model).to eq :empty
145
+
146
+ target = b.attributes['target']
147
+ expect(target).to_not be_nil
148
+ expect(target).to match(/\.png$/)
149
+ expect(File.exist?(target)).to be true
150
+
151
+ expect(b.attributes['width']).to_not be_nil
152
+ expect(b.attributes['height']).to_not be_nil
153
+ end
154
+
155
+ it "should generate SVG images when format is set to 'svg'" do
156
+ doc = <<-eos
157
+ = Hello, Gnuplot!
158
+ Doc Writer <doc@example.com>
159
+
160
+ == First Section
161
+
162
+ [gnuplot, format="svg"]
163
+ ----
164
+ #{code}
165
+ ----
166
+ eos
167
+
168
+ d = load_asciidoc doc
169
+ expect(d).to_not be_nil
170
+
171
+ b = d.find { |bl| bl.context == :image }
172
+ expect(b).to_not be_nil
173
+
174
+ expect(b.content_model).to eq :empty
175
+
176
+ target = b.attributes['target']
177
+ expect(target).to_not be_nil
178
+ expect(target).to match(/\.svg/)
179
+ expect(File.exist?(target)).to be true
180
+
181
+ expect(b.attributes['width']).to_not be_nil
182
+ expect(b.attributes['height']).to_not be_nil
183
+ end
184
+
185
+ it "should raise an error when when format is set to an invalid value" do
186
+ doc = <<-eos
187
+ = Hello, Gnuplot!
188
+ Doc Writer <doc@example.com>
189
+
190
+ == First Section
191
+
192
+ [gnuplot, format="foobar"]
193
+ ----
194
+ ----
195
+ eos
196
+
197
+ expect { load_asciidoc doc }.to raise_error(/support.*format/i)
198
+ end
199
+
200
+ it "should not regenerate images when source has not changed" do
201
+ File.write('gnuplot.txt', code)
202
+
203
+ doc = <<-eos
204
+ = Hello, Gnuplot!
205
+ Doc Writer <doc@example.com>
206
+
207
+ == First Section
208
+
209
+ gnuplot::gnuplot.txt
210
+
211
+ [gnuplot, format="png"]
212
+ ----
213
+ #{code}
214
+ ----
215
+ eos
216
+
217
+ d = load_asciidoc doc
218
+ b = d.find { |bl| bl.context == :image }
219
+ expect(b).to_not be_nil
220
+ target = b.attributes['target']
221
+ mtime1 = File.mtime(target)
222
+
223
+ sleep 1
224
+
225
+ d = load_asciidoc doc
226
+
227
+ mtime2 = File.mtime(target)
228
+
229
+ expect(mtime2).to eq mtime1
230
+ end
231
+
232
+ it "should handle two block macros with the same source" do
233
+ File.write('gnuplot.txt', code)
234
+
235
+ doc = <<-eos
236
+ = Hello, Gnuplot!
237
+ Doc Writer <doc@example.com>
238
+
239
+ == First Section
240
+
241
+ gnuplot::gnuplot.txt[]
242
+ gnuplot::gnuplot.txt[]
243
+ eos
244
+
245
+ load_asciidoc doc
246
+ expect(File.exist?('gnuplot.png')).to be true
247
+ end
248
+
249
+ it "should respect target attribute in block macros" do
250
+ File.write('gnuplot.txt', code)
251
+
252
+ doc = <<-eos
253
+ = Hello, Gnuplot!
254
+ Doc Writer <doc@example.com>
255
+
256
+ == First Section
257
+
258
+ gnuplot::gnuplot.txt["foobar"]
259
+ gnuplot::gnuplot.txt["foobaz"]
260
+ eos
261
+
262
+ load_asciidoc doc
263
+ expect(File.exist?('foobar.png')).to be true
264
+ expect(File.exist?('foobaz.png')).to be true
265
+ expect(File.exist?('gnuplot.png')).to be false
266
+ end
267
+ it "should generate images with user defined size" do
268
+ doc = <<-eos
269
+ = Hello, Gnuplot!
270
+ Doc Writer <doc@example.com>
271
+
272
+ == First Section
273
+
274
+ [gnuplot, format="png",width="800", height="600"]
275
+ ----
276
+ #{code}
277
+ ----
278
+ eos
279
+
280
+ d = load_asciidoc doc
281
+ expect(d).to_not be_nil
282
+
283
+ b = d.find { |bl| bl.context == :image }
284
+ expect(b).to_not be_nil
285
+
286
+ expect(b.content_model).to eq :empty
287
+
288
+ target = b.attributes['target']
289
+ expect(target).to_not be_nil
290
+ expect(target).to match(/\.png$/)
291
+ expect(File.exist?(target)).to be true
292
+
293
+ expect(b.attributes['width']).to_not be_nil
294
+ expect(b.attributes['height']).to_not be_nil
295
+ end
296
+
297
+ it "should generate nocrop/notrasparent images" do
298
+ doc = <<-eos
299
+ = Hello, Gnuplot!
300
+ Doc Writer <doc@example.com>
301
+
302
+ == First Section
303
+
304
+ [gnuplot, format="png", crop=false, transparent=false]
305
+ ----
306
+ #{code}
307
+ ----
308
+ eos
309
+
310
+ d = load_asciidoc doc
311
+ expect(d).to_not be_nil
312
+
313
+ b = d.find { |bl| bl.context == :image }
314
+ expect(b).to_not be_nil
315
+
316
+ expect(b.content_model).to eq :empty
317
+
318
+ target = b.attributes['target']
319
+ expect(target).to_not be_nil
320
+ expect(target).to match(/\.png$/)
321
+ expect(File.exist?(target)).to be true
322
+
323
+ expect(b.attributes['width']).to_not be_nil
324
+ expect(b.attributes['height']).to_not be_nil
325
+ end
326
+
327
+ it "should generate crop/trasparent images" do
328
+ doc = <<-eos
329
+ = Hello, Gnuplot!
330
+ Doc Writer <doc@example.com>
331
+
332
+ == First Section
333
+
334
+ [gnuplot, format="png", crop=true, transparent=true]
335
+ ----
336
+ #{code}
337
+ ----
338
+ eos
339
+
340
+ d = load_asciidoc doc
341
+ expect(d).to_not be_nil
342
+
343
+ b = d.find { |bl| bl.context == :image }
344
+ expect(b).to_not be_nil
345
+
346
+ expect(b.content_model).to eq :empty
347
+
348
+ target = b.attributes['target']
349
+ expect(target).to_not be_nil
350
+ expect(target).to match(/\.png$/)
351
+ expect(File.exist?(target)).to be true
352
+
353
+ expect(b.attributes['width']).to_not be_nil
354
+ expect(b.attributes['height']).to_not be_nil
355
+ end
356
+
357
+ it "should generate image with font name" do
358
+ doc = <<-eos
359
+ = Hello, Gnuplot!
360
+ Doc Writer <doc@example.com>
361
+
362
+ == First Section
363
+
364
+ [gnuplot, format="png", font="Arial"]
365
+ ----
366
+ #{code}
367
+ ----
368
+ eos
369
+
370
+ d = load_asciidoc doc
371
+ expect(d).to_not be_nil
372
+
373
+ b = d.find { |bl| bl.context == :image }
374
+ expect(b).to_not be_nil
375
+
376
+ expect(b.content_model).to eq :empty
377
+
378
+ target = b.attributes['target']
379
+ expect(target).to_not be_nil
380
+ expect(target).to match(/\.png$/)
381
+ expect(File.exist?(target)).to be true
382
+
383
+ expect(b.attributes['width']).to_not be_nil
384
+ expect(b.attributes['height']).to_not be_nil
385
+ end
386
+
387
+ it "should generate image with font name and size" do
388
+ doc = <<-eos
389
+ = Hello, Gnuplot!
390
+ Doc Writer <doc@example.com>
391
+
392
+ == First Section
393
+
394
+ [gnuplot, format="png", font="Arial,11"]
395
+ ----
396
+ #{code}
397
+ ----
398
+ eos
399
+
400
+ d = load_asciidoc doc
401
+ expect(d).to_not be_nil
402
+
403
+ b = d.find { |bl| bl.context == :image }
404
+ expect(b).to_not be_nil
405
+
406
+ expect(b.content_model).to eq :empty
407
+
408
+ target = b.attributes['target']
409
+ expect(target).to_not be_nil
410
+ expect(target).to match(/\.png$/)
411
+ expect(File.exist?(target)).to be true
412
+
413
+ expect(b.attributes['width']).to_not be_nil
414
+ expect(b.attributes['height']).to_not be_nil
415
+ end
416
+
417
+ it "should generate image with font name and scale" do
418
+ doc = <<-eos
419
+ = Hello, Gnuplot!
420
+ Doc Writer <doc@example.com>
421
+
422
+ == First Section
423
+
424
+ [gnuplot, format="png", font="Arial", scale="0.5"]
425
+ ----
426
+ #{code}
427
+ ----
428
+ eos
429
+
430
+ d = load_asciidoc doc
431
+ expect(d).to_not be_nil
432
+
433
+ b = d.find { |bl| bl.context == :image }
434
+ expect(b).to_not be_nil
435
+
436
+ expect(b.content_model).to eq :empty
437
+
438
+ target = b.attributes['target']
439
+ expect(target).to_not be_nil
440
+ expect(target).to match(/\.png$/)
441
+ expect(File.exist?(target)).to be true
442
+
443
+ expect(b.attributes['width']).to_not be_nil
444
+ expect(b.attributes['height']).to_not be_nil
445
+ end
446
+
447
+ it %(should generate image with font background="red") do
448
+ doc = <<-eos
449
+ = Hello, Gnuplot!
450
+ Doc Writer <doc@example.com>
451
+
452
+ == First Section
453
+
454
+ [gnuplot, format="png", background="red"]
455
+ ----
456
+ #{code}
457
+ ----
458
+ eos
459
+
460
+ d = load_asciidoc doc
461
+ expect(d).to_not be_nil
462
+
463
+ b = d.find { |bl| bl.context == :image }
464
+ expect(b).to_not be_nil
465
+
466
+ expect(b.content_model).to eq :empty
467
+
468
+ target = b.attributes['target']
469
+ expect(target).to_not be_nil
470
+ expect(target).to match(/\.png$/)
471
+ expect(File.exist?(target)).to be true
472
+
473
+ expect(b.attributes['width']).to_not be_nil
474
+ expect(b.attributes['height']).to_not be_nil
475
+ end
476
+
477
+
478
+ end
@@ -0,0 +1,151 @@
1
+ require_relative 'test_helper'
2
+
3
+ code = <<-eos
4
+ \\relative c' { f d f a d f e d cis a cis e a g f e }
5
+ eos
6
+
7
+ describe Asciidoctor::Diagram::LilypondBlockMacroProcessor, :broken_on_windows do
8
+ it "should generate PNG images when format is set to 'png'" do
9
+ File.write('lilypond.txt', code)
10
+
11
+ doc = <<-eos
12
+ = Hello, Lilypond!
13
+ Doc Writer <doc@example.com>
14
+
15
+ == First Section
16
+
17
+ lilypond::lilypond.txt[format="png"]
18
+ eos
19
+
20
+ d = load_asciidoc doc
21
+ expect(d).to_not be_nil
22
+
23
+ b = d.find { |bl| bl.context == :image }
24
+ expect(b).to_not be_nil
25
+
26
+ expect(b.content_model).to eq :empty
27
+
28
+ target = b.attributes['target']
29
+ expect(target).to_not be_nil
30
+ expect(target).to match(/\.png/)
31
+ expect(File.exist?(target)).to be true
32
+
33
+ expect(b.attributes['width']).to_not be_nil
34
+ expect(b.attributes['height']).to_not be_nil
35
+ end
36
+ end
37
+
38
+ describe Asciidoctor::Diagram::LilypondBlockProcessor, :broken_on_windows do
39
+ it "should generate PNG images when format is set to 'png'" do
40
+ doc = <<-eos
41
+ = Hello, Lilypond!
42
+ Doc Writer <doc@example.com>
43
+
44
+ == First Section
45
+
46
+ [lilypond, format="png"]
47
+ ----
48
+ #{code}
49
+ ----
50
+ eos
51
+
52
+ d = load_asciidoc doc
53
+ expect(d).to_not be_nil
54
+
55
+ b = d.find { |bl| bl.context == :image }
56
+ expect(b).to_not be_nil
57
+
58
+ expect(b.content_model).to eq :empty
59
+
60
+ target = b.attributes['target']
61
+ expect(target).to_not be_nil
62
+ expect(target).to match(/\.png/)
63
+ expect(File.exist?(target)).to be true
64
+
65
+ expect(b.attributes['width']).to_not be_nil
66
+ expect(b.attributes['height']).to_not be_nil
67
+ end
68
+
69
+ it "should raise an error when when format is set to an invalid value" do
70
+ doc = <<-eos
71
+ = Hello, Lilypond!
72
+ Doc Writer <doc@example.com>
73
+
74
+ == First Section
75
+
76
+ [lilypond, format="foobar"]
77
+ ----
78
+ ----
79
+ eos
80
+
81
+ expect { load_asciidoc doc }.to raise_error(/support.*format/i)
82
+ end
83
+
84
+ it "should not regenerate images when source has not changed" do
85
+ File.write('lilypond.txt', code)
86
+
87
+ doc = <<-eos
88
+ = Hello, Lilypond!
89
+ Doc Writer <doc@example.com>
90
+
91
+ == First Section
92
+
93
+ lilypond::lilypond.txt
94
+
95
+ [lilypond, format="png"]
96
+ ----
97
+ #{code}
98
+ ----
99
+ eos
100
+
101
+ d = load_asciidoc doc
102
+ b = d.find { |bl| bl.context == :image }
103
+ expect(b).to_not be_nil
104
+ target = b.attributes['target']
105
+ mtime1 = File.mtime(target)
106
+
107
+ sleep 1
108
+
109
+ d = load_asciidoc doc
110
+
111
+ mtime2 = File.mtime(target)
112
+
113
+ expect(mtime2).to eq mtime1
114
+ end
115
+
116
+ it "should handle two block macros with the same source" do
117
+ File.write('lilypond.txt', code)
118
+
119
+ doc = <<-eos
120
+ = Hello, Lilypond!
121
+ Doc Writer <doc@example.com>
122
+
123
+ == First Section
124
+
125
+ lilypond::lilypond.txt[]
126
+ lilypond::lilypond.txt[]
127
+ eos
128
+
129
+ load_asciidoc doc
130
+ expect(File.exist?('lilypond.png')).to be true
131
+ end
132
+
133
+ it "should respect target attribute in block macros" do
134
+ File.write('lilypond.txt', code)
135
+
136
+ doc = <<-eos
137
+ = Hello, Lilypond!
138
+ Doc Writer <doc@example.com>
139
+
140
+ == First Section
141
+
142
+ lilypond::lilypond.txt["foobar"]
143
+ lilypond::lilypond.txt["foobaz"]
144
+ eos
145
+
146
+ load_asciidoc doc
147
+ expect(File.exist?('foobar.png')).to be true
148
+ expect(File.exist?('foobaz.png')).to be true
149
+ expect(File.exist?('lilypond.png')).to be false
150
+ end
151
+ end
data/spec/mermaid_spec.rb CHANGED
@@ -301,4 +301,36 @@ mermaid::mermaid.txt["dark", format="svg", theme="dark"]
301
301
  expect(File.exist?('dark.svg')).to be true
302
302
  expect(File.read('default.svg')).to_not be File.read('dark.svg')
303
303
  end
304
- end
304
+
305
+ it "should respect the puppeteerConfig attribute" do
306
+ seq_diag = <<-eos
307
+ sequenceDiagram
308
+ Alice->>John: Hello John, how are you?
309
+ John-->>Alice: Great!
310
+ eos
311
+
312
+ pptr_config = <<-eos
313
+ {
314
+ "args": ["--no-sandbox"]
315
+ }
316
+ eos
317
+ File.write('pptrconfig.txt', pptr_config)
318
+
319
+ File.write('mermaid.txt', seq_diag)
320
+
321
+ doc = <<-eos
322
+ = Hello, Mermaid!
323
+ Doc Writer <doc@example.com>
324
+
325
+ == First Section
326
+
327
+ mermaid::mermaid.txt["with_config", puppeteerConfig="pptrconfig.txt"]
328
+ mermaid::mermaid.txt["without_config"]
329
+ eos
330
+
331
+ load_asciidoc doc
332
+ expect(File.exist?('with_config.png')).to be true
333
+ expect(File.exist?('without_config.png')).to be true
334
+ expect(File.size('with_config.png')).to be File.size('without_config.png')
335
+ end
336
+ end