asciidoctor-diagram 1.5.19 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.adoc +71 -0
  3. data/README.adoc +66 -20
  4. data/examples/features.adoc +2 -2
  5. data/lib/asciidoctor-diagram.rb +5 -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 +374 -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/converter.rb +63 -0
  27. data/lib/asciidoctor-diagram/gnuplot/extension.rb +6 -62
  28. data/lib/asciidoctor-diagram/graphviz/converter.rb +32 -0
  29. data/lib/asciidoctor-diagram/graphviz/extension.rb +6 -35
  30. data/lib/asciidoctor-diagram/http/converter.rb +99 -0
  31. data/lib/asciidoctor-diagram/http/server.rb +132 -0
  32. data/lib/asciidoctor-diagram/lilypond/converter.rb +54 -0
  33. data/lib/asciidoctor-diagram/lilypond/extension.rb +6 -53
  34. data/lib/asciidoctor-diagram/meme/converter.rb +122 -0
  35. data/lib/asciidoctor-diagram/meme/extension.rb +5 -107
  36. data/lib/asciidoctor-diagram/mermaid/converter.rb +192 -0
  37. data/lib/asciidoctor-diagram/mermaid/extension.rb +6 -159
  38. data/lib/asciidoctor-diagram/msc/converter.rb +35 -0
  39. data/lib/asciidoctor-diagram/msc/extension.rb +6 -36
  40. data/lib/asciidoctor-diagram/nomnoml/converter.rb +25 -0
  41. data/lib/asciidoctor-diagram/nomnoml/extension.rb +6 -28
  42. data/lib/asciidoctor-diagram/pikchr.rb +7 -0
  43. data/lib/asciidoctor-diagram/pikchr/converter.rb +26 -0
  44. data/lib/asciidoctor-diagram/pikchr/extension.rb +14 -0
  45. data/lib/asciidoctor-diagram/plantuml/converter.rb +117 -0
  46. data/lib/asciidoctor-diagram/plantuml/extension.rb +10 -119
  47. data/lib/asciidoctor-diagram/shaape/converter.rb +25 -0
  48. data/lib/asciidoctor-diagram/shaape/extension.rb +6 -28
  49. data/lib/asciidoctor-diagram/smcat/converter.rb +44 -0
  50. data/lib/asciidoctor-diagram/smcat/extension.rb +6 -42
  51. data/lib/asciidoctor-diagram/svgbob/converter.rb +49 -0
  52. data/lib/asciidoctor-diagram/svgbob/extension.rb +6 -28
  53. data/lib/asciidoctor-diagram/symbolator.rb +7 -0
  54. data/lib/asciidoctor-diagram/symbolator/converter.rb +23 -0
  55. data/lib/asciidoctor-diagram/symbolator/extension.rb +14 -0
  56. data/lib/asciidoctor-diagram/syntrax/converter.rb +58 -0
  57. data/lib/asciidoctor-diagram/syntrax/extension.rb +6 -51
  58. data/lib/asciidoctor-diagram/tikz/converter.rb +75 -0
  59. data/lib/asciidoctor-diagram/tikz/extension.rb +6 -60
  60. data/lib/asciidoctor-diagram/umlet/converter.rb +33 -0
  61. data/lib/asciidoctor-diagram/umlet/extension.rb +6 -28
  62. data/lib/asciidoctor-diagram/util/cli.rb +14 -3
  63. data/lib/asciidoctor-diagram/util/cli_generator.rb +19 -1
  64. data/lib/asciidoctor-diagram/util/gif.rb +2 -2
  65. data/lib/asciidoctor-diagram/util/java.rb +114 -1
  66. data/lib/asciidoctor-diagram/util/java_socket.rb +8 -120
  67. data/lib/asciidoctor-diagram/util/pdf.rb +2 -2
  68. data/lib/asciidoctor-diagram/util/png.rb +2 -2
  69. data/lib/asciidoctor-diagram/util/svg.rb +46 -19
  70. data/lib/asciidoctor-diagram/util/which.rb +0 -29
  71. data/lib/asciidoctor-diagram/vega/converter.rb +47 -0
  72. data/lib/asciidoctor-diagram/vega/extension.rb +6 -44
  73. data/lib/asciidoctor-diagram/version.rb +1 -1
  74. data/lib/asciidoctor-diagram/wavedrom/converter.rb +50 -0
  75. data/lib/asciidoctor-diagram/wavedrom/extension.rb +6 -54
  76. data/lib/ditaa-1.3.15.jar +0 -0
  77. data/lib/plantuml-1.3.15.jar +0 -0
  78. data/lib/plantuml.jar +0 -0
  79. data/lib/server-1.3.15.jar +0 -0
  80. data/spec/a2s_spec.rb +2 -140
  81. data/spec/blockdiag_spec.rb +2 -200
  82. data/spec/bpmn_spec.rb +56 -0
  83. data/spec/bytefield_spec.rb +92 -0
  84. data/spec/ditaa_spec.rb +37 -143
  85. data/spec/dpic_spec.rb +19 -0
  86. data/spec/erd_spec.rb +2 -199
  87. data/spec/gnuplot_spec.rb +2 -255
  88. data/spec/graphviz_spec.rb +6 -145
  89. data/spec/lilypond_spec.rb +2 -140
  90. data/spec/mermaid_spec.rb +62 -209
  91. data/spec/msc_spec.rb +2 -199
  92. data/spec/nomnoml_spec.rb +4 -142
  93. data/spec/pikchr_spec.rb +51 -0
  94. data/spec/plantuml_spec.rb +24 -507
  95. data/spec/shaape_spec.rb +9 -221
  96. data/spec/shared_examples.rb +603 -0
  97. data/spec/smcat_spec.rb +2 -140
  98. data/spec/svgbob_spec.rb +2 -140
  99. data/spec/symbolator_spec.rb +23 -0
  100. data/spec/syntrax_spec.rb +5 -215
  101. data/spec/test_helper.rb +1 -21
  102. data/spec/tikz_spec.rb +65 -15
  103. data/spec/umlet_spec.rb +2 -58
  104. data/spec/vega_spec.rb +4 -117
  105. data/spec/wavedrom_spec.rb +2 -199
  106. metadata +58 -8
  107. data/lib/asciidoctor-diagram/extensions.rb +0 -568
  108. data/lib/ditaa-1.3.13.jar +0 -0
  109. data/lib/plantuml-1.3.13.jar +0 -0
  110. data/lib/server-1.3.13.jar +0 -0
@@ -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
@@ -1,50 +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 Smcat
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
- smcat(parent, source, f)
17
- end
18
- end
19
- end
20
-
21
- def smcat(parent, source, format)
22
- inherit_prefix = name
23
- direction = source.attr('direction', nil, inherit_prefix)
24
- engine = source.attr('engine', nil, inherit_prefix)
25
-
26
- generate_stdin(which(parent, 'smcat'), format.to_s, source.to_s) do |tool_path, output_path|
27
- args = [tool_path, '-o', Platform.native_path(output_path), '-T', format.to_s]
28
- if direction
29
- args << '-d' << direction
30
- end
31
-
32
- if engine
33
- args << '-E' << engine
34
- end
35
-
36
- args << '-'
37
- args
38
- end
39
- end
40
- end
41
-
42
- class SmcatBlockProcessor < Extensions::DiagramBlockProcessor
43
- include Smcat
6
+ class SmcatBlockProcessor < DiagramBlockProcessor
7
+ use_converter SmcatConverter
44
8
  end
45
9
 
46
- class SmcatBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
47
- include Smcat
10
+ class SmcatBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter SmcatConverter
48
12
  end
49
13
  end
50
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
@@ -1,59 +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 '../diagram_processor'
2
+ require_relative 'converter'
5
3
 
6
4
  module Asciidoctor
7
5
  module Diagram
8
- # @private
9
- module Syntrax
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
- syntrax(parent, source, f)
17
- end
18
- end
19
- end
20
-
21
- def syntrax(parent, source, format)
22
- inherit_prefix = name
23
-
24
- generate_file(which(parent, 'syntrax'), 'spec', format.to_s, source.to_s) do |tool_path, input_path, output_path|
25
- args = [tool_path, '-i', Platform.native_path(input_path), '-o', Platform.native_path(output_path)]
26
-
27
- title = source.attr('heading', nil, inherit_prefix)
28
- if title
29
- args << '--title' << title
30
- end
31
-
32
- scale = source.attr('scale', nil, inherit_prefix)
33
- if scale
34
- args << '--scale' << scale
35
- end
36
-
37
- transparent = source.attr('transparent', nil, inherit_prefix)
38
- if transparent == 'true'
39
- args << '--transparent'
40
- end
41
- style = source.attr('style', nil, inherit_prefix)
42
- if style
43
- args << '--style' << style
44
- end
45
-
46
- args
47
- end
48
- end
49
- end
50
-
51
- class SyntraxBlockProcessor < Extensions::DiagramBlockProcessor
52
- include Syntrax
6
+ class SyntraxBlockProcessor < DiagramBlockProcessor
7
+ use_converter SyntraxConverter
53
8
  end
54
9
 
55
- class SyntraxBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
56
- include Syntrax
10
+ class SyntraxBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter SyntraxConverter
57
12
  end
58
13
  end
59
14
  end
@@ -0,0 +1,75 @@
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 TikZConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+ def supported_formats
13
+ [:pdf, :svg]
14
+ end
15
+
16
+ def collect_options(source)
17
+ {
18
+ :preamble => source.attr('preamble') == 'true'
19
+ }
20
+ end
21
+
22
+ def convert(source, format, options)
23
+ latexpath = source.find_command('pdflatex')
24
+
25
+ if format == :svg
26
+ svgpath = source.find_command('pdf2svg')
27
+ else
28
+ svgpath = nil
29
+ end
30
+
31
+ if options[:preamble]
32
+ preamble, body = source.to_s.split(/^~~~~$/, 2)
33
+ unless body
34
+ body = preamble
35
+ preamble = ''
36
+ end
37
+ else
38
+ preamble = ''
39
+ body = source.to_s
40
+ end
41
+
42
+ latex = <<'END'
43
+ \documentclass[border=2bp, tikz]{standalone}
44
+ \usepackage{tikz}
45
+ END
46
+ latex << preamble
47
+ latex << <<'END'
48
+ \begin{document}
49
+ \begingroup
50
+ \tikzset{every picture/.style={scale=1}}
51
+ END
52
+ latex << body
53
+ latex << <<'END'
54
+ \endgroup
55
+ \end{document}
56
+ END
57
+
58
+ pdf = generate_file(latexpath, 'tex', 'pdf', latex) do |tool_path, input_path, output_path|
59
+ {
60
+ :args => [tool_path, '-shell-escape', '-file-line-error', '-interaction=nonstopmode', '-output-directory', Platform.native_path(File.dirname(output_path)), Platform.native_path(input_path)],
61
+ :out_file => "#{File.dirname(input_path)}/#{File.basename(input_path, '.*')}.pdf"
62
+ }
63
+ end
64
+
65
+ if svgpath
66
+ generate_file(svgpath, 'pdf', 'svg', pdf) do |tool_path, input_path, output_path|
67
+ [tool_path, Platform.native_path(input_path), Platform.native_path(output_path)]
68
+ end
69
+ else
70
+ pdf
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -1,68 +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 '../diagram_processor'
2
+ require_relative 'converter'
5
3
 
6
4
  module Asciidoctor
7
5
  module Diagram
8
- # @private
9
- module TikZ
10
- include CliGenerator
11
- include Which
12
-
13
- def self.included(mod)
14
- [:pdf, :svg].each do |f|
15
- mod.register_format(f, :image) do |parent, source|
16
- tikz(parent, source, f)
17
- end
18
- end
19
- end
20
-
21
- def tikz(parent, source, format)
22
- latexpath = which(parent, 'pdflatex')
23
-
24
- if format == :svg
25
- svgpath = which(parent, 'pdf2svg')
26
- else
27
- svgpath = nil
28
- end
29
-
30
- latex = <<'END'
31
- \documentclass[border=2bp, tikz]{standalone}
32
- \usepackage{tikz}
33
- \begin{document}
34
- \begingroup
35
- \tikzset{every picture/.style={scale=1}}
36
- END
37
- latex << source.to_s
38
- latex << <<'END'
39
- \endgroup
40
- \end{document}
41
- END
42
-
43
- pdf = generate_file(latexpath, 'tex', 'pdf', latex) do |tool_path, input_path, output_path|
44
- {
45
- :args => [tool_path, '-shell-escape', '-file-line-error', '-interaction=nonstopmode', '-output-directory', Platform.native_path(File.dirname(output_path)), Platform.native_path(input_path)],
46
- :out_file => "#{File.dirname(input_path)}/#{File.basename(input_path, '.*')}.pdf"
47
- }
48
- end
49
-
50
- if svgpath
51
- generate_file(svgpath, 'pdf', 'svg', pdf) do |tool_path, input_path, output_path|
52
- [tool_path, Platform.native_path(input_path), Platform.native_path(output_path)]
53
- end
54
- else
55
- pdf
56
- end
57
- end
58
- end
59
-
60
- class TikZBlockProcessor < Extensions::DiagramBlockProcessor
61
- include TikZ
6
+ class TikZBlockProcessor < DiagramBlockProcessor
7
+ use_converter TikZConverter
62
8
  end
63
9
 
64
- class TikZBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
65
- include TikZ
10
+ class TikZBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter TikZConverter
66
12
  end
67
13
  end
68
14
  end