asciidoctor-diagram 1.5.18 → 2.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.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +75 -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 +59 -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 +23 -0
  17. data/lib/asciidoctor-diagram/diagram_processor.rb +357 -0
  18. data/lib/asciidoctor-diagram/diagram_source.rb +322 -0
  19. data/lib/asciidoctor-diagram/ditaa/converter.rb +90 -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 +132 -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 +58 -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 +46 -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/a2s_spec.rb +2 -140
  85. data/spec/blockdiag_spec.rb +2 -200
  86. data/spec/bpmn_spec.rb +56 -0
  87. data/spec/bytefield_spec.rb +92 -0
  88. data/spec/ditaa_spec.rb +37 -143
  89. data/spec/dpic_spec.rb +19 -0
  90. data/spec/erd_spec.rb +2 -199
  91. data/spec/gnuplot_spec.rb +225 -0
  92. data/spec/graphviz_spec.rb +6 -145
  93. data/spec/lilypond_spec.rb +13 -0
  94. data/spec/mermaid_spec.rb +35 -200
  95. data/spec/msc_spec.rb +2 -199
  96. data/spec/nomnoml_spec.rb +4 -142
  97. data/spec/pikchr_spec.rb +51 -0
  98. data/spec/plantuml_spec.rb +24 -507
  99. data/spec/shaape_spec.rb +9 -221
  100. data/spec/shared_examples.rb +552 -0
  101. data/spec/smcat_spec.rb +26 -0
  102. data/spec/svgbob_spec.rb +2 -140
  103. data/spec/symbolator_spec.rb +23 -0
  104. data/spec/syntrax_spec.rb +5 -215
  105. data/spec/test_helper.rb +1 -18
  106. data/spec/tikz_spec.rb +4 -24
  107. data/spec/umlet_spec.rb +2 -58
  108. data/spec/vega_spec.rb +4 -117
  109. data/spec/wavedrom_spec.rb +2 -199
  110. metadata +73 -11
  111. data/lib/asciidoctor-diagram/extensions.rb +0 -568
  112. data/lib/ditaa-1.3.13.jar +0 -0
  113. data/lib/ditaamini-0.11.jar +0 -0
  114. data/lib/plantuml-1.3.13.jar +0 -0
  115. 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)
18
+ {
19
+ :direction => source.attr('direction'),
20
+ :engine => source.attr('engine')
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)
25
+ options = {}
26
+
27
+ OPTIONS.keys.each do |option|
28
+ attr_name = option.to_s.tr('_', '-')
29
+ options[option] = source.attr(attr_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,58 @@
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)
18
+ {
19
+ :heading => source.attr('heading'),
20
+ :scale => source.attr('scale'),
21
+ :transparent => source.attr('transparent'),
22
+ :style => source.attr('style')
23
+ }
24
+ end
25
+
26
+ def convert(source, format, options)
27
+ generate_file(source.find_command('syntrax'), 'spec', format.to_s, source.to_s) do |tool_path, input_path, output_path|
28
+ args = [tool_path, '-i', Platform.native_path(input_path), '-o', Platform.native_path(output_path)]
29
+
30
+ title = options[:heading]
31
+ if title
32
+ args << '--title' << title
33
+ end
34
+
35
+ scale = options[:scale]
36
+ if scale
37
+ args << '--scale' << scale
38
+ end
39
+
40
+ transparent = options[:transparent]
41
+ if transparent == 'true'
42
+ args << '--transparent'
43
+ end
44
+ style = options[:style]
45
+ if style
46
+ args << '--style' << style
47
+ end
48
+
49
+ args
50
+ end
51
+ end
52
+
53
+ def native_scaling?
54
+ true
55
+ end
56
+ end
57
+ end
58
+ end