asciidoctor-diagram 2.0.2 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +25 -0
  3. data/README.adoc +13 -4
  4. data/lib/asciidoctor-diagram.rb +3 -0
  5. data/lib/asciidoctor-diagram/a2s/converter.rb +10 -6
  6. data/lib/asciidoctor-diagram/blockdiag/converter.rb +1 -1
  7. data/lib/asciidoctor-diagram/bpmn/converter.rb +3 -3
  8. data/lib/asciidoctor-diagram/diagram_converter.rb +5 -1
  9. data/lib/asciidoctor-diagram/diagram_processor.rb +64 -38
  10. data/lib/asciidoctor-diagram/diagram_source.rb +64 -17
  11. data/lib/asciidoctor-diagram/ditaa/converter.rb +6 -2
  12. data/lib/asciidoctor-diagram/dpic.rb +7 -0
  13. data/lib/asciidoctor-diagram/dpic/converter.rb +30 -0
  14. data/lib/asciidoctor-diagram/dpic/extension.rb +14 -0
  15. data/lib/asciidoctor-diagram/gnuplot/converter.rb +8 -8
  16. data/lib/asciidoctor-diagram/graphviz/converter.rb +2 -2
  17. data/lib/asciidoctor-diagram/http/converter.rb +25 -5
  18. data/lib/asciidoctor-diagram/http/server.rb +10 -5
  19. data/lib/asciidoctor-diagram/lilypond/converter.rb +2 -2
  20. data/lib/asciidoctor-diagram/meme/converter.rb +7 -7
  21. data/lib/asciidoctor-diagram/mermaid/converter.rb +16 -15
  22. data/lib/asciidoctor-diagram/msc/converter.rb +2 -2
  23. data/lib/asciidoctor-diagram/pikchr.rb +7 -0
  24. data/lib/asciidoctor-diagram/pikchr/converter.rb +26 -0
  25. data/lib/asciidoctor-diagram/pikchr/extension.rb +14 -0
  26. data/lib/asciidoctor-diagram/plantuml/converter.rb +3 -3
  27. data/lib/asciidoctor-diagram/smcat/converter.rb +3 -3
  28. data/lib/asciidoctor-diagram/svgbob/converter.rb +2 -2
  29. data/lib/asciidoctor-diagram/symbolator.rb +7 -0
  30. data/lib/asciidoctor-diagram/symbolator/converter.rb +23 -0
  31. data/lib/asciidoctor-diagram/symbolator/extension.rb +14 -0
  32. data/lib/asciidoctor-diagram/syntrax/converter.rb +9 -6
  33. data/lib/asciidoctor-diagram/util/cli_generator.rb +18 -0
  34. data/lib/asciidoctor-diagram/util/gif.rb +2 -2
  35. data/lib/asciidoctor-diagram/util/pdf.rb +2 -2
  36. data/lib/asciidoctor-diagram/util/png.rb +2 -2
  37. data/lib/asciidoctor-diagram/util/svg.rb +46 -19
  38. data/lib/asciidoctor-diagram/vega/converter.rb +2 -2
  39. data/lib/asciidoctor-diagram/version.rb +1 -1
  40. data/spec/a2s_spec.rb +2 -140
  41. data/spec/blockdiag_spec.rb +2 -200
  42. data/spec/bpmn_spec.rb +52 -92
  43. data/spec/bytefield_spec.rb +2 -140
  44. data/spec/ditaa_spec.rb +5 -143
  45. data/spec/dpic_spec.rb +19 -0
  46. data/spec/erd_spec.rb +2 -199
  47. data/spec/gnuplot_spec.rb +2 -255
  48. data/spec/graphviz_spec.rb +6 -145
  49. data/spec/lilypond_spec.rb +2 -140
  50. data/spec/mermaid_spec.rb +2 -199
  51. data/spec/msc_spec.rb +2 -199
  52. data/spec/nomnoml_spec.rb +4 -142
  53. data/spec/pikchr_spec.rb +51 -0
  54. data/spec/plantuml_spec.rb +6 -578
  55. data/spec/shaape_spec.rb +9 -221
  56. data/spec/shared_examples.rb +552 -0
  57. data/spec/smcat_spec.rb +2 -140
  58. data/spec/svgbob_spec.rb +2 -140
  59. data/spec/symbolator_spec.rb +23 -0
  60. data/spec/syntrax_spec.rb +5 -215
  61. data/spec/test_helper.rb +1 -22
  62. data/spec/tikz_spec.rb +4 -24
  63. data/spec/umlet_spec.rb +2 -58
  64. data/spec/vega_spec.rb +4 -117
  65. data/spec/wavedrom_spec.rb +2 -199
  66. metadata +20 -6
  67. data/spec/bpmn-example.xml +0 -44
@@ -0,0 +1,19 @@
1
+ require_relative 'test_helper'
2
+
3
+ code = <<-eos
4
+ arrow "$u$" above
5
+ S: circle rad 10/72.27 # 10 pt
6
+ line right 0.35
7
+ G: box "$G(s)$"
8
+ arrow "$y$" above
9
+ line -> down G.ht from last arrow then left last arrow.c.x-S.x then to S.s
10
+ "$-\;$" below rjust
11
+ eos
12
+
13
+ describe Asciidoctor::Diagram::DpicBlockMacroProcessor, :broken_on_travis, :broken_on_windows do
14
+ include_examples "block_macro", :dpic, code, [:svg]
15
+ end
16
+
17
+ describe Asciidoctor::Diagram::DpicBlockProcessor, :broken_on_travis, :broken_on_windows do
18
+ include_examples "block", :dpic, code, [:svg]
19
+ end
@@ -84,206 +84,9 @@ player 1--* play_player
84
84
  eos
85
85
 
86
86
  describe Asciidoctor::Diagram::ErdBlockMacroProcessor, :broken_on_travis, :broken_on_windows do
87
- it "should generate PNG images when format is set to 'png'" do
88
- File.write('erd.txt', code)
89
-
90
- doc = <<-eos
91
- = Hello, Erd!
92
- Doc Writer <doc@example.com>
93
-
94
- == First Section
95
-
96
- erd::erd.txt[format="png"]
97
- eos
98
-
99
- d = load_asciidoc doc
100
- expect(d).to_not be_nil
101
-
102
- b = d.find { |bl| bl.context == :image }
103
- expect(b).to_not be_nil
104
-
105
- expect(b.content_model).to eq :empty
106
-
107
- target = b.attributes['target']
108
- expect(target).to_not be_nil
109
- expect(target).to match(/\.png$/)
110
- expect(File.exist?(target)).to be true
111
-
112
- expect(b.attributes['width']).to_not be_nil
113
- expect(b.attributes['height']).to_not be_nil
114
- end
115
-
116
- it "should generate SVG images when format is set to 'svg'" do
117
- File.write('erd.txt', code)
118
-
119
- doc = <<-eos
120
- = Hello, Erd!
121
- Doc Writer <doc@example.com>
122
-
123
- == First Section
124
-
125
- erd::erd.txt[format="svg"]
126
- eos
127
-
128
- d = load_asciidoc doc
129
- expect(d).to_not be_nil
130
-
131
- b = d.find { |bl| bl.context == :image }
132
- expect(b).to_not be_nil
133
-
134
- expect(b.content_model).to eq :empty
135
-
136
- target = b.attributes['target']
137
- expect(target).to_not be_nil
138
- expect(target).to match(/\.svg/)
139
- expect(File.exist?(target)).to be true
140
-
141
- expect(b.attributes['width']).to_not be_nil
142
- expect(b.attributes['height']).to_not be_nil
143
- end
87
+ include_examples "block_macro", :erd, code, [:svg]
144
88
  end
145
89
 
146
90
  describe Asciidoctor::Diagram::ErdBlockProcessor, :broken_on_travis, :broken_on_windows do
147
- it "should generate PNG images when format is set to 'png'" do
148
- doc = <<-eos
149
- = Hello, Erd!
150
- Doc Writer <doc@example.com>
151
-
152
- == First Section
153
-
154
- [erd, format="png"]
155
- ----
156
- #{code}
157
- ----
158
- eos
159
-
160
- d = load_asciidoc doc
161
- expect(d).to_not be_nil
162
-
163
- b = d.find { |bl| bl.context == :image }
164
- expect(b).to_not be_nil
165
-
166
- expect(b.content_model).to eq :empty
167
-
168
- target = b.attributes['target']
169
- expect(target).to_not be_nil
170
- expect(target).to match(/\.png$/)
171
- expect(File.exist?(target)).to be true
172
-
173
- expect(b.attributes['width']).to_not be_nil
174
- expect(b.attributes['height']).to_not be_nil
175
- end
176
-
177
- it "should generate SVG images when format is set to 'svg'" do
178
- doc = <<-eos
179
- = Hello, Erd!
180
- Doc Writer <doc@example.com>
181
-
182
- == First Section
183
-
184
- [erd, format="svg"]
185
- ----
186
- #{code}
187
- ----
188
- eos
189
-
190
- d = load_asciidoc doc
191
- expect(d).to_not be_nil
192
-
193
- b = d.find { |bl| bl.context == :image }
194
- expect(b).to_not be_nil
195
-
196
- expect(b.content_model).to eq :empty
197
-
198
- target = b.attributes['target']
199
- expect(target).to_not be_nil
200
- expect(target).to match(/\.svg/)
201
- expect(File.exist?(target)).to be true
202
-
203
- expect(b.attributes['width']).to_not be_nil
204
- expect(b.attributes['height']).to_not be_nil
205
- end
206
-
207
- it "should raise an error when when format is set to an invalid value" do
208
- doc = <<-eos
209
- = Hello, Erd!
210
- Doc Writer <doc@example.com>
211
-
212
- == First Section
213
-
214
- [erd, format="foobar"]
215
- ----
216
- ----
217
- eos
218
-
219
- expect { load_asciidoc doc }.to raise_error(/support.*format/i)
220
- end
221
-
222
- it "should not regenerate images when source has not changed" do
223
- File.write('erd.txt', code)
224
-
225
- doc = <<-eos
226
- = Hello, Erd!
227
- Doc Writer <doc@example.com>
228
-
229
- == First Section
230
-
231
- erd::erd.txt
232
-
233
- [erd, format="png"]
234
- ----
235
- #{code}
236
- ----
237
- eos
238
-
239
- d = load_asciidoc doc
240
- b = d.find { |bl| bl.context == :image }
241
- expect(b).to_not be_nil
242
- target = b.attributes['target']
243
- mtime1 = File.mtime(target)
244
-
245
- sleep 1
246
-
247
- d = load_asciidoc doc
248
-
249
- mtime2 = File.mtime(target)
250
-
251
- expect(mtime2).to eq mtime1
252
- end
253
-
254
- it "should handle two block macros with the same source" do
255
- File.write('erd.txt', code)
256
-
257
- doc = <<-eos
258
- = Hello, Erd!
259
- Doc Writer <doc@example.com>
260
-
261
- == First Section
262
-
263
- erd::erd.txt[]
264
- erd::erd.txt[]
265
- eos
266
-
267
- load_asciidoc doc
268
- expect(File.exist?('erd.png')).to be true
269
- end
270
-
271
- it "should respect target attribute in block macros" do
272
- File.write('erd.txt', code)
273
-
274
- doc = <<-eos
275
- = Hello, Erd!
276
- Doc Writer <doc@example.com>
277
-
278
- == First Section
279
-
280
- erd::erd.txt["foobar"]
281
- erd::erd.txt["foobaz"]
282
- eos
283
-
284
- load_asciidoc doc
285
- expect(File.exist?('foobar.png')).to be true
286
- expect(File.exist?('foobaz.png')).to be true
287
- expect(File.exist?('erd.png')).to be false
288
- end
91
+ include_examples "block", :erd, code, [:svg]
289
92
  end
@@ -5,265 +5,12 @@ plot [0:5][0:20] x**2 title 'O(n^2)'
5
5
  eos
6
6
 
7
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
-
8
+ include_examples "block_macro", :gnuplot, code, [:png, :svg, :gif, :txt]
122
9
  end
123
10
 
124
11
  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
12
+ include_examples "block", :gnuplot, code, [:png, :svg, :gif, :txt]
131
13
 
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
14
  it "should generate images with user defined size" do
268
15
  doc = <<-eos
269
16
  = Hello, Gnuplot!