asciidoctor-diagram 1.5.5 → 1.5.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +20 -3
- data/README.adoc +29 -2
- data/Rakefile +0 -5
- data/lib/asciidoctor-diagram.rb +3 -0
- data/lib/asciidoctor-diagram/blockdiag/extension.rb +2 -1
- data/lib/asciidoctor-diagram/extensions.rb +25 -6
- data/lib/asciidoctor-diagram/graphviz/extension.rb +3 -1
- data/lib/asciidoctor-diagram/meme/extension.rb +7 -6
- data/lib/asciidoctor-diagram/mermaid/extension.rb +5 -4
- data/lib/asciidoctor-diagram/msc.rb +8 -0
- data/lib/asciidoctor-diagram/msc/extension.rb +44 -0
- data/lib/asciidoctor-diagram/plantuml/extension.rb +2 -1
- data/lib/asciidoctor-diagram/svgbob.rb +8 -0
- data/lib/asciidoctor-diagram/svgbob/extension.rb +38 -0
- data/lib/asciidoctor-diagram/syntrax.rb +8 -0
- data/lib/asciidoctor-diagram/syntrax/extension.rb +54 -0
- data/lib/asciidoctor-diagram/version.rb +1 -1
- data/spec/blockdiag_spec.rb +2 -2
- data/spec/msc_spec.rb +230 -0
- data/spec/plantuml_spec.rb +119 -14
- data/spec/shaape_spec.rb +2 -2
- data/spec/svgbob_spec.rb +167 -0
- data/spec/syntrax_spec.rb +228 -0
- data/spec/test_helper.rb +7 -0
- metadata +14 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 320af9d1c2acc687468d82b303007b9a76ed6077
|
4
|
+
data.tar.gz: df304c796960d919f5e8e67978c374d9aa0d9d5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afeab72e6cf3da5d2c0170ab2dad7bed50a0d87225ecc3ebdb72b03b46b036ccc1df320152241fb4f4b07a6cf09fb5bdc16061c1f4cdafd971bad16bc81784b3
|
7
|
+
data.tar.gz: 8748508ed16e390815b3f957a559c553f16a2505c8951e5f5dc21af06e15af87034e7529c0bf25a66b08992c10ef0d0b7d0503bc8b55f0c39645c526ca5d390b
|
data/CHANGELOG.adoc
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
= Asciidoctor-diagram Changelog
|
2
2
|
|
3
|
-
==
|
3
|
+
== 1.5.6
|
4
|
+
|
5
|
+
Enhancements::
|
6
|
+
|
7
|
+
* Issue #167: Add support for Msc diagrams
|
8
|
+
* Issue #170: Add support for Syntrax diagrams
|
9
|
+
* Add support for SvgBob diagrams
|
10
|
+
* The output format can now be configured globally per diagram type using a document attribute with the name `<diagram_type>-format`.
|
11
|
+
As an example to generate all plantuml diagrams as SVG set the attribute `plantuml-format` to `svg` in your document header or via the command line.
|
12
|
+
|
13
|
+
Bug Fixes::
|
14
|
+
|
15
|
+
* Issue #164: Restore numbered captions for diagrams when using asciidoctor >= 1.5.6
|
4
16
|
|
5
17
|
== 1.5.5
|
6
18
|
|
@@ -8,14 +20,19 @@ Enhancements::
|
|
8
20
|
|
9
21
|
* Update PlantUML to revision 2017.15
|
10
22
|
* Issue #147: Add support for PlantUML SVG output (@puffybsd)
|
11
|
-
|
12
|
-
|
23
|
+
|
13
24
|
Bug Fixes::
|
14
25
|
|
15
26
|
* Issue #145: Incremental runs on documents containing meme diagrams would fail
|
16
27
|
* Issue #150: Resolve Ditaa character encoding issues
|
17
28
|
* Avoid error when the `PATH` environment variable is not defined (@BrentDouglas)
|
18
29
|
|
30
|
+
== 1.5.4.1
|
31
|
+
|
32
|
+
Enhancements::
|
33
|
+
|
34
|
+
* Resolve compatibility issues with Asciidoctor 1.5.6 (@robertpanzer, @mojavelinux)
|
35
|
+
|
19
36
|
== 1.5.4
|
20
37
|
|
21
38
|
Enhancements::
|
data/README.adoc
CHANGED
@@ -24,6 +24,7 @@ ifndef::env-site[:status:]
|
|
24
24
|
:uri-imagemagick: http://www.imagemagick.org
|
25
25
|
:uri-java: http://java.sun.com
|
26
26
|
:uri-mermaid: http://knsv.github.io/mermaid/
|
27
|
+
:uri-mscgen: http://www.mcternan.me.uk/mscgen/
|
27
28
|
:uri-nwdiag: http://blockdiag.com/en/nwdiag/index.html
|
28
29
|
:uri-packetdiag: http://blockdiag.com/en/nwdiag/index.html
|
29
30
|
:uri-phantomjs: http://phantomjs.org
|
@@ -32,6 +33,8 @@ ifndef::env-site[:status:]
|
|
32
33
|
:uri-rackdiag: http://blockdiag.com/en/nwdiag/index.html
|
33
34
|
:uri-seqdiag: http://blockdiag.com/en/seqdiag/index.html
|
34
35
|
:uri-shaape: https://github.com/christiangoltz/shaape
|
36
|
+
:uri-svgbob: https://github.com/ivanceras/svgbobrus
|
37
|
+
:uri-syntrax: https://kevinpt.github.io/syntrax/
|
35
38
|
:uri-umlet: http://www.umlet.com/
|
36
39
|
:uri-wavedrom: http://wavedrom.com
|
37
40
|
:uri-wavedromeditor: https://github.com/wavedrom/wavedrom.github.io/releases
|
@@ -39,7 +42,7 @@ ifndef::env-site[:status:]
|
|
39
42
|
|
40
43
|
Asciidoctor Diagram is a set of Asciidoctor extensions that enable you to add diagrams, which you describe using plain text, to your AsciiDoc document.
|
41
44
|
|
42
|
-
The extensions
|
45
|
+
The extensions supports the BlockDiag ({uri-blockdiag}[BlockDiag], {uri-seqdiag}[SeqDiag], {uri-actdiag}[ActDiag], {uri-nwdiag}[NwDiag]), {uri-ditaa}[Ditaa], {uri-erd}[Erd], {uri-dot}[GraphViz], {uri-mermaid}[Mermaid], {uri-mscgen}[Msc], {uri-plantuml}[PlantUML], {uri-shaape}[Shaape], {uri-svgbob}[SvgBob], {uri-syntrax}[Syntrax], {uri-umlet}[UMLet] and {uri-wavedrom}[WaveDrom] syntax.
|
43
46
|
|
44
47
|
Each extension runs the diagram processor to generate an SVG, PNG, or TXT file from the input text.
|
45
48
|
The generated file is then inserted into your converted document.
|
@@ -114,12 +117,15 @@ The following diagram types and output formats are available:
|
|
114
117
|
|{uri-dot}[graphviz] | |{check}|{check}|{check}|
|
115
118
|
|<<meme,meme>> |{check}| |{check}| |
|
116
119
|
|{uri-mermaid}[mermaid] | | |{check}|{check}|
|
120
|
+
|{uri-mscgen}[msc] | | |{check}|{check}|
|
117
121
|
|{uri-nwdiag}[nwdiag] | |{check}|{check}|{check}|
|
118
122
|
|{uri-packetdiag}[packetdiag]| |{check}|{check}|{check}|
|
119
123
|
|{uri-plantuml}[plantuml] | | |{check}|{check}|{check}
|
120
124
|
|{uri-rackdiag}[rackdiag] | |{check}|{check}|{check}|
|
121
125
|
|{uri-seqdiag}[seqdiag] | |{check}|{check}|{check}|
|
122
126
|
|{uri-shaape}[shaape] | | |{check}|{check}|
|
127
|
+
|{uri-svgbob}[svgbob] | | | |{check}|
|
128
|
+
|{uri-syntrax}[syntrax] | |{check}|{check}|{check}|
|
123
129
|
|{uri-umlet}[umlet] |{check}|{check}|{check}|{check}|
|
124
130
|
|{uri-wavedrom}[wavedrom] | | |{check}|{check}|
|
125
131
|
|===
|
@@ -233,7 +239,7 @@ or load and register each extension individually.
|
|
233
239
|
require 'asciidoctor-diagram/<extension_name>'
|
234
240
|
----
|
235
241
|
|
236
|
-
`<extension_name>` can be one of `blockdiag`, `ditaa`, `erd`, `graphviz`, `meme`, `mermaid`, `plantuml`, `shaape`, or `wavedrom`.
|
242
|
+
`<extension_name>` can be one of `blockdiag`, `ditaa`, `erd`, `graphviz`, `meme`, `mermaid`, `msc`, `plantuml`, `shaape`, `svgbob`, `syntrax`, or `wavedrom`.
|
237
243
|
|
238
244
|
Requiring one or more of these files will automatically register the extensions for all processed documents.
|
239
245
|
|
@@ -283,12 +289,15 @@ The following table lists the tools that are required for each diagram type, the
|
|
283
289
|
|graphviz |{uri-graphviz}[GraphViz] |`dot` or `graphvizdot`
|
284
290
|
|meme |{uri-imagemagick}[ImageMagick] |`convert` and `identify`
|
285
291
|
|mermaid |{uri-mermaid}[Mermaid] |`mermaid`
|
292
|
+
|msc |{uri-mscgen}[Mscgen] |`mscgen`
|
286
293
|
|nwdiag |{uri-nwdiag}[NwDiag] |`nwdiag`
|
287
294
|
|packetdiag |{uri-nwdiag}[NwDiag] |`packetdiag`
|
288
295
|
|plantuml |{uri-java}[Java] |`java`
|
289
296
|
|rackdiag |{uri-nwdiag}[NwDiag] |`rackdiag`
|
290
297
|
|seqdiag |{uri-seqdiag}[SeqDiag] |`seqdiag`
|
291
298
|
|shaape |{uri-shaape}[Shaape] |`shaape`
|
299
|
+
|svgbob |{uri-svgbob}[SvgBob] |`svgbob`
|
300
|
+
|syntrax |{uri-syntrax}[Syntrax] |`syntrax`
|
292
301
|
|umlet |{uri-umlet}[Umlet] |`umlet`
|
293
302
|
.2+|wavedrom |{uri-wavedromeditor}[WaveDrom Editor] |`wavedrom`
|
294
303
|
|{uri-wavedromcli}[WaveDrom CLI] and {uri-phantomjs}[PhantomJS] |`wavedrom` and `phantomjs`
|
@@ -394,6 +403,14 @@ The attribute name at the block level should be prefixed with the name of the di
|
|
394
403
|
|width |unspecified |The width of the generated image.
|
395
404
|
|===
|
396
405
|
|
406
|
+
==== Msc
|
407
|
+
|
408
|
+
[cols=">,<,<",options="header"]
|
409
|
+
|===
|
410
|
+
|Name |Default value |Description
|
411
|
+
|font |unspecified |The name of the font that should be used by mscgen
|
412
|
+
|===
|
413
|
+
|
397
414
|
==== PlantUML
|
398
415
|
|
399
416
|
[cols=">,<,<",options="header"]
|
@@ -401,3 +418,13 @@ The attribute name at the block level should be prefixed with the name of the di
|
|
401
418
|
|Name |Default value |Description
|
402
419
|
|config |unspecified |Path to a config file to pass to PlantUML.
|
403
420
|
|===
|
421
|
+
|
422
|
+
==== Syntrax
|
423
|
+
|
424
|
+
[cols=">,<,<",options="header"]
|
425
|
+
|===
|
426
|
+
|Name |Default value |Description
|
427
|
+
|scale |1 |A scale factor that is applied to the image.
|
428
|
+
|style |unspecifed |Path to a style config file to pass to Syntrax.
|
429
|
+
|transparent |false |Makes the background of the image transparent instead of opaque white.
|
430
|
+
|===
|
data/Rakefile
CHANGED
@@ -3,11 +3,6 @@ require 'rspec/core/rake_task'
|
|
3
3
|
|
4
4
|
test = RSpec::Core::RakeTask.new(:test)
|
5
5
|
|
6
|
-
if ENV['APPVEYOR']
|
7
|
-
# Exclude diagram types that require external libraries that are difficult to build on Windows.
|
8
|
-
test.exclude_pattern = 'spec/**/{blockdiag,shaape}_spec.rb'
|
9
|
-
end
|
10
|
-
|
11
6
|
task :default => :test
|
12
7
|
|
13
8
|
spec = Gem::Specification.load('asciidoctor-diagram.gemspec')
|
data/lib/asciidoctor-diagram.rb
CHANGED
@@ -4,8 +4,11 @@ require_relative 'asciidoctor-diagram/erd'
|
|
4
4
|
require_relative 'asciidoctor-diagram/graphviz'
|
5
5
|
require_relative 'asciidoctor-diagram/meme'
|
6
6
|
require_relative 'asciidoctor-diagram/mermaid'
|
7
|
+
require_relative 'asciidoctor-diagram/msc'
|
7
8
|
require_relative 'asciidoctor-diagram/plantuml'
|
8
9
|
require_relative 'asciidoctor-diagram/salt'
|
9
10
|
require_relative 'asciidoctor-diagram/shaape'
|
11
|
+
require_relative 'asciidoctor-diagram/svgbob'
|
12
|
+
require_relative 'asciidoctor-diagram/syntrax'
|
10
13
|
require_relative 'asciidoctor-diagram/umlet'
|
11
14
|
require_relative 'asciidoctor-diagram/wavedrom'
|
@@ -100,13 +100,14 @@ module Asciidoctor
|
|
100
100
|
include Which
|
101
101
|
|
102
102
|
def blockdiag(tool, parent, source, format)
|
103
|
+
inherit_prefix = name
|
103
104
|
cmd_name = tool.downcase
|
104
105
|
|
105
106
|
# On Debian based systems the Python 3.x packages python3-(act|block|nw|seq)diag executables with
|
106
107
|
# a '3' suffix.
|
107
108
|
alt_cmd_name = "#{tool.downcase}3"
|
108
109
|
|
109
|
-
font_path = source.attr('fontpath', nil,
|
110
|
+
font_path = source.attr('fontpath', nil, inherit_prefix)
|
110
111
|
|
111
112
|
generate_stdin(which(parent, cmd_name, :alt_cmds => [alt_cmd_name]), format.to_s, source.to_s) do |tool_path, output_path|
|
112
113
|
args = [tool_path, '-a', '-o', Platform.native_path(output_path), "-T#{format.to_s}"]
|
@@ -98,7 +98,7 @@ module Asciidoctor
|
|
98
98
|
def process(parent, reader_or_target, attributes)
|
99
99
|
source = create_source(parent, reader_or_target, attributes.dup)
|
100
100
|
|
101
|
-
format = source.attributes.delete('format') || self.class.default_format
|
101
|
+
format = source.attributes.delete('format') || source.attr('format', self.class.default_format, name)
|
102
102
|
format = format.to_sym if format.respond_to?(:to_sym)
|
103
103
|
|
104
104
|
raise "Format undefined" unless format
|
@@ -108,14 +108,21 @@ module Asciidoctor
|
|
108
108
|
raise "#{self.class.name} does not support output format #{format}" unless generator_info
|
109
109
|
|
110
110
|
begin
|
111
|
+
title = source.attributes.delete 'title'
|
112
|
+
caption = source.attributes.delete 'caption'
|
113
|
+
|
111
114
|
case generator_info[:type]
|
112
115
|
when :literal
|
113
|
-
create_literal_block(parent, source, generator_info)
|
116
|
+
block = create_literal_block(parent, source, generator_info)
|
114
117
|
else
|
115
|
-
create_image_block(parent, source, format, generator_info)
|
118
|
+
block = create_image_block(parent, source, format, generator_info)
|
116
119
|
end
|
120
|
+
|
121
|
+
block.title = title
|
122
|
+
block.assign_caption(caption, 'figure')
|
123
|
+
block
|
117
124
|
rescue => e
|
118
|
-
case
|
125
|
+
case source.attr('on-error', 'log', 'diagram')
|
119
126
|
when 'abort'
|
120
127
|
raise e
|
121
128
|
else
|
@@ -151,6 +158,8 @@ module Asciidoctor
|
|
151
158
|
end
|
152
159
|
|
153
160
|
private
|
161
|
+
DIGIT_CHAR_RANGE = ('0'.ord)..('9'.ord)
|
162
|
+
|
154
163
|
def create_image_block(parent, source, format, generator_info)
|
155
164
|
image_name = "#{source.image_name}.#{format}"
|
156
165
|
image_dir = image_output_dir(parent)
|
@@ -210,6 +219,16 @@ module Asciidoctor
|
|
210
219
|
'Diagram'
|
211
220
|
end
|
212
221
|
|
222
|
+
image_attributes['alt'] = parent.sub_specialchars image_attributes['alt']
|
223
|
+
|
224
|
+
parent.document.register(:images, image_name)
|
225
|
+
if (scaledwidth = image_attributes['scaledwidth'])
|
226
|
+
# append % to scaledwidth if ends in number (no units present)
|
227
|
+
if DIGIT_CHAR_RANGE.include?((scaledwidth[-1] || 0).ord)
|
228
|
+
image_attributes['scaledwidth'] = %(#{scaledwidth}%)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
213
232
|
Asciidoctor::Block.new parent, :image, :content_model => :empty, :attributes => image_attributes
|
214
233
|
end
|
215
234
|
|
@@ -384,8 +403,8 @@ module Asciidoctor
|
|
384
403
|
|
385
404
|
if value.nil? && inherit
|
386
405
|
case inherit
|
387
|
-
when String
|
388
|
-
value = @parent_block.attr("#{inherit}-#{name}", default_value, true)
|
406
|
+
when String, Symbol
|
407
|
+
value = @parent_block.attr("#{inherit.to_s}-#{name}", default_value, true)
|
389
408
|
else
|
390
409
|
value = @parent_block.attr(name, default_value, true)
|
391
410
|
end
|
@@ -19,10 +19,12 @@ module Asciidoctor
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def graphviz(parent, source, format)
|
22
|
+
inherit_prefix = name
|
23
|
+
|
22
24
|
generate_stdin(which(parent, 'dot', :alt_attrs => ['graphvizdot']), format.to_s, source.to_s) do |tool_path, output_path|
|
23
25
|
args = [tool_path, "-o#{Platform.native_path(output_path)}", "-T#{format.to_s}"]
|
24
26
|
|
25
|
-
layout = source.attr('layout', nil,
|
27
|
+
layout = source.attr('layout', nil, inherit_prefix)
|
26
28
|
args << "-K#{layout}" if layout
|
27
29
|
|
28
30
|
args
|
@@ -21,19 +21,20 @@ module Asciidoctor
|
|
21
21
|
def meme(parent_block, source, format)
|
22
22
|
convert = which(parent_block, 'convert')
|
23
23
|
identify = which(parent_block, 'identify')
|
24
|
+
inherit_prefix = name
|
24
25
|
|
25
|
-
bg_img = source.attr('background', nil,
|
26
|
+
bg_img = source.attr('background', nil, inherit_prefix)
|
26
27
|
raise "background attribute is required" unless bg_img
|
27
28
|
|
28
29
|
bg_img = parent_block.normalize_system_path(bg_img, parent_block.attr('imagesdir'))
|
29
30
|
|
30
31
|
top_label = source.attr('top')
|
31
32
|
bottom_label = source.attr('bottom')
|
32
|
-
fill_color = source.attr('fillColor', 'white',
|
33
|
-
stroke_color = source.attr('strokeColor', 'black',
|
34
|
-
stroke_width = source.attr('strokeWidth', '2',
|
35
|
-
font = source.attr('font', 'Impact',
|
36
|
-
options = source.attr('options', '',
|
33
|
+
fill_color = source.attr('fillColor', 'white', inherit_prefix)
|
34
|
+
stroke_color = source.attr('strokeColor', 'black', inherit_prefix)
|
35
|
+
stroke_width = source.attr('strokeWidth', '2', inherit_prefix)
|
36
|
+
font = source.attr('font', 'Impact', inherit_prefix)
|
37
|
+
options = source.attr('options', '', inherit_prefix).split(',')
|
37
38
|
noupcase = options.include?('noupcase')
|
38
39
|
|
39
40
|
dimensions = Cli.run(identify, '-format', '%w %h', bg_img).match(/(?<w>\d+) (?<h>\d+)/)
|
@@ -20,27 +20,28 @@ module Asciidoctor
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def mermaid(parent_block, source, format)
|
23
|
+
inherit_prefix = name
|
23
24
|
mermaid = which(parent_block, 'mermaid')
|
24
25
|
config['mermaid>=6'] ||= ::Asciidoctor::Diagram::Cli.run(mermaid, '--version').split('.')[0].to_i >= 6
|
25
26
|
# Mermaid >= 6.0.0 requires PhantomJS 2.1; older version required 1.9
|
26
27
|
phantomjs = which(parent_block, 'phantomjs', :alt_attrs => [config['mermaid>=6'] ? 'phantomjs_2' : 'phantomjs_19'])
|
27
28
|
|
28
|
-
css = source.attr('css', nil,
|
29
|
+
css = source.attr('css', nil, inherit_prefix)
|
29
30
|
if css
|
30
31
|
css = parent_block.normalize_system_path(css, source.base_dir)
|
31
32
|
end
|
32
33
|
|
33
|
-
gantt_config = source.attr('ganttConfig', nil,
|
34
|
+
gantt_config = source.attr('ganttConfig', nil, inherit_prefix) || source.attr('ganttconfig', nil, inherit_prefix)
|
34
35
|
if gantt_config
|
35
36
|
gantt_config = parent_block.normalize_system_path(gantt_config, source.base_dir)
|
36
37
|
end
|
37
38
|
|
38
|
-
seq_config = source.attr('sequenceConfig', nil,
|
39
|
+
seq_config = source.attr('sequenceConfig', nil, inherit_prefix) || source.attr('sequenceconfig', nil, inherit_prefix)
|
39
40
|
if seq_config
|
40
41
|
seq_config = parent_block.normalize_system_path(seq_config, source.base_dir)
|
41
42
|
end
|
42
43
|
|
43
|
-
width = source.attr('width', nil,
|
44
|
+
width = source.attr('width', nil, inherit_prefix)
|
44
45
|
|
45
46
|
generate_file(mermaid, 'mmd', format.to_s, source.to_s) do |tool_path, input_path, output_path|
|
46
47
|
output_dir = File.dirname(output_path)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative '../extensions'
|
2
|
+
require_relative '../util/cli_generator'
|
3
|
+
require_relative '../util/platform'
|
4
|
+
require_relative '../util/which'
|
5
|
+
|
6
|
+
module Asciidoctor
|
7
|
+
module Diagram
|
8
|
+
# @private
|
9
|
+
module Mscgen
|
10
|
+
include CliGenerator
|
11
|
+
include Which
|
12
|
+
|
13
|
+
def self.included(mod)
|
14
|
+
[:png, :svg].each do |f|
|
15
|
+
mod.register_format(f, :image) do |parent, source|
|
16
|
+
mscgen(parent, source, f)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def mscgen(parent, source, format)
|
22
|
+
inherit_prefix = name
|
23
|
+
font = source.attr('font', nil, inherit_prefix)
|
24
|
+
|
25
|
+
generate_stdin(which(parent, 'mscgen'), format.to_s, source.to_s) do |tool_path, output_path|
|
26
|
+
args = [tool_path, '-o', Platform.native_path(output_path), '-T', format.to_s]
|
27
|
+
if font
|
28
|
+
args << '-F' << font
|
29
|
+
end
|
30
|
+
args << '-'
|
31
|
+
args
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class MscBlockProcessor < Extensions::DiagramBlockProcessor
|
37
|
+
include Mscgen
|
38
|
+
end
|
39
|
+
|
40
|
+
class MscBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
|
41
|
+
include Mscgen
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -18,13 +18,14 @@ module Asciidoctor
|
|
18
18
|
def plantuml(parent_block, source, tag, mime_type)
|
19
19
|
Java.load
|
20
20
|
|
21
|
+
inherit_prefix = name
|
21
22
|
code = preprocess_code(parent_block, source, tag)
|
22
23
|
|
23
24
|
headers = {
|
24
25
|
'Accept' => mime_type
|
25
26
|
}
|
26
27
|
|
27
|
-
config_file = source.attr('plantumlconfig', nil, true) || source.attr('config', nil,
|
28
|
+
config_file = source.attr('plantumlconfig', nil, true) || source.attr('config', nil, inherit_prefix)
|
28
29
|
if config_file
|
29
30
|
headers['X-PlantUML-Config'] = File.expand_path(config_file, source.attr('docdir', nil, true))
|
30
31
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative '../extensions'
|
2
|
+
require_relative '../util/cli_generator'
|
3
|
+
require_relative '../util/platform'
|
4
|
+
require_relative '../util/which'
|
5
|
+
|
6
|
+
module Asciidoctor
|
7
|
+
module Diagram
|
8
|
+
# @private
|
9
|
+
module Svgbob
|
10
|
+
include CliGenerator
|
11
|
+
include Which
|
12
|
+
|
13
|
+
def self.included(mod)
|
14
|
+
[:svg].each do |f|
|
15
|
+
mod.register_format(f, :image) do |parent, source|
|
16
|
+
svgbob(parent, source, f)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def svgbob(parent, source, format)
|
22
|
+
inherit_prefix = name
|
23
|
+
|
24
|
+
generate_stdin(which(parent, 'svgbob'), format.to_s, source.to_s) do |tool_path, output_path|
|
25
|
+
[tool_path, '-o', Platform.native_path(output_path)]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class SvgBobBlockProcessor < Extensions::DiagramBlockProcessor
|
31
|
+
include Svgbob
|
32
|
+
end
|
33
|
+
|
34
|
+
class SvgBobBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
|
35
|
+
include Svgbob
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|