asciidoctor-plantuml 0.0.12 → 0.0.13

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: a0eec1ab5b66560c09d54f1c5a44f4ca764b41fd8112a2c1ba791de3936ff4d8
4
- data.tar.gz: a806b6892710155ae5d36aee9e3fe0830f30d4606ec8c6b27b3533187f389f80
3
+ metadata.gz: de8d640d579d7d3c4171db4f02210fbe508868d8c70de10d4ce1a622bc8b14b1
4
+ data.tar.gz: a86d4afa322bf30c3f074c7c53e38dab0dcabf52df340ba685bae463143aa41f
5
5
  SHA512:
6
- metadata.gz: d4924630cd2c797eed3741a6f1b70c2f8eba15b781884a7b76934d090869570615712dd637be42d472610acbf4ea13894c07319c059a213aa9a3c2559e4ac305
7
- data.tar.gz: 4243885ff01513113b5e34412532196b708250cba696c0c094b7a77cb96c656b2302a60aabd37589a6ee398df401506b76cb929ed3ac5631efa54928af580dce
6
+ metadata.gz: 5e81d9655d877bc2d53492d954f08e7176e5c8da48eb0ac82d693368092684781fb173ae8b36baacab5f71f974d12596036c9dd6fccd3c3752a7ebcfcafe1384
7
+ data.tar.gz: 69eba0374e2621ca0abbb100154fd8f4627e09bbd5192d09feea79315f16a7486309deb60c76042b174068b61de29ae6294d1ac001582391b8d03907dfea4422
@@ -80,10 +80,9 @@ module Asciidoctor
80
80
  end
81
81
 
82
82
  def plantuml_content_format(code, format, attrs = {})
83
- if %w[png svg].include?(format)
84
- plantuml_img_content(code, format, attrs)
85
- elsif format == 'txt' && txt_enabled?
86
- plantuml_txt_content(code, format, attrs)
83
+ if %w[png svg txt].include?(format) &&
84
+ method("#{format}_enabled?").call
85
+ method("plantuml_#{format}_content").call(code, format, attrs)
87
86
  else
88
87
  plantuml_invalid_content(format, attrs)
89
88
  end
@@ -125,7 +124,7 @@ module Asciidoctor
125
124
  plantuml_ascii_content(f.read, attrs)
126
125
  end
127
126
  rescue OpenURI::HTTPError, Errno::ECONNREFUSED, SocketError
128
- plantuml_img_content(code, format, attrs)
127
+ plantuml_png_content(code, format, attrs)
129
128
  end
130
129
 
131
130
  def plantuml_ascii_content(code, attrs = {})
@@ -140,7 +139,7 @@ module Asciidoctor
140
139
  content + '</div>'
141
140
  end
142
141
 
143
- def plantuml_img_content(code, format, attrs = {})
142
+ def plantuml_png_content(code, format, attrs = {})
144
143
  content = '<div class="imageblock">'
145
144
  content += '<div class="content">'
146
145
  content += '<img '
@@ -154,37 +153,43 @@ module Asciidoctor
154
153
  content + '</div>'
155
154
  end
156
155
 
157
- def plantuml_invalid_content(format, attrs = {})
158
- content = '<div class="listingblock">'
156
+ def plantuml_svg_content(code, format, attrs = {})
157
+ content = '<div class="imageblock">'
159
158
  content += '<div class="content">'
160
- content += '<pre '
159
+ content += '<object type="image/svg+xml" '
160
+ content += "data=\"#{gen_url(code, format)}\" "
161
161
  content += "id=\"#{attrs['id']}\" " if attrs['id']
162
- content += 'class="plantuml plantuml-error"> '
163
- content += "PlantUML Error: Invalid format \"#{format}\""
164
- content += '</pre>'
162
+ content += "width=\"#{attrs['width']}\" " if attrs['width']
163
+ content += "height=\"#{attrs['height']}\" " if attrs['height']
164
+ content += '>'
165
+ attrs['id'] = 'fallback_' + attrs['id'] if attrs['id']
166
+ content += plantuml_png_content(code, format, attrs)
167
+ content += '</object>'
165
168
  content += '</div>'
166
169
  content + '</div>'
167
170
  end
168
171
 
172
+ def plantuml_invalid_content(format, attrs = {})
173
+ error = "PlantUML Error: Invalid format \"#{format}\""
174
+ _plantuml_error_content(error, attrs)
175
+ end
176
+
169
177
  def plantuml_server_unavailable_content(url, attrs = {})
170
- content = '<div class="listingblock">'
171
- content += '<div class="content">'
172
- content += '<pre '
173
- content += "id=\"#{attrs['id']}\" " if attrs['id']
174
- content += 'class="plantuml plantuml-error"> '
175
- content += "Error: cannot connect to PlantUML server at \"#{url}\""
176
- content += '</pre>'
177
- content += '</div>'
178
- content + '</div>'
178
+ error = "Error: cannot connect to PlantUML server at \"#{url}\""
179
+ _plantuml_error_content(error, attrs)
179
180
  end
180
181
 
181
182
  def plantuml_disabled_content(code, attrs = {})
183
+ _plantuml_error_content(code, attrs)
184
+ end
185
+
186
+ def _plantuml_error_content(error, attrs = {})
182
187
  content = '<div class="listingblock">'
183
188
  content += '<div class="content">'
184
189
  content += '<pre '
185
190
  content += "id=\"#{attrs['id']}\" " if attrs['id']
186
191
  content += 'class="plantuml plantuml-error">\n'
187
- content += code
192
+ content += error
188
193
  content += '</pre>'
189
194
  content += '</div>'
190
195
  content + '</div>'
@@ -259,7 +264,7 @@ module Asciidoctor
259
264
  class BlockProcessor < Asciidoctor::Extensions::BlockProcessor
260
265
  use_dsl
261
266
  named :plantuml
262
- on_context :listing
267
+ on_context :listing, :literal
263
268
  content_model :simple
264
269
 
265
270
  def process(parent, target, attrs)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Asciidoctor
4
4
  module PlantUML
5
- VERSION = '0.0.12'
5
+ VERSION = '0.0.13'
6
6
  end
7
7
  end
@@ -17,6 +17,17 @@ DOC_BASIC = <<~ENDOFSTRING
17
17
  ----
18
18
  ENDOFSTRING
19
19
 
20
+ DOC_BASIC_LITERAL = <<~ENDOFSTRING
21
+ = Hello PlantUML!
22
+
23
+ [plantuml, format="png"]
24
+ .Title Of this
25
+ ....
26
+ User -> (Start)
27
+ User --> (Use the application) : Label
28
+ ....
29
+ ENDOFSTRING
30
+
20
31
  DOC_BASIC2 = <<~ENDOFSTRING
21
32
  = Hello PlantUML!
22
33
 
@@ -31,6 +42,20 @@ DOC_BASIC2 = <<~ENDOFSTRING
31
42
  ----
32
43
  ENDOFSTRING
33
44
 
45
+ DOC_BASIC2_LITERAL = <<~ENDOFSTRING
46
+ = Hello PlantUML!
47
+
48
+ [plantuml, format="png"]
49
+ .Title Of this
50
+ [[fig-xref]]
51
+ ....
52
+ @startuml
53
+ User -> (Start)
54
+ User --> (Use the application) : Label
55
+ @enduml
56
+ ....
57
+ ENDOFSTRING
58
+
34
59
  DOC_BASIC3 = <<~ENDOFSTRING
35
60
  = Hello Compound PlantUML!
36
61
 
@@ -43,6 +68,18 @@ DOC_BASIC3 = <<~ENDOFSTRING
43
68
  ----
44
69
  ENDOFSTRING
45
70
 
71
+ DOC_BASIC3_LITERAL = <<~ENDOFSTRING
72
+ = Hello Compound PlantUML!
73
+
74
+ [plantuml, format="png"]
75
+ ....
76
+ [COMP1]
77
+ [COMP2]
78
+ [COMP1] -> [COMP2]
79
+ [COMP2] --> [COMP3]
80
+ ....
81
+ ENDOFSTRING
82
+
46
83
  DOC_ID = <<~ENDOFSTRING
47
84
  = Hello PlantUML!
48
85
 
@@ -105,6 +142,28 @@ DOC_MULTI = <<~ENDOFSTRING
105
142
  ----
106
143
  ENDOFSTRING
107
144
 
145
+ DOC_MULTI_LITERAL = <<~ENDOFSTRING
146
+ = Hello PlantUML!
147
+
148
+ [plantuml, format="png"]
149
+ ....
150
+ User -> (Start)
151
+ User --> (Use the application) : Label
152
+ ....
153
+
154
+ [plantuml, format="png"]
155
+ ....
156
+ User -> (Start)
157
+ User --> (Use the application) : Label
158
+ ....
159
+
160
+ [plantuml, format="txt"]
161
+ ....
162
+ User -> (Start)
163
+ User --> (Use the application) : Label
164
+ ....
165
+ ENDOFSTRING
166
+
108
167
  DOC_TXT = <<~ENDOFSTRING
109
168
  = Hello PlantUML!
110
169
 
@@ -115,15 +174,28 @@ DOC_TXT = <<~ENDOFSTRING
115
174
  ----
116
175
  ENDOFSTRING
117
176
 
177
+ DOC_SVG = <<~ENDOFSTRING
178
+ = Hello PlantUML!
179
+
180
+ [plantuml, format="svg"]
181
+ ----
182
+ User -> (Start)
183
+ User --> (Use the application) : Label
184
+ ----
185
+ ENDOFSTRING
186
+
118
187
  class PlantUmlTest < Test::Unit::TestCase
119
188
  GENURL = 'http://localhost:8080/plantuml/png/U9npA2v9B2efpStX2YrEBLBGjLFG20Q9Q4Bv804WIw4a8rKXiQ0W9pCviIGpFqzJmKh19p4fDOVB8JKl1QWT05kd5wq0'
120
189
  GENURL2 = 'http://localhost:8080/plantuml/png/U9npA2v9B2efpStXYdRszmqmZ8NGHh4mleAkdGAAa15G22Pc7Clba9gN0jGE00W75Cm0'
121
190
  GENURL_ENCODING = 'http://localhost:8080/plantuml/png/~1U9npA2v9B2efpStX2YrEBLBGjLFG20Q9Q4Bv804WIw4a8rKXiQ0W9pCviIGpFqzJmKh19p4fDOVB8JKl1QWT05kd5wq0'
191
+ SVGGENURL = 'http://localhost:8080/plantuml/svg/~1U9npA2v9B2efpStX2YrEBLBGjLFG20Q9Q4Bv804WIw4a8rKXiQ0W9pCviIGpFqzJmKh19p4fDOVB8JKl1QWT05kd5wq0'
122
192
 
123
193
  def setup
124
194
  Asciidoctor::PlantUml.configure do |c|
125
195
  c.url = 'http://localhost:8080/plantuml'
126
196
  c.txt_enable = true
197
+ c.png_enable = true
198
+ c.svg_enable = true
127
199
  end
128
200
  end
129
201
 
@@ -140,8 +212,40 @@ class PlantUmlTest < Test::Unit::TestCase
140
212
  assert_equal GENURL, element['src']
141
213
  end
142
214
 
215
+ def test_plantuml_block_literal_processor
216
+ html = ::Asciidoctor.convert(
217
+ StringIO.new(DOC_BASIC_LITERAL), backend: 'html5'
218
+ )
219
+ page = Nokogiri::HTML(html)
220
+
221
+ elements = page.css('img.plantuml')
222
+
223
+ assert_equal elements.size, 1
224
+
225
+ element = elements.first
226
+
227
+ assert_equal GENURL, element['src']
228
+ end
229
+
143
230
  def test_plantuml_block_processor2
144
- html = ::Asciidoctor.convert(StringIO.new(DOC_BASIC2), backend: 'html5')
231
+ html = ::Asciidoctor.convert(
232
+ StringIO.new(DOC_BASIC2), backend: 'html5'
233
+ )
234
+ page = Nokogiri::HTML(html)
235
+
236
+ elements = page.css('img.plantuml')
237
+
238
+ assert_equal elements.size, 1
239
+
240
+ element = elements.first
241
+
242
+ assert_equal GENURL, element['src']
243
+ end
244
+
245
+ def test_plantuml_block_literal_processor2
246
+ html = ::Asciidoctor.convert(
247
+ StringIO.new(DOC_BASIC2_LITERAL), backend: 'html5'
248
+ )
145
249
  page = Nokogiri::HTML(html)
146
250
 
147
251
  elements = page.css('img.plantuml')
@@ -166,6 +270,21 @@ class PlantUmlTest < Test::Unit::TestCase
166
270
  assert_equal GENURL2, element['src']
167
271
  end
168
272
 
273
+ def test_plantuml_block_literal_processor3
274
+ html = ::Asciidoctor.convert(
275
+ StringIO.new(DOC_BASIC3_LITERAL), backend: 'html5'
276
+ )
277
+ page = Nokogiri::HTML(html)
278
+
279
+ elements = page.css('img.plantuml')
280
+
281
+ assert_equal elements.size, 1
282
+
283
+ element = elements.first
284
+
285
+ assert_equal GENURL2, element['src']
286
+ end
287
+
169
288
  def test_plantuml_block_processor_encoding
170
289
  Asciidoctor::PlantUml.configure do |c|
171
290
  c.encoding = 'deflate'
@@ -229,7 +348,7 @@ class PlantUmlTest < Test::Unit::TestCase
229
348
  assert_equal elements.size, 1
230
349
  end
231
350
 
232
- def test_plantuml_multiple
351
+ def test_plantuml_multiple_listing
233
352
  html = ::Asciidoctor.convert(StringIO.new(DOC_MULTI), backend: 'html5')
234
353
  page = Nokogiri::HTML(html)
235
354
 
@@ -240,6 +359,19 @@ class PlantUmlTest < Test::Unit::TestCase
240
359
  assert_equal elements.size, 0
241
360
  end
242
361
 
362
+ def test_plantuml_multiple_literal
363
+ html = ::Asciidoctor.convert(
364
+ StringIO.new(DOC_MULTI_LITERAL), backend: 'html5'
365
+ )
366
+ page = Nokogiri::HTML(html)
367
+
368
+ elements = page.css('img.plantuml')
369
+ assert elements.size >= 2
370
+
371
+ elements = page.css('.plantuml-error')
372
+ assert_equal elements.size, 0
373
+ end
374
+
243
375
  def test_plantuml_bad_server
244
376
  Asciidoctor::PlantUml.configure do |c|
245
377
  c.url = 'http://nonexistent.com/plantuml'
@@ -299,4 +431,44 @@ class PlantUmlTest < Test::Unit::TestCase
299
431
  elements = page.css('pre.plantuml-error')
300
432
  assert_equal elements.size, 1
301
433
  end
434
+
435
+ def test_svg
436
+ Asciidoctor::PlantUml.configure do |c|
437
+ c.url = 'http://localhost:8080/plantuml'
438
+ c.svg_enable = true
439
+ end
440
+
441
+ html = ::Asciidoctor.convert(StringIO.new(DOC_SVG), backend: 'html5')
442
+ page = Nokogiri::HTML(html)
443
+ elements = page.css("object[type='image/svg+xml']")
444
+ assert_equal elements.size, 1
445
+
446
+ element = elements.first
447
+
448
+ assert_equal SVGGENURL, element['data']
449
+ end
450
+
451
+ def test_disable_svg
452
+ Asciidoctor::PlantUml.configure do |c|
453
+ c.url = 'http://localhost:8080/plantuml'
454
+ c.svg_enable = false
455
+ end
456
+
457
+ html = ::Asciidoctor.convert(StringIO.new(DOC_SVG), backend: 'html5')
458
+ page = Nokogiri::HTML(html)
459
+ elements = page.css('pre.plantuml-error')
460
+ assert_equal elements.size, 1
461
+ end
462
+
463
+ def test_disable_png
464
+ Asciidoctor::PlantUml.configure do |c|
465
+ c.url = 'http://localhost:8080/plantuml'
466
+ c.png_enable = false
467
+ end
468
+
469
+ html = ::Asciidoctor.convert(StringIO.new(DOC_BASIC_LITERAL), backend: 'html5')
470
+ page = Nokogiri::HTML(html)
471
+ elements = page.css('pre.plantuml-error')
472
+ assert_equal elements.size, 1
473
+ end
302
474
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-plantuml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Horacio Sanson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-11 00:00:00.000000000 Z
11
+ date: 2021-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.66'
61
+ version: '1.7'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.66'
68
+ version: '1.7'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: test-unit
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -130,8 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  requirements: []
133
- rubyforge_project:
134
- rubygems_version: 2.7.6
133
+ rubygems_version: 3.1.2
135
134
  signing_key:
136
135
  specification_version: 4
137
136
  summary: Asciidoctor support for PlantUML diagrams.