asciidoctor-diagram 1.5.18 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of asciidoctor-diagram might be problematic. Click here for more details.

Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +66 -0
  3. data/README.adoc +98 -23
  4. data/examples/features.adoc +2 -2
  5. data/lib/asciidoctor-diagram.rb +8 -0
  6. data/lib/asciidoctor-diagram/a2s/converter.rb +55 -0
  7. data/lib/asciidoctor-diagram/a2s/extension.rb +6 -52
  8. data/lib/asciidoctor-diagram/blockdiag/converter.rb +37 -0
  9. data/lib/asciidoctor-diagram/blockdiag/extension.rb +9 -116
  10. data/lib/asciidoctor-diagram/bpmn.rb +7 -0
  11. data/lib/asciidoctor-diagram/bpmn/converter.rb +62 -0
  12. data/lib/asciidoctor-diagram/bpmn/extension.rb +14 -0
  13. data/lib/asciidoctor-diagram/bytefield.rb +7 -0
  14. data/lib/asciidoctor-diagram/bytefield/converter.rb +26 -0
  15. data/lib/asciidoctor-diagram/bytefield/extension.rb +14 -0
  16. data/lib/asciidoctor-diagram/diagram_converter.rb +19 -0
  17. data/lib/asciidoctor-diagram/diagram_processor.rb +345 -0
  18. data/lib/asciidoctor-diagram/diagram_source.rb +306 -0
  19. data/lib/asciidoctor-diagram/ditaa/converter.rb +86 -0
  20. data/lib/asciidoctor-diagram/ditaa/extension.rb +6 -71
  21. data/lib/asciidoctor-diagram/dpic.rb +7 -0
  22. data/lib/asciidoctor-diagram/dpic/converter.rb +30 -0
  23. data/lib/asciidoctor-diagram/dpic/extension.rb +14 -0
  24. data/lib/asciidoctor-diagram/erd/converter.rb +31 -0
  25. data/lib/asciidoctor-diagram/erd/extension.rb +6 -35
  26. data/lib/asciidoctor-diagram/gnuplot.rb +7 -0
  27. data/lib/asciidoctor-diagram/gnuplot/converter.rb +63 -0
  28. data/lib/asciidoctor-diagram/gnuplot/extension.rb +14 -0
  29. data/lib/asciidoctor-diagram/graphviz/converter.rb +32 -0
  30. data/lib/asciidoctor-diagram/graphviz/extension.rb +6 -35
  31. data/lib/asciidoctor-diagram/http/converter.rb +99 -0
  32. data/lib/asciidoctor-diagram/http/server.rb +127 -0
  33. data/lib/asciidoctor-diagram/lilypond.rb +7 -0
  34. data/lib/asciidoctor-diagram/lilypond/converter.rb +54 -0
  35. data/lib/asciidoctor-diagram/lilypond/extension.rb +14 -0
  36. data/lib/asciidoctor-diagram/meme/converter.rb +122 -0
  37. data/lib/asciidoctor-diagram/meme/extension.rb +5 -107
  38. data/lib/asciidoctor-diagram/mermaid/converter.rb +179 -0
  39. data/lib/asciidoctor-diagram/mermaid/extension.rb +6 -159
  40. data/lib/asciidoctor-diagram/msc/converter.rb +35 -0
  41. data/lib/asciidoctor-diagram/msc/extension.rb +6 -36
  42. data/lib/asciidoctor-diagram/nomnoml/converter.rb +25 -0
  43. data/lib/asciidoctor-diagram/nomnoml/extension.rb +6 -28
  44. data/lib/asciidoctor-diagram/pikchr.rb +7 -0
  45. data/lib/asciidoctor-diagram/pikchr/converter.rb +26 -0
  46. data/lib/asciidoctor-diagram/pikchr/extension.rb +14 -0
  47. data/lib/asciidoctor-diagram/plantuml/converter.rb +117 -0
  48. data/lib/asciidoctor-diagram/plantuml/extension.rb +10 -119
  49. data/lib/asciidoctor-diagram/shaape/converter.rb +25 -0
  50. data/lib/asciidoctor-diagram/shaape/extension.rb +6 -28
  51. data/lib/asciidoctor-diagram/smcat.rb +7 -0
  52. data/lib/asciidoctor-diagram/smcat/converter.rb +44 -0
  53. data/lib/asciidoctor-diagram/smcat/extension.rb +14 -0
  54. data/lib/asciidoctor-diagram/svgbob/converter.rb +49 -0
  55. data/lib/asciidoctor-diagram/svgbob/extension.rb +6 -28
  56. data/lib/asciidoctor-diagram/symbolator.rb +7 -0
  57. data/lib/asciidoctor-diagram/symbolator/converter.rb +23 -0
  58. data/lib/asciidoctor-diagram/symbolator/extension.rb +14 -0
  59. data/lib/asciidoctor-diagram/syntrax/converter.rb +55 -0
  60. data/lib/asciidoctor-diagram/syntrax/extension.rb +6 -51
  61. data/lib/asciidoctor-diagram/tikz/converter.rb +56 -0
  62. data/lib/asciidoctor-diagram/tikz/extension.rb +6 -60
  63. data/lib/asciidoctor-diagram/umlet/converter.rb +24 -0
  64. data/lib/asciidoctor-diagram/umlet/extension.rb +6 -28
  65. data/lib/asciidoctor-diagram/util/cli.rb +14 -3
  66. data/lib/asciidoctor-diagram/util/cli_generator.rb +19 -1
  67. data/lib/asciidoctor-diagram/util/gif.rb +2 -2
  68. data/lib/asciidoctor-diagram/util/java.rb +1 -1
  69. data/lib/asciidoctor-diagram/util/java_socket.rb +7 -9
  70. data/lib/asciidoctor-diagram/util/pdf.rb +2 -2
  71. data/lib/asciidoctor-diagram/util/png.rb +2 -2
  72. data/lib/asciidoctor-diagram/util/svg.rb +38 -19
  73. data/lib/asciidoctor-diagram/util/which.rb +0 -29
  74. data/lib/asciidoctor-diagram/vega/converter.rb +47 -0
  75. data/lib/asciidoctor-diagram/vega/extension.rb +6 -44
  76. data/lib/asciidoctor-diagram/version.rb +1 -1
  77. data/lib/asciidoctor-diagram/wavedrom/converter.rb +50 -0
  78. data/lib/asciidoctor-diagram/wavedrom/extension.rb +6 -46
  79. data/lib/ditaa-1.3.15.jar +0 -0
  80. data/lib/ditaamini-0.12.jar +0 -0
  81. data/lib/plantuml-1.3.15.jar +0 -0
  82. data/lib/plantuml.jar +0 -0
  83. data/lib/server-1.3.15.jar +0 -0
  84. data/spec/bpmn-example.xml +44 -0
  85. data/spec/bpmn_spec.rb +96 -0
  86. data/spec/bytefield_spec.rb +230 -0
  87. data/spec/ditaa_spec.rb +32 -0
  88. data/spec/dpic_spec.rb +74 -0
  89. data/spec/gnuplot_spec.rb +478 -0
  90. data/spec/lilypond_spec.rb +151 -0
  91. data/spec/mermaid_spec.rb +33 -1
  92. data/spec/pikchr_spec.rb +106 -0
  93. data/spec/plantuml_spec.rb +90 -1
  94. data/spec/smcat_spec.rb +164 -0
  95. data/spec/symbolator_spec.rb +200 -0
  96. data/spec/test_helper.rb +0 -18
  97. metadata +73 -11
  98. data/lib/asciidoctor-diagram/extensions.rb +0 -568
  99. data/lib/ditaa-1.3.13.jar +0 -0
  100. data/lib/ditaamini-0.11.jar +0 -0
  101. data/lib/plantuml-1.3.13.jar +0 -0
  102. data/lib/server-1.3.13.jar +0 -0
@@ -1,131 +1,22 @@
1
- require_relative '../extensions'
2
- require_relative '../util/which'
3
- require 'uri'
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
4
3
 
5
4
  module Asciidoctor
6
5
  module Diagram
7
- # @private
8
- module PlantUml
9
- include Which
10
-
11
- private
12
-
13
- JARS = [
14
- 'plantuml-1.3.13.jar',
15
- 'plantuml.jar',
16
- 'jlatexmath-minimal-1.0.5.jar',
17
- 'batik-all-1.10.jar'
18
- ].map do |jar|
19
- File.expand_path File.join('../..', jar), File.dirname(__FILE__)
20
- end
21
- Java.classpath.concat JARS
22
-
23
- def plantuml(parent_block, source, tag, mime_type)
24
- Java.load
25
-
26
- inherit_prefix = name
27
- code = preprocess_code(parent_block, source, tag)
28
-
29
- headers = {
30
- 'Accept' => mime_type
31
- }
32
-
33
- config_file = source.attr('plantumlconfig', nil, true) || source.attr('config', nil, inherit_prefix)
34
- if config_file
35
- headers['X-PlantUML-Config'] = File.expand_path(config_file, source.attr('docdir', nil, true))
36
- end
37
-
38
- dot = which(parent_block, 'dot', :alt_attrs => ['graphvizdot'], :raise_on_error => false)
39
- if dot
40
- headers['X-Graphviz'] = ::Asciidoctor::Diagram::Platform.host_os_path(dot)
41
- end
42
-
43
- response = Java.send_request(
44
- :url => '/plantuml',
45
- :body => code,
46
- :headers => headers
47
- )
48
-
49
- unless response[:code] == 200
50
- raise Java.create_error("PlantUML image generation failed", response)
51
- end
52
-
53
- response[:body]
54
- end
55
-
56
- def preprocess_code(parent, source, tag)
57
- code = source.to_s
58
- base_dir = source.base_dir
59
-
60
- code = "@start#{tag}\n#{code}\n@end#{tag}" unless code.index("@start") && code.index("@end")
61
-
62
- code.gsub!(/(?<=<img:)[^>]+(?=>)/) do |match|
63
- resolve_path(match, parent, parent.attr('imagesdir'))
64
- end
65
-
66
- code.gsub!(/(?:(?<=!include\s)|(?<=!includesub\s))\s*[^<][^!\n\r]+/) do |match|
67
- resolve_path(match.lstrip, parent, base_dir)
68
- end
69
-
70
- code
71
- end
72
-
73
- def resolve_path(path, parent, base_dir)
74
- if path =~ ::URI::ABS_URI
75
- uri = ::URI.parse(path)
76
- if uri.scheme == 'file'
77
- parent.normalize_system_path(uri.path, base_dir)
78
- else
79
- parent.normalize_web_path(path)
80
- end
81
- else
82
- parent.normalize_system_path(path, base_dir)
83
- end
84
- end
85
-
86
- def self.included(mod)
87
- mod.register_format(:png, :image) do |parent_block, source|
88
- plantuml(parent_block, source, mod.tag, 'image/png')
89
- end
90
- mod.register_format(:svg, :image) do |parent_block, source|
91
- plantuml(parent_block, source, mod.tag, 'image/svg+xml')
92
- end
93
- mod.register_format(:txt, :literal) do |parent_block, source|
94
- plantuml(parent_block, source, mod.tag, 'text/plain;charset=utf-8')
95
- end
96
- end
6
+ class PlantUmlBlockProcessor < DiagramBlockProcessor
7
+ use_converter UmlConverter
97
8
  end
98
9
 
99
- class PlantUmlBlockProcessor < Extensions::DiagramBlockProcessor
100
- def self.tag
101
- 'uml'
102
- end
103
-
104
- include PlantUml
10
+ class PlantUmlBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter UmlConverter
105
12
  end
106
13
 
107
- class PlantUmlBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
108
- def self.tag
109
- 'uml'
110
- end
111
-
112
- include PlantUml
14
+ class SaltBlockProcessor < DiagramBlockProcessor
15
+ use_converter SaltConverter
113
16
  end
114
17
 
115
- class SaltBlockProcessor < Extensions::DiagramBlockProcessor
116
- def self.tag
117
- 'salt'
118
- end
119
-
120
- include PlantUml
121
- end
122
-
123
- class SaltBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
124
- def self.tag
125
- 'salt'
126
- end
127
-
128
- include PlantUml
18
+ class SaltBlockMacroProcessor < DiagramBlockMacroProcessor
19
+ use_converter SaltConverter
129
20
  end
130
21
  end
131
22
  end
@@ -0,0 +1,25 @@
1
+ require_relative '../diagram_converter'
2
+ require_relative '../util/cli_generator'
3
+ require_relative '../util/platform'
4
+
5
+ module Asciidoctor
6
+ module Diagram
7
+ # @private
8
+ class ShaapeConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+
13
+ def supported_formats
14
+ [:png, :svg]
15
+ end
16
+
17
+
18
+ def convert(source, format, options)
19
+ generate_stdin(source.find_command('shaape'), format.to_s, source.to_s) do |tool_path, output_path|
20
+ [tool_path, '-o', Platform.native_path(output_path), '-t', format.to_s, '-']
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,36 +1,14 @@
1
- require_relative '../extensions'
2
- require_relative '../util/cli_generator'
3
- require_relative '../util/platform'
4
- require_relative '../util/which'
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
5
3
 
6
4
  module Asciidoctor
7
5
  module Diagram
8
- # @private
9
- module Shaape
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
- shaape(parent, source, f)
17
- end
18
- end
19
- end
20
-
21
- def shaape(parent, source, format)
22
- generate_stdin(which(parent, 'shaape'), format.to_s, source.to_s) do |tool_path, output_path|
23
- [tool_path, '-o', Platform.native_path(output_path), '-t', format.to_s, '-']
24
- end
25
- end
26
- end
27
-
28
- class ShaapeBlockProcessor < Extensions::DiagramBlockProcessor
29
- include Shaape
6
+ class ShaapeBlockProcessor < DiagramBlockProcessor
7
+ use_converter ShaapeConverter
30
8
  end
31
9
 
32
- class ShaapeBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
33
- include Shaape
10
+ class ShaapeBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter ShaapeConverter
34
12
  end
35
13
  end
36
14
  end
@@ -0,0 +1,7 @@
1
+ require 'asciidoctor/extensions'
2
+ require_relative 'smcat/extension'
3
+
4
+ Asciidoctor::Extensions.register do
5
+ block Asciidoctor::Diagram::SmcatBlockProcessor, :smcat
6
+ block_macro Asciidoctor::Diagram::SmcatBlockMacroProcessor, :smcat
7
+ end
@@ -0,0 +1,44 @@
1
+ require_relative '../diagram_converter'
2
+ require_relative '../util/cli_generator'
3
+ require_relative '../util/platform'
4
+
5
+ module Asciidoctor
6
+ module Diagram
7
+ # @private
8
+ class SmcatConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+
13
+ def supported_formats
14
+ [:svg]
15
+ end
16
+
17
+ def collect_options(source, name)
18
+ {
19
+ :direction => source.attr('direction', nil, name),
20
+ :engine => source.attr('engine', nil, name)
21
+ }
22
+ end
23
+
24
+ def convert(source, format, options)
25
+ direction = options[:direction]
26
+ engine = options[:engine]
27
+
28
+ generate_stdin(source.find_command('smcat'), format.to_s, source.to_s) do |tool_path, output_path|
29
+ args = [tool_path, '-o', Platform.native_path(output_path), '-T', format.to_s]
30
+ if direction
31
+ args << '-d' << direction
32
+ end
33
+
34
+ if engine
35
+ args << '-E' << engine
36
+ end
37
+
38
+ args << '-'
39
+ args
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
3
+
4
+ module Asciidoctor
5
+ module Diagram
6
+ class SmcatBlockProcessor < DiagramBlockProcessor
7
+ use_converter SmcatConverter
8
+ end
9
+
10
+ class SmcatBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter SmcatConverter
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,49 @@
1
+ require_relative '../diagram_converter'
2
+ require_relative '../util/cli_generator'
3
+ require_relative '../util/platform'
4
+
5
+ module Asciidoctor
6
+ module Diagram
7
+ # @private
8
+ class SvgbobConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+
13
+ def supported_formats
14
+ [:svg]
15
+ end
16
+
17
+ OPTIONS = {
18
+ :font_family => lambda { |o, v| o << '--font-family' << v if v },
19
+ :font_size => lambda { |o, v| o << '--font-size' << v if v },
20
+ :stroke_width => lambda { |o, v| o << '--stroke-width' << v if v },
21
+ :scale => lambda { |o, v| o << '--scale' << v if v }
22
+ }
23
+
24
+ def collect_options(source, name)
25
+ options = {}
26
+
27
+ OPTIONS.keys.each do |option|
28
+ attr_name = option.to_s.tr('_', '-')
29
+ options[option] = source.attr(attr_name, nil, name) || source.attr(attr_name, nil, 'svgbob-option')
30
+ end
31
+
32
+ options
33
+ end
34
+
35
+
36
+ def convert(source, format, options)
37
+
38
+ flags = []
39
+ options.each do |option, value|
40
+ OPTIONS[option].call(flags, value)
41
+ end
42
+
43
+ generate_stdin(source.find_command('svgbob'), format.to_s, source.to_s) do |tool_path, output_path|
44
+ ([tool_path, '-o', Platform.native_path(output_path)] + flags)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,36 +1,14 @@
1
- require_relative '../extensions'
2
- require_relative '../util/cli_generator'
3
- require_relative '../util/platform'
4
- require_relative '../util/which'
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
5
3
 
6
4
  module Asciidoctor
7
5
  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
- generate_stdin(which(parent, 'svgbob'), format.to_s, source.to_s) do |tool_path, output_path|
23
- [tool_path, '-o', Platform.native_path(output_path)]
24
- end
25
- end
26
- end
27
-
28
- class SvgBobBlockProcessor < Extensions::DiagramBlockProcessor
29
- include Svgbob
6
+ class SvgBobBlockProcessor < DiagramBlockProcessor
7
+ use_converter SvgbobConverter
30
8
  end
31
9
 
32
- class SvgBobBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
33
- include Svgbob
10
+ class SvgBobBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter SvgbobConverter
34
12
  end
35
13
  end
36
14
  end
@@ -0,0 +1,7 @@
1
+ require 'asciidoctor/extensions'
2
+ require_relative 'symbolator/extension'
3
+
4
+ Asciidoctor::Extensions.register do
5
+ block Asciidoctor::Diagram::SymbolatorBlockProcessor, :symbolator
6
+ block_macro Asciidoctor::Diagram::SymbolatorBlockMacroProcessor, :symbolator
7
+ end
@@ -0,0 +1,23 @@
1
+ require_relative '../diagram_converter'
2
+ require_relative '../util/cli_generator'
3
+ require_relative '../util/platform'
4
+
5
+ module Asciidoctor
6
+ module Diagram
7
+ # @private
8
+ class SymbolatorConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+ def supported_formats
13
+ [:png, :pdf, :svg]
14
+ end
15
+
16
+ def convert(source, format, options)
17
+ generate_stdin(source.find_command('symbolator'), format.to_s, source.to_s) do |tool_path, output_path|
18
+ [tool_path, "-i-", "-o#{Platform.native_path(output_path)}", "-f#{format.to_s}"]
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../diagram_processor'
2
+ require_relative 'converter'
3
+
4
+ module Asciidoctor
5
+ module Diagram
6
+ class SymbolatorBlockProcessor < DiagramBlockProcessor
7
+ use_converter SymbolatorConverter
8
+ end
9
+
10
+ class SymbolatorBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter SymbolatorConverter
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,55 @@
1
+ require_relative '../diagram_converter'
2
+ require_relative '../util/cli_generator'
3
+ require_relative '../util/platform'
4
+
5
+ module Asciidoctor
6
+ module Diagram
7
+ # @private
8
+ class SyntraxConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+
13
+ def supported_formats
14
+ [:png, :svg]
15
+ end
16
+
17
+ def collect_options(source, name)
18
+ {
19
+ :heading => source.attr('heading', nil, name),
20
+ :scale => source.attr('scale', nil, name),
21
+ :transparent => source.attr('transparent', nil, name),
22
+ :style => source.attr('style', nil, name)
23
+ }
24
+ end
25
+
26
+
27
+ def convert(source, format, options)
28
+ generate_file(source.find_command('syntrax'), 'spec', format.to_s, source.to_s) do |tool_path, input_path, output_path|
29
+ args = [tool_path, '-i', Platform.native_path(input_path), '-o', Platform.native_path(output_path)]
30
+
31
+ title = options[:heading]
32
+ if title
33
+ args << '--title' << title
34
+ end
35
+
36
+ scale = options[:scale]
37
+ if scale
38
+ args << '--scale' << scale
39
+ end
40
+
41
+ transparent = options[:transparent]
42
+ if transparent == 'true'
43
+ args << '--transparent'
44
+ end
45
+ style = options[:style]
46
+ if style
47
+ args << '--style' << style
48
+ end
49
+
50
+ args
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end