asciidoctor-diagram 2.1.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +43 -0
  3. data/docs/antora.yml +1 -1
  4. data/docs/modules/ROOT/pages/index.adoc +1 -1
  5. data/docs/modules/ROOT/partials/advanced.adoc +72 -13
  6. data/docs/modules/ROOT/partials/create_diagram.adoc +45 -42
  7. data/docs/modules/ROOT/partials/uris.adoc +5 -2
  8. data/lib/asciidoctor-diagram/a2s/extension.rb +4 -0
  9. data/lib/asciidoctor-diagram/a2s.rb +1 -0
  10. data/lib/asciidoctor-diagram/barcode/converter.rb +157 -0
  11. data/lib/asciidoctor-diagram/barcode/dependencies.rb +10 -0
  12. data/lib/asciidoctor-diagram/barcode/extension.rb +47 -0
  13. data/lib/asciidoctor-diagram/barcode/svg_outputter.rb +12 -0
  14. data/lib/asciidoctor-diagram/barcode.rb +11 -0
  15. data/lib/asciidoctor-diagram/blockdiag/extension.rb +5 -0
  16. data/lib/asciidoctor-diagram/blockdiag.rb +1 -0
  17. data/lib/asciidoctor-diagram/bpmn/extension.rb +4 -0
  18. data/lib/asciidoctor-diagram/bpmn.rb +1 -0
  19. data/lib/asciidoctor-diagram/bytefield/extension.rb +4 -0
  20. data/lib/asciidoctor-diagram/bytefield.rb +1 -0
  21. data/lib/asciidoctor-diagram/diagram_converter.rb +4 -0
  22. data/lib/asciidoctor-diagram/diagram_processor.rb +62 -6
  23. data/lib/asciidoctor-diagram/diagram_source.rb +23 -7
  24. data/lib/asciidoctor-diagram/diagrams/converter.rb +49 -0
  25. data/lib/asciidoctor-diagram/diagrams/extension.rb +18 -0
  26. data/lib/asciidoctor-diagram/diagrams.rb +8 -0
  27. data/lib/asciidoctor-diagram/ditaa/ditaa-1.3.20.jar +0 -0
  28. data/lib/asciidoctor-diagram/ditaa/extension.rb +4 -0
  29. data/lib/asciidoctor-diagram/ditaa.rb +1 -0
  30. data/lib/asciidoctor-diagram/dpic/extension.rb +4 -0
  31. data/lib/asciidoctor-diagram/dpic.rb +1 -0
  32. data/lib/asciidoctor-diagram/erd/extension.rb +4 -0
  33. data/lib/asciidoctor-diagram/erd.rb +1 -0
  34. data/lib/asciidoctor-diagram/gnuplot/extension.rb +4 -0
  35. data/lib/asciidoctor-diagram/gnuplot.rb +1 -0
  36. data/lib/asciidoctor-diagram/graphviz/extension.rb +4 -0
  37. data/lib/asciidoctor-diagram/graphviz.rb +1 -0
  38. data/lib/asciidoctor-diagram/http/converter.rb +35 -11
  39. data/lib/asciidoctor-diagram/http/server.rb +1 -1
  40. data/lib/asciidoctor-diagram/lilypond/extension.rb +4 -0
  41. data/lib/asciidoctor-diagram/lilypond.rb +1 -0
  42. data/lib/asciidoctor-diagram/meme/extension.rb +14 -16
  43. data/lib/asciidoctor-diagram/meme.rb +1 -0
  44. data/lib/asciidoctor-diagram/mermaid/extension.rb +4 -0
  45. data/lib/asciidoctor-diagram/mermaid.rb +1 -0
  46. data/lib/asciidoctor-diagram/msc/extension.rb +4 -0
  47. data/lib/asciidoctor-diagram/msc.rb +1 -0
  48. data/lib/asciidoctor-diagram/nomnoml/extension.rb +4 -0
  49. data/lib/asciidoctor-diagram/nomnoml.rb +1 -0
  50. data/lib/asciidoctor-diagram/pikchr/extension.rb +4 -0
  51. data/lib/asciidoctor-diagram/pikchr.rb +1 -0
  52. data/lib/asciidoctor-diagram/plantuml/converter.rb +53 -34
  53. data/lib/asciidoctor-diagram/plantuml/extension.rb +8 -0
  54. data/lib/asciidoctor-diagram/plantuml/plantuml-1.3.20.jar +0 -0
  55. data/lib/asciidoctor-diagram/plantuml.rb +1 -0
  56. data/lib/asciidoctor-diagram/salt.rb +1 -0
  57. data/lib/asciidoctor-diagram/shaape/extension.rb +4 -0
  58. data/lib/asciidoctor-diagram/shaape.rb +1 -0
  59. data/lib/asciidoctor-diagram/smcat/extension.rb +4 -0
  60. data/lib/asciidoctor-diagram/smcat.rb +1 -0
  61. data/lib/asciidoctor-diagram/svgbob/extension.rb +4 -0
  62. data/lib/asciidoctor-diagram/svgbob.rb +1 -0
  63. data/lib/asciidoctor-diagram/symbolator/extension.rb +4 -0
  64. data/lib/asciidoctor-diagram/symbolator.rb +1 -0
  65. data/lib/asciidoctor-diagram/syntrax/converter.rb +1 -1
  66. data/lib/asciidoctor-diagram/syntrax/extension.rb +4 -0
  67. data/lib/asciidoctor-diagram/syntrax.rb +1 -0
  68. data/lib/asciidoctor-diagram/tikz/extension.rb +4 -0
  69. data/lib/asciidoctor-diagram/tikz.rb +1 -0
  70. data/lib/asciidoctor-diagram/umlet/extension.rb +4 -0
  71. data/lib/asciidoctor-diagram/umlet.rb +1 -0
  72. data/lib/asciidoctor-diagram/util/cli_generator.rb +9 -7
  73. data/lib/asciidoctor-diagram/util/server-1.3.20.jar +0 -0
  74. data/lib/asciidoctor-diagram/vega/extension.rb +4 -0
  75. data/lib/asciidoctor-diagram/vega.rb +2 -0
  76. data/lib/asciidoctor-diagram/version.rb +1 -1
  77. data/lib/asciidoctor-diagram/wavedrom/extension.rb +4 -0
  78. data/lib/asciidoctor-diagram/wavedrom.rb +1 -0
  79. data/lib/asciidoctor-diagram.rb +2 -0
  80. data/spec/a2s_spec.rb +9 -5
  81. data/spec/barcode_spec.rb +176 -0
  82. data/spec/blockdiag_spec.rb +7 -3
  83. data/spec/bpmn_spec.rb +7 -3
  84. data/spec/bytefield_spec.rb +9 -5
  85. data/spec/diagrams_spec.rb +27 -0
  86. data/spec/ditaa_spec.rb +7 -3
  87. data/spec/dpic_spec.rb +7 -3
  88. data/spec/erd_spec.rb +7 -3
  89. data/spec/gnuplot_spec.rb +14 -10
  90. data/spec/graphviz_spec.rb +7 -3
  91. data/spec/lilypond_spec.rb +7 -3
  92. data/spec/mermaid_spec.rb +7 -3
  93. data/spec/msc_spec.rb +10 -6
  94. data/spec/nomnoml_spec.rb +9 -5
  95. data/spec/pikchr_spec.rb +7 -3
  96. data/spec/plantuml_spec.rb +114 -3
  97. data/spec/shaape_spec.rb +7 -3
  98. data/spec/shared_examples.rb +161 -0
  99. data/spec/smcat_spec.rb +10 -6
  100. data/spec/svgbob_spec.rb +7 -3
  101. data/spec/symbolator_spec.rb +7 -3
  102. data/spec/syntrax_spec.rb +7 -3
  103. data/spec/test_helper.rb +3 -1
  104. data/spec/tikz_spec.rb +8 -4
  105. data/spec/umlet_spec.rb +6 -3
  106. data/spec/vega_spec.rb +11 -6
  107. data/spec/wavedrom_spec.rb +7 -3
  108. metadata +23 -10
  109. data/lib/asciidoctor-diagram/ditaa/ditaa-1.3.17.jar +0 -0
  110. data/lib/asciidoctor-diagram/plantuml/plantuml-1.3.17.jar +0 -0
  111. data/lib/asciidoctor-diagram/util/server-1.3.17.jar +0 -0
@@ -0,0 +1,10 @@
1
+ module Asciidoctor
2
+ module Diagram
3
+ module BarcodeDependencies
4
+ BARCODE_DEPENDENCIES = {'barby' => '~> 0.6.8'}
5
+ PNG_DEPENDENCIES = {'chunky_png' => '~> 1.4'}
6
+ QRCODE_DEPENDENCIES = {'rqrcode' => '~> 2.0'}
7
+ ALL_DEPENDENCIES = {}.merge(BARCODE_DEPENDENCIES).merge(PNG_DEPENDENCIES).merge(QRCODE_DEPENDENCIES)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,47 @@
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
3
+
4
+ module Asciidoctor
5
+ module Diagram
6
+ module BarcodeProcessor
7
+ def self.check_config(config = {})
8
+ type = config[:type]
9
+ raise "Barcode type not specified in config" if type.nil?
10
+ raise "Unsupported barcode type: '#{type}'" unless BarcodeConverter::BARCODE_TYPES.include?(type)
11
+ end
12
+
13
+ def initialize(name = nil, config = {})
14
+ super
15
+ BarcodeProcessor.check_config(config)
16
+ end
17
+ end
18
+
19
+ module BarcodeMacroProcessor
20
+ def create_source(parent, target, attributes)
21
+ if attributes['external']
22
+ super
23
+ else
24
+ code = parent.sub_attributes(target, :attribute_missing => 'warn')
25
+ ::Asciidoctor::Diagram::ReaderSource.new(self, parent, code, attributes)
26
+ end
27
+ end
28
+ end
29
+
30
+ class BarcodeBlockProcessor < DiagramBlockProcessor
31
+ use_converter BarcodeConverter
32
+ include BarcodeProcessor
33
+ end
34
+
35
+ class BarcodeBlockMacroProcessor < DiagramBlockMacroProcessor
36
+ use_converter BarcodeConverter
37
+ include BarcodeProcessor
38
+ include BarcodeMacroProcessor
39
+ end
40
+
41
+ class BarcodeInlineMacroProcessor < DiagramInlineMacroProcessor
42
+ use_converter BarcodeConverter
43
+ include BarcodeProcessor
44
+ include BarcodeMacroProcessor
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,12 @@
1
+ require 'barby/outputter/svg_outputter'
2
+
3
+ module Barby
4
+ class SvgOutputter
5
+ # Monkey patch to fix foreground color in SVG output
6
+ def bars_to_path(opts={})
7
+ with_options opts do
8
+ %Q|<path stroke="#{foreground}" stroke-width="#{xdim}" d="#{bars_to_path_data(opts)}" />|
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ require 'asciidoctor/extensions'
2
+ require_relative 'barcode/extension'
3
+ require_relative 'barcode/converter'
4
+
5
+ Asciidoctor::Extensions.register do
6
+ Asciidoctor::Diagram::BarcodeConverter::BARCODE_TYPES.each do |type|
7
+ block Asciidoctor::Diagram::BarcodeBlockProcessor, type, :type => type
8
+ block_macro Asciidoctor::Diagram::BarcodeBlockMacroProcessor, type, :type => type
9
+ inline_macro Asciidoctor::Diagram::BarcodeInlineMacroProcessor, type, :type => type
10
+ end
11
+ end
@@ -13,6 +13,11 @@ module Asciidoctor
13
13
  use_converter ::Asciidoctor::Diagram.const_get("#{tool}Converter")
14
14
  end
15
15
  ::Asciidoctor::Diagram.const_set("#{tool}BlockMacroProcessor", block_macro)
16
+
17
+ inline_macro = Class.new(DiagramInlineMacroProcessor) do
18
+ use_converter ::Asciidoctor::Diagram.const_get("#{tool}Converter")
19
+ end
20
+ ::Asciidoctor::Diagram.const_set("#{tool}InlineMacroProcessor", inline_macro)
16
21
  end
17
22
  end
18
23
  end
@@ -5,5 +5,6 @@ Asciidoctor::Extensions.register do
5
5
  ['BlockDiag', 'SeqDiag', 'ActDiag', 'NwDiag', 'RackDiag', 'PacketDiag'].each do |tool|
6
6
  block ::Asciidoctor::Diagram.const_get("#{tool}BlockProcessor"), tool.downcase.to_sym
7
7
  block_macro ::Asciidoctor::Diagram.const_get("#{tool}BlockMacroProcessor"), tool.downcase.to_sym
8
+ inline_macro ::Asciidoctor::Diagram.const_get("#{tool}InlineMacroProcessor"), tool.downcase.to_sym
8
9
  end
9
10
  end
@@ -10,5 +10,9 @@ module Asciidoctor
10
10
  class BpmnBlockMacroProcessor < DiagramBlockMacroProcessor
11
11
  use_converter BpmnConverter
12
12
  end
13
+
14
+ class BpmnInlineMacroProcessor < DiagramInlineMacroProcessor
15
+ use_converter BpmnConverter
16
+ end
13
17
  end
14
18
  end
@@ -4,4 +4,5 @@ require_relative 'bpmn/extension'
4
4
  Asciidoctor::Extensions.register do
5
5
  block Asciidoctor::Diagram::BpmnBlockProcessor, :bpmn
6
6
  block_macro Asciidoctor::Diagram::BpmnBlockMacroProcessor, :bpmn
7
+ inline_macro Asciidoctor::Diagram::BpmnInlineMacroProcessor, :bpmn
7
8
  end
@@ -10,5 +10,9 @@ module Asciidoctor
10
10
  class BytefieldBlockMacroProcessor < DiagramBlockMacroProcessor
11
11
  use_converter BytefieldConverter
12
12
  end
13
+
14
+ class BytefieldInlineMacroProcessor < DiagramInlineMacroProcessor
15
+ use_converter BytefieldConverter
16
+ end
13
17
  end
14
18
  end
@@ -4,4 +4,5 @@ require_relative 'bytefield/extension'
4
4
  Asciidoctor::Extensions.register do
5
5
  block Asciidoctor::Diagram::BytefieldBlockProcessor, :bytefield
6
6
  block_macro Asciidoctor::Diagram::BytefieldBlockMacroProcessor, :bytefield
7
+ inline_macro Asciidoctor::Diagram::BytefieldInlineMacroProcessor, :bytefield
7
8
  end
@@ -7,6 +7,10 @@ module Asciidoctor
7
7
  raise NotImplementedError.new
8
8
  end
9
9
 
10
+ def wrap_source(source)
11
+ source
12
+ end
13
+
10
14
  def collect_options(source)
11
15
  {}
12
16
  end
@@ -50,6 +50,8 @@ module Asciidoctor
50
50
  }
51
51
  }
52
52
 
53
+ TEXT_FORMATS = [:txt, :atxt, :utxt]
54
+
53
55
  # Processes the diagram block or block macro by converting it into an image or literal block.
54
56
  #
55
57
  # @param parent [Asciidoctor::AbstractBlock] the parent asciidoc block of the block or block macro being processed
@@ -57,17 +59,22 @@ module Asciidoctor
57
59
  # target value of a block macro
58
60
  # @param attributes [Hash] the attributes of the block or block macro
59
61
  # @return [Asciidoctor::AbstractBlock] a new block that replaces the original block or block macro
62
+
60
63
  def process(parent, reader_or_target, attributes)
61
64
  location = parent.document.reader.cursor_at_mark
62
65
 
63
66
  normalised_attributes = attributes.inject({}) { |h, (k, v)| h[normalise_attribute_name(k)] = v; h }
64
- source = create_source(parent, reader_or_target, normalised_attributes)
65
-
66
67
  converter = config[:converter].new
67
68
 
68
- supported_formats = converter.supported_formats
69
+ supported_formats = supported_formats(converter)
70
+
71
+ source = create_source(parent, reader_or_target, normalised_attributes)
72
+ # memorize current code here for error message to avoid calling wrapped source's code method later
73
+ code = source.code
69
74
 
70
75
  begin
76
+ source = converter.wrap_source(source)
77
+
71
78
  format = source.attributes.delete('format') || source.global_attr('format', supported_formats[0])
72
79
  format = format.to_sym if format.respond_to?(:to_sym)
73
80
 
@@ -80,7 +87,7 @@ module Asciidoctor
80
87
  caption = source.attributes.delete 'caption'
81
88
 
82
89
  case format
83
- when :txt, :atxt, :utxt
90
+ when *TEXT_FORMATS
84
91
  block = create_literal_block(parent, source, format, converter)
85
92
  else
86
93
  block = create_image_block(parent, source, format, converter)
@@ -103,7 +110,7 @@ module Asciidoctor
103
110
  logger.error message_with_context warn_msg, source_location: location
104
111
 
105
112
  text << "\n"
106
- text << source.code
113
+ text << code
107
114
  Asciidoctor::Block.new parent, :listing, :source => text, :attributes => attributes
108
115
  end
109
116
 
@@ -129,6 +136,10 @@ module Asciidoctor
129
136
 
130
137
  private
131
138
 
139
+ def supported_formats(converter)
140
+ converter.supported_formats
141
+ end
142
+
132
143
  def normalise_attribute_name(k)
133
144
  case k
134
145
  when String
@@ -227,9 +238,17 @@ module Asciidoctor
227
238
  use_absolute_path = source.attr('data-uri', nil, true)
228
239
 
229
240
  if format == :svg
230
- svg_type = source.global_attr('svg-type')
241
+ if node.option? 'inline'
242
+ svg_type = 'inline'
243
+ elsif node.option? 'interactive'
244
+ svg_type = 'interactive'
245
+ else
246
+ svg_type = source.global_attr('svg-type')
247
+ end
248
+
231
249
  case svg_type
232
250
  when nil, 'static'
251
+ # Nothing to do
233
252
  when 'inline', 'interactive'
234
253
  node.set_option(svg_type)
235
254
  use_absolute_path = true
@@ -371,5 +390,42 @@ module Asciidoctor
371
390
  FileSource.new(self, parent, apply_target_subs(parent, target), attributes)
372
391
  end
373
392
  end
393
+
394
+ # Base class for diagram inline macro processors.
395
+ class DiagramInlineMacroProcessor < Asciidoctor::Extensions::InlineMacroProcessor
396
+ include DiagramProcessor
397
+
398
+ def self.inherited(subclass)
399
+ subclass.name_positional_attributes ['format']
400
+ end
401
+
402
+ def apply_target_subs(parent, target)
403
+ if target
404
+ parent.normalize_system_path(parent.sub_attributes(target, :attribute_missing => 'warn'))
405
+ else
406
+ nil
407
+ end
408
+ end
409
+
410
+ alias_method(:generate_block,:process)
411
+
412
+ def process(parent, reader_or_target, attributes)
413
+ block = generate_block(parent, reader_or_target, attributes)
414
+ attrs = block.attributes.dup
415
+ target = attrs.delete('target')
416
+ create_inline(parent, :image, nil, :type => 'image', :target => target, :attributes => attrs).convert
417
+ end
418
+
419
+ def supported_formats(converter)
420
+ converter.supported_formats.reject { |f| TEXT_FORMATS.include?(f) }
421
+ end
422
+
423
+ # Creates a FileSource using target as the file name.
424
+ #
425
+ # @return [FileSource] a FileSource
426
+ def create_source(parent, target, attributes)
427
+ FileSource.new(self, parent, apply_target_subs(parent, target), attributes)
428
+ end
429
+ end
374
430
  end
375
431
  end
@@ -19,6 +19,10 @@ module Asciidoctor
19
19
  # @return [String] the String representation of the source code for the diagram
20
20
  # @abstract
21
21
  def code
22
+ @code ||= load_code
23
+ end
24
+
25
+ def load_code
22
26
  raise NotImplementedError.new
23
27
  end
24
28
 
@@ -134,6 +138,22 @@ module Asciidoctor
134
138
  cmd_path
135
139
  end
136
140
 
141
+ def ensure_gem(name, version)
142
+ begin
143
+ gem_var = "gem-#{name}"
144
+ unless config.key? gem_var
145
+ gem(name, version)
146
+ config[gem_var] = true
147
+ end
148
+ rescue Gem::LoadError => e
149
+ msg = "You are using functionality that requires the optional gem dependency `#{e.name}` which could not be loaded. Add `gem '#{e.name}', '#{e.requirement}'` to your Gemfile."
150
+ err = Gem::LoadError.new(msg)
151
+ err.name = e.name
152
+ err.requirement = e.requirement
153
+ raise err
154
+ end
155
+ end
156
+
137
157
  def resolve_path target, start = base_dir
138
158
  raise NotImplementedError.new
139
159
  end
@@ -233,8 +253,8 @@ module Asciidoctor
233
253
  @reader = reader
234
254
  end
235
255
 
236
- def code
237
- @code ||= @parent_block.apply_subs(@reader.lines, resolve_diagram_subs).join("\n")
256
+ def load_code
257
+ @parent_block.apply_subs(@reader.lines, resolve_diagram_subs).join("\n")
238
258
  end
239
259
  end
240
260
 
@@ -267,11 +287,7 @@ module Asciidoctor
267
287
  (@file_name && File.mtime(@file_name) > File.mtime(image_file)) || super
268
288
  end
269
289
 
270
- def code
271
- @code ||= read_code
272
- end
273
-
274
- def read_code
290
+ def load_code
275
291
  if @file_name
276
292
  lines = File.readlines(@file_name)
277
293
  lines = prepare_source_array(lines)
@@ -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 DiagramsConverter
9
+ include DiagramConverter
10
+ include CliGenerator
11
+
12
+
13
+ def supported_formats
14
+ [:png, :svg, :pdf]
15
+ end
16
+
17
+ def convert(source, format, options)
18
+ python_path = source.find_command('python3', :attrs => ['diagrams-python'], :alt_cmds => ['python'])
19
+
20
+ code = source.to_s
21
+
22
+ match_data = /Diagram\((.*?)\)/.match(code)
23
+ raise "Could not find Diagram constructor" unless match_data
24
+
25
+ args = match_data[1].strip
26
+
27
+ target_file = Tempfile.new('diagrams')
28
+
29
+ diagram = 'Diagram('
30
+ diagram << args
31
+ diagram << ',' unless args.empty?
32
+ diagram << "filename=\"#{target_file.path}\""
33
+ diagram << ",outformat=\"#{format}\""
34
+ diagram << ')'
35
+
36
+ code = match_data.pre_match + diagram + match_data.post_match
37
+
38
+ begin
39
+ target_file.close
40
+ generate_stdin_file(python_path, code, target_file.path + ".#{format}") do |tool|
41
+ [tool, '-']
42
+ end
43
+ ensure
44
+ target_file.unlink
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'converter'
2
+ require_relative '../diagram_processor'
3
+
4
+ module Asciidoctor
5
+ module Diagram
6
+ class DiagramsBlockProcessor < DiagramBlockProcessor
7
+ use_converter DiagramsConverter
8
+ end
9
+
10
+ class DiagramsBlockMacroProcessor < DiagramBlockMacroProcessor
11
+ use_converter DiagramsConverter
12
+ end
13
+
14
+ class DiagramsInlineMacroProcessor < DiagramInlineMacroProcessor
15
+ use_converter DiagramsConverter
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+ require 'asciidoctor/extensions'
2
+ require_relative 'diagrams/extension'
3
+
4
+ Asciidoctor::Extensions.register do
5
+ block Asciidoctor::Diagram::DiagramsBlockProcessor, :diagrams
6
+ block_macro Asciidoctor::Diagram::DiagramsBlockMacroProcessor, :diagrams
7
+ inline_macro Asciidoctor::Diagram::DiagramsInlineMacroProcessor, :diagrams
8
+ end
@@ -10,5 +10,9 @@ module Asciidoctor
10
10
  class DitaaBlockMacroProcessor < DiagramBlockMacroProcessor
11
11
  use_converter DitaaConverter
12
12
  end
13
+
14
+ class DitaaInlineMacroProcessor < DiagramInlineMacroProcessor
15
+ use_converter DitaaConverter
16
+ end
13
17
  end
14
18
  end
@@ -4,4 +4,5 @@ require_relative 'ditaa/extension'
4
4
  Asciidoctor::Extensions.register do
5
5
  block Asciidoctor::Diagram::DitaaBlockProcessor, :ditaa
6
6
  block_macro Asciidoctor::Diagram::DitaaBlockMacroProcessor, :ditaa
7
+ inline_macro Asciidoctor::Diagram::DitaaInlineMacroProcessor, :ditaa
7
8
  end
@@ -10,5 +10,9 @@ module Asciidoctor
10
10
  class DpicBlockMacroProcessor < DiagramBlockMacroProcessor
11
11
  use_converter DpicConverter
12
12
  end
13
+
14
+ class DpicInlineMacroProcessor < DiagramInlineMacroProcessor
15
+ use_converter DpicConverter
16
+ end
13
17
  end
14
18
  end