asciidoctor-plantuml 0.0.2 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed5ecef9a1e029694a9d18e2800a7a95869455e6
4
- data.tar.gz: b47a156f1e832ac35092f3ff6dfec092ebda99a6
3
+ metadata.gz: 4f6246a07cb6ee77b07fdecc5e32d30ef9def178
4
+ data.tar.gz: 995226fa46cd4ea93df420da01adb17f9456e6e5
5
5
  SHA512:
6
- metadata.gz: 4b8ee673ee3d5a3432a27d94bee9525e7e941791f6055a529300a5a065a1d659925d7d63b8a5d942e35ec4ec6ca11d2a5387232c9fb2cd2e28988b0500850742
7
- data.tar.gz: 34a6ebd97cacd0ee47361c6ba1e62aa014f6e4ba028f0e7a43863a51212ae2985be179db107db811daf3094097453189d77938d3d65f3e5eac0ad5ba3f86cb22
6
+ metadata.gz: b5718a88809d793a13d872a84e146acce5adb6d17561b15f2ad5f983d2b65fb876f5a3dbbb3d637e2f0bd5321cfb1944afbb14f87f920ecf5061c47b6467dcd1
7
+ data.tar.gz: e0864e23a800018aa552c7a96df18bb7c7985ab4d7a08d1ec4c91d3244d7f7b45afc5960006053c5b7fb81e751c3c75e6b3110339c45f3f0f2af492b817ae145
@@ -43,16 +43,84 @@ module Asciidoctor
43
43
  PlantUml::configuration.url
44
44
  end
45
45
 
46
- def plantuml_content(code, format, attrs = {})
47
- content = "<img "
46
+ def plantuml_content(code, attrs = {})
47
+
48
+ testing = attrs["test"] == "true"
49
+
50
+ format = attrs["format"] || DEFAULT_FORMAT
51
+
52
+ case format
53
+ when "png"
54
+ plantuml_img_content(code, format, attrs)
55
+ when "txt"
56
+ plantuml_txt_content(code, format, attrs)
57
+ when "svg"
58
+ plantuml_img_content(code, format, attrs)
59
+ else
60
+ plantuml_invalid_content(format, attrs)
61
+ end
62
+ end
63
+
64
+ def plantuml_txt_content(code, format, attrs = {})
65
+ url = gen_url(code, format)
66
+ content = "<div class=\"listingblock\">"
67
+ content += "<div class=\"content\">"
68
+ content += "<pre "
69
+ content +="id=\"#{attrs['id']}\" " if attrs['id']
70
+ content +="class=\"plantuml\">\n"
71
+
72
+ begin
73
+ open(url) do |f|
74
+ content += f.read
75
+ end
76
+ rescue
77
+ content += "Failed to query PlantUML server #{url}"
78
+ end
79
+
80
+ content +="</pre>"
81
+ content += "</div>"
82
+ content += "</div>"
83
+ end
84
+
85
+ def plantuml_img_content(code, format, attrs = {})
86
+ content = "<div class=\"imageblock\">"
87
+ content += "<div class=\"content\">"
88
+ content += "<img "
48
89
  content +="id=\"#{attrs['id']}\" " if attrs['id']
49
90
  content +="class=\"plantuml\" "
50
91
  content +="width=\"#{attrs['width']}\" " if attrs['width']
51
92
  content +="height=\"#{attrs['height']}\" " if attrs['height']
52
93
  content +="alt=\"#{attrs['alt']}\" " if attrs['alt']
53
94
  content +="src=\"#{gen_url(code, format)}\" />"
95
+ content += "</div>"
96
+ content += "</div>"
97
+ end
98
+
99
+ def plantuml_invalid_content(format, attrs = {})
100
+ content = "<div class=\"listingblock\">"
101
+ content += "<div class=\"content\">"
102
+ content += "<pre "
103
+ content +="id=\"#{attrs['id']}\" " if attrs['id']
104
+ content +="class=\"plantuml plantuml-error\"> "
105
+ content += "PlantUML Error: Invalid format \"#{format}\""
106
+ content +="</pre>"
107
+ content += "</div>"
108
+ content += "</div>"
109
+ end
110
+
111
+ def plantuml_server_unavailable_content(url, attrs = {})
112
+ content = "<div class=\"listingblock\">"
113
+ content += "<div class=\"content\">"
114
+ content += "<pre "
115
+ content +="id=\"#{attrs['id']}\" " if attrs['id']
116
+ content +="class=\"plantuml plantuml-error\"> "
117
+ content += "PlantUML Error: cannot connect to PlantUML server at \"#{url}\""
118
+ content +="</pre>"
119
+ content += "</div>"
120
+ content += "</div>"
54
121
  end
55
122
 
123
+
56
124
  # Compression code used to generate PlantUML URLs. Taken directly from the
57
125
  # Transcoder class in the PlantUML java code.
58
126
  def gen_url(text, format)
@@ -142,22 +210,6 @@ module Asciidoctor
142
210
 
143
211
  def process(parent, target, attrs)
144
212
 
145
- testing = attrs["test"] == "true"
146
-
147
- check_url = join_paths(server_url, "/png/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000")
148
-
149
- if ! check_server(check_url) && ! testing
150
- content = "<div class='plantuml'>PlantUML server [#{check_url}] is unreachable</div>"
151
- return create_plantuml_block(parent, content)
152
- end
153
-
154
- format = attrs["format"] || DEFAULT_FORMAT
155
-
156
- if ! valid_format?(format)
157
- content = "<div class='plantuml'>Invalid format #{format}</div>"
158
- return create_plantuml_block(parent, content)
159
- end
160
-
161
213
  lines = target.lines
162
214
 
163
215
  if !(target.lines[0] =~ /@startuml/)
@@ -168,7 +220,8 @@ module Asciidoctor
168
220
  lines += ["@enduml"]
169
221
  end
170
222
 
171
- content = plantuml_content(lines.join("\n"), format, attrs)
223
+ content = plantuml_content(lines.join("\n"), attrs)
224
+
172
225
  return create_plantuml_block(parent, content)
173
226
 
174
227
  end
@@ -1,5 +1,5 @@
1
1
  module Asciidoctor
2
2
  module PlantUML
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -8,8 +8,10 @@ DOC_BASIC = <<-eos
8
8
  = Hello PlantUML!
9
9
 
10
10
  [plantuml, format="png", test="true"]
11
+ --
11
12
  User -> (Start)
12
13
  User --> (Use the application) : Label
14
+ --
13
15
  eos
14
16
 
15
17
  DOC_BASIC2 = <<-eos
@@ -61,6 +63,10 @@ DOC_MULTI = <<-eos
61
63
  User -> (Start)
62
64
  User --> (Use the application) : Label
63
65
 
66
+ [plantuml, format="png", test="true"]
67
+ User -> (Start)
68
+ User --> (Use the application) : Label
69
+
64
70
  [plantuml, format="txt", test="true"]
65
71
  User -> (Start)
66
72
  User --> (Use the application) : Label
@@ -70,6 +76,12 @@ class PlantUmlTest < Test::Unit::TestCase
70
76
 
71
77
  GENURL = "http://localhost:8080/plantuml/png/U9npA2v9B2efpStX2YrEBLBGjLFG20Q9Q4Bv804WIw4a8rKXiQ0W9pCviIGpFqzJmKh19p4fDOVB8JKl1QWT05kd5wq0"
72
78
 
79
+ def setup
80
+ Asciidoctor::PlantUml.configure do |c|
81
+ c.url = "http://localhost:8080/plantuml"
82
+ end
83
+ end
84
+
73
85
  def test_plantuml_block_processor
74
86
 
75
87
  html = ::Asciidoctor.convert(StringIO.new(DOC_BASIC), backend: "html5")
@@ -145,11 +157,9 @@ class PlantUmlTest < Test::Unit::TestCase
145
157
 
146
158
  page = Nokogiri::HTML(html)
147
159
 
148
- elements = page.css('img.plantuml')
149
- assert_equal elements.size, 0
150
-
151
- elements = page.css('div.plantuml')
160
+ elements = page.css('pre.plantuml-error')
152
161
  assert_equal elements.size, 1
162
+
153
163
  end
154
164
 
155
165
  def test_plantuml_multiple
@@ -161,6 +171,23 @@ class PlantUmlTest < Test::Unit::TestCase
161
171
 
162
172
  assert_equal elements.size, 2
163
173
 
174
+ elements = page.css('pre.plantuml')
175
+ assert_equal elements.size, 1
176
+
177
+ end
178
+
179
+ def test_plantuml_bad_server
180
+
181
+ Asciidoctor::PlantUml.configure do |c|
182
+ c.url = "http://nonexistent.com/plantuml"
183
+ end
184
+
185
+ html = ::Asciidoctor.convert(StringIO.new(DOC_MULTI), backend: "html5")
186
+ page = Nokogiri::HTML(html)
187
+
188
+ elements = page.css('img.plantuml')
189
+ assert_equal elements.size, 2
190
+
164
191
  end
165
192
 
166
193
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-plantuml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Horacio Sanson