Module: Asciidoctor::Diagram::Ditaa

Included in:
DitaaBlockMacroProcessor, DitaaBlockProcessor
Defined in:
lib/asciidoctor-diagram/ditaa/extension.rb

Constant Summary collapse

OPTIONS =
{
    'scale' => lambda { |o, v| o << '--scale' << v if v },
    'tabs' => lambda { |o, v| o << '--tabs' << v if v },
    'background' => lambda { |o, v| o << '--background' << v if v },
    'antialias' => lambda { |o, v| o << '--no-antialias' if v == 'false' },
    'separation' => lambda { |o, v| o  << '--no-separation' if v == 'false'},
    'round-corners' => lambda { |o, v| o  << '--round-corners' if v == 'true'},
    'shadows' => lambda { |o, v| o  << '--no-shadows' if v == 'false'},
    'debug' => lambda { |o, v| o  << '--debug' if v == 'true'},
    'fixed-slope' => lambda { |o, v| o  << '--fixed-slope' if v == 'true'},
    'transparent' => lambda { |o, v| o  << '--transparent' if v == 'true'}
}
JARS =
['ditaamini-0.10.jar'].map do |jar|
  File.expand_path File.join('../..', jar), File.dirname(__FILE__)
end

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(mod) ⇒ Object



28
29
30
31
32
# File 'lib/asciidoctor-diagram/ditaa/extension.rb', line 28

def self.included(mod)
  mod.register_format(:png, :image) do |parent, source|
    ditaa(parent, source)
  end
end

Instance Method Details

#ditaa(parent, source) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/asciidoctor-diagram/ditaa/extension.rb', line 34

def ditaa(parent, source)
  Java.load

  global_attributes = parent.document.attributes

  options = []

  OPTIONS.keys.each do |key|
    value = source.attributes.delete(key) || global_attributes["ditaa-option-#{key}"]
    OPTIONS[key].call(options, value)
  end

  options = options.join(' ')

  response = Java.send_request(
      :url => '/ditaa',
      :body => source.to_s,
      :headers => {
          'X-Options' => options
      }
  )

  unless response[:code] == 200
    raise Java.create_error("Ditaa image generation failed", response)
  end

  response[:body]
end