asciidoctor-plantuml 0.0.12 → 0.0.13

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: 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.