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
@@ -0,0 +1,7 @@
1
+ require 'asciidoctor/extensions'
2
+ require_relative 'dpic/extension'
3
+
4
+ Asciidoctor::Extensions.register do
5
+ block Asciidoctor::Diagram::DpicBlockProcessor, :dpic
6
+ block_macro Asciidoctor::Diagram::DpicBlockMacroProcessor, :dpic
7
+ end
@@ -0,0 +1,30 @@
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 DpicConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+
13
+ def supported_formats
14
+ [:svg]
15
+ end
16
+
17
+ def convert(source, format, options)
18
+ dpic_path = source.find_command('dpic')
19
+
20
+ code = source.to_s
21
+ code.prepend ".PS\n" unless code.start_with?(".PS\n")
22
+ code << "\n.PE" unless code.start_with?("\n.PE")
23
+
24
+ generate_file_stdout(dpic_path, format.to_s, code) do |tool_path, input_path|
25
+ [tool_path, "-v", "-z", input_path]
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
3
+
4
+ module Asciidoctor
5
+ module Diagram
6
+ class DpicBlockProcessor < DiagramBlockProcessor
7
+ use_converter DpicConverter
8
+ end
9
+
10
+ class DpicBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter DpicConverter
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,31 @@
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 ErdConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+
13
+ def supported_formats
14
+ [:png, :svg]
15
+ end
16
+
17
+ def convert(source, format, options)
18
+ erd_path = source.find_command('erd')
19
+ dot_path = source.find_command('dot', :alt_attrs => ['graphvizdot'])
20
+
21
+ dot_code = generate_stdin(erd_path, format.to_s, source.to_s) do |tool_path, output_path|
22
+ [tool_path, '-o', Platform.native_path(output_path), '-f', 'dot']
23
+ end
24
+
25
+ generate_stdin(dot_path, format.to_s, dot_code) do |tool_path, output_path|
26
+ [tool_path, "-o#{Platform.native_path(output_path)}", "-T#{format.to_s}"]
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,43 +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 Erd
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
- erd(parent, source, f)
17
- end
18
- end
19
- end
20
-
21
- def erd(parent, source, format)
22
- erd_path = which(parent, 'erd')
23
- dot_path = which(parent, 'dot', :alt_attrs => ['graphvizdot'])
24
-
25
- dot_code = generate_stdin(erd_path, format.to_s, source.to_s) do |tool_path, output_path|
26
- [tool_path, '-o', Platform.native_path(output_path), '-f', 'dot']
27
- end
28
-
29
- generate_stdin(dot_path, format.to_s, dot_code) do |tool_path, output_path|
30
- [tool_path, "-o#{Platform.native_path(output_path)}", "-T#{format.to_s}"]
31
- end
32
- end
33
- end
34
-
35
- class ErdBlockProcessor < Extensions::DiagramBlockProcessor
36
- include Erd
6
+ class ErdBlockProcessor < DiagramBlockProcessor
7
+ use_converter ErdConverter
37
8
  end
38
9
 
39
- class ErdBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
40
- include Erd
10
+ class ErdBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter ErdConverter
41
12
  end
42
13
  end
43
14
  end
@@ -0,0 +1,7 @@
1
+ require 'asciidoctor/extensions'
2
+ require_relative 'gnuplot/extension'
3
+
4
+ Asciidoctor::Extensions.register do
5
+ block Asciidoctor::Diagram::GnuplotBlockProcessor, :gnuplot
6
+ block_macro Asciidoctor::Diagram::GnuplotBlockMacroProcessor, :gnuplot
7
+ end
@@ -0,0 +1,63 @@
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 GnuplotConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+
13
+ def supported_formats
14
+ [:png, :svg, :gif, :txt, :literal]
15
+ end
16
+
17
+ def collect_options(source)
18
+ {
19
+ :width => source.attr('width'),
20
+ :height => source.attr('height'),
21
+ :transparent => source.attr('transparent'),
22
+ :crop => source.attr('crop'),
23
+ :font => source.attr('font'),
24
+ :fontscale => source.attr('fontscale'),
25
+ :background => source.attr('background'),
26
+ }
27
+ end
28
+
29
+ def convert(source, format, options)
30
+ if format == :txt || format == :literal
31
+ terminal = 'dumb'
32
+ else
33
+ terminal = format.to_s
34
+ end
35
+ code = "set term #{terminal}"
36
+
37
+ width = options[:width]
38
+ height = options[:height]
39
+ code << " size #{width},#{height}" unless width.nil? or height.nil?
40
+
41
+ transparent = options[:transparent]
42
+ code << (transparent ? " transparent" : " notransparent") unless transparent.nil?
43
+
44
+ crop = options[:crop]
45
+ code << (crop ? " crop" : " nocrop") unless crop.nil?
46
+
47
+ font = options[:font]
48
+ code << %( font "#{font}") unless font.nil?
49
+
50
+ font_scale = options[:fontscale]
51
+ code << " fontscale #{font_scale}" unless font_scale.nil?
52
+
53
+ background = options[:background]
54
+ code << %( background "#{background}") unless background.nil?
55
+
56
+ code << "\n"
57
+ code << source.to_s
58
+
59
+ generate_stdin_stdout(source.find_command('gnuplot'), code)
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
3
+
4
+ module Asciidoctor
5
+ module Diagram
6
+ class GnuplotBlockProcessor < DiagramBlockProcessor
7
+ use_converter GnuplotConverter
8
+ end
9
+
10
+ class GnuplotBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter GnuplotConverter
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,32 @@
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 GraphvizConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+ def supported_formats
13
+ [:png, :pdf, :svg]
14
+ end
15
+
16
+ def collect_options(source)
17
+ {:layout => source.attr('layout')}
18
+ end
19
+
20
+ def convert(source, format, options)
21
+ generate_stdin(source.find_command('dot', :alt_attrs => ['graphvizdot']), format.to_s, source.to_s) do |tool_path, output_path|
22
+ args = [tool_path, "-o#{Platform.native_path(output_path)}", "-T#{format.to_s}"]
23
+
24
+ layout = options[:layout]
25
+ args << "-K#{layout}" if layout
26
+
27
+ args
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,43 +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 Graphviz
10
- include CliGenerator
11
- include Which
12
-
13
- def self.included(mod)
14
- [:png, :pdf, :svg].each do |f|
15
- mod.register_format(f, :image) do |parent, source|
16
- graphviz(parent, source, f)
17
- end
18
- end
19
- end
20
-
21
- def graphviz(parent, source, format)
22
- inherit_prefix = name
23
-
24
- generate_stdin(which(parent, 'dot', :alt_attrs => ['graphvizdot']), format.to_s, source.to_s) do |tool_path, output_path|
25
- args = [tool_path, "-o#{Platform.native_path(output_path)}", "-T#{format.to_s}"]
26
-
27
- layout = source.attr('layout', nil, inherit_prefix)
28
- args << "-K#{layout}" if layout
29
-
30
- args
31
- end
32
- end
33
- end
34
-
35
- class GraphvizBlockProcessor < Extensions::DiagramBlockProcessor
36
- include Graphviz
6
+ class GraphvizBlockProcessor < DiagramBlockProcessor
7
+ use_converter GraphvizConverter
37
8
  end
38
9
 
39
- class GraphvizBlockMacroProcessor < Extensions::DiagramBlockMacroProcessor
40
- include Graphviz
10
+ class GraphvizBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter GraphvizConverter
41
12
  end
42
13
  end
43
14
  end
@@ -0,0 +1,99 @@
1
+ require_relative '../diagram_converter'
2
+ require_relative '../util/cli_generator'
3
+ require_relative '../util/platform'
4
+
5
+ require 'base64'
6
+ require 'net/http'
7
+ require 'uri'
8
+ require 'zlib'
9
+
10
+ module Asciidoctor
11
+ module Diagram
12
+ # @private
13
+ class HttpConverter
14
+ include DiagramConverter
15
+
16
+ def initialize(base_uri, type, converter)
17
+ @base_uri = base_uri
18
+ @type = type
19
+ @converter = converter
20
+ end
21
+
22
+ def supported_formats
23
+ @converter.supported_formats
24
+ end
25
+
26
+ def collect_options(source, name)
27
+ {
28
+ :block_name => name
29
+ }
30
+ end
31
+
32
+ def convert(source, format, options)
33
+ code = source.code
34
+
35
+ uri = URI(@base_uri)
36
+
37
+ case @type
38
+ when :plantuml
39
+ deflate = Zlib::Deflate.new(Zlib::BEST_COMPRESSION,
40
+ -Zlib::MAX_WBITS,
41
+ Zlib::MAX_MEM_LEVEL,
42
+ Zlib::DEFAULT_STRATEGY)
43
+
44
+ compressed = deflate.deflate(code, Zlib::FINISH)
45
+ deflate.close
46
+
47
+ encoded = Base64.urlsafe_encode64(compressed)
48
+ data = '0A' + encoded
49
+
50
+ path = uri.path
51
+ path << '/' unless path.end_with? '/'
52
+ path << format.to_s
53
+ path << '/' << data
54
+ uri.path = path
55
+ when :kroki_io
56
+ compressed = Zlib.deflate(code, Zlib::BEST_COMPRESSION)
57
+ data = Base64.urlsafe_encode64(compressed)
58
+
59
+ path = uri.path
60
+ path << '/' unless path.end_with? '/'
61
+ path << options[:block_name].to_s
62
+ path << '/' << format.to_s
63
+ path << '/' << data
64
+ uri.path = path
65
+ else
66
+ raise "Unsupported server type: " + @type
67
+ end
68
+
69
+ get_uri(uri)
70
+ end
71
+
72
+ private
73
+
74
+ def get_uri(uri, attempt = 1)
75
+ if attempt >= 10
76
+ raise "Too many redirects"
77
+ end
78
+
79
+ Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme.downcase == 'https') do |http|
80
+ response = http.request_get uri.path
81
+ case response
82
+ when Net::HTTPSuccess
83
+ response.body
84
+ when Net::HTTPRedirection then
85
+ location = response['Location']
86
+ new_uri = URI.parse(location)
87
+ if new_uri.relative?
88
+ get_uri(uri + location, attempt + 1)
89
+ else
90
+ get_uri(new_uri, attempt + 1)
91
+ end
92
+ else
93
+ response.value
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,132 @@
1
+ require 'base64'
2
+ require 'json'
3
+ require 'sinatra/base'
4
+ require 'zlib'
5
+
6
+ require_relative '../diagram_source'
7
+ require_relative '../graphviz/converter'
8
+ require_relative '../util/which'
9
+
10
+ module Asciidoctor
11
+ module Diagram
12
+ class Server < Sinatra::Base
13
+ get '/:type/:format/:source' do
14
+ type = params['type']
15
+ accepts = lambda { |t| params['format'].downcase.to_sym == t }
16
+ raw_source = params['source']
17
+ decoded_source = Base64.urlsafe_decode64(raw_source)
18
+ decompressed_source = Zlib::Inflate.inflate(decoded_source)
19
+ source = decompressed_source
20
+ render_diagram(type, accepts, source, {})
21
+ end
22
+
23
+ post '/' do
24
+ params = JSON.parse(request.body.read)
25
+ type = params['diagram_type']
26
+ accepts = lambda { |t| params['output_format'].downcase.to_sym == t }
27
+ source = params['diagram_source']
28
+ render_diagram(type, accepts, source, {})
29
+ end
30
+
31
+ post '/:type' do
32
+ type = params['type'].to_sym
33
+ r = request
34
+ accepts = lambda { |t| r.accept?(to_mime_type(t)) }
35
+ source = request.body.read
36
+ render_diagram(type, accepts, source, {})
37
+ end
38
+
39
+ post '/:type/:format' do
40
+ type = params['type'].to_sym
41
+ accepts = lambda { |t| params['format'].downcase.to_sym == t }
42
+ source = request.body.read
43
+ render_diagram(type, accepts, source, {})
44
+ end
45
+
46
+ def to_mime_type(type)
47
+ case type
48
+ when :pdf
49
+ 'application/pdf'
50
+ when :png
51
+ 'image/png'
52
+ when :svg
53
+ 'image/svg'
54
+ when :txt
55
+ 'text/plain'
56
+ else
57
+ nil
58
+ end
59
+ end
60
+
61
+ def get_converter(type)
62
+ case type
63
+ when :graphviz
64
+ GraphvizConverter.new
65
+ else
66
+ nil
67
+ end
68
+ end
69
+
70
+ def render_diagram(type, accepts, source, attributes)
71
+ converter = get_converter(type.downcase.to_sym)
72
+ return [500, "Unsupported diagram type #{type}"] unless converter
73
+
74
+ format = converter.supported_formats.find {|f| accepts.call(f)}
75
+ return [500, "Could not determine supported output format"] unless format
76
+
77
+ source = ServerSource.new(type.downcase, source, attributes)
78
+ options = converter.collect_options(source)
79
+ diagram = converter.convert(source, format, options)
80
+
81
+ content_type to_mime_type(format)
82
+ diagram
83
+ end
84
+ end
85
+
86
+ class ServerSource
87
+ include Asciidoctor::Diagram::DiagramSource
88
+
89
+ def initialize(name, source, attributes)
90
+ @name = name
91
+ @source = source
92
+ @attributes = attributes
93
+ end
94
+
95
+ def diagram_type
96
+ @name
97
+ end
98
+
99
+ def attr(name, default_value = nil, inherit = diagram_type)
100
+ @attributes[name] || default_value
101
+ end
102
+
103
+ def base_dir
104
+ nil
105
+ end
106
+
107
+ def code
108
+ @source
109
+ end
110
+
111
+ def config
112
+ {}
113
+ end
114
+
115
+ def find_command(cmd, options = nil)
116
+ Asciidoctor::Diagram::Which.which(cmd, options)
117
+ end
118
+
119
+ def resolve_path(target, start = nil)
120
+ target
121
+ end
122
+
123
+ def image_name
124
+ "image"
125
+ end
126
+
127
+ def should_process?(image_file, image_metadata)
128
+ true
129
+ end
130
+ end
131
+ end
132
+ end