Class: Asciidoctor::Diagram::DitaaConverter

Inherits:
Object
  • Object
show all
Includes:
DiagramConverter
Defined in:
lib/asciidoctor-diagram/ditaa/converter.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'}
}
CLASSPATH_ENV =
'DIAGRAM_DITAA_CLASSPATH'
DITAA_JARS =
if ENV.has_key?(CLASSPATH_ENV)
  ENV[CLASSPATH_ENV].split(File::PATH_SEPARATOR)
else
  begin
    require 'asciidoctor-diagram/ditaa/classpath'
    ::Asciidoctor::Diagram::DitaaClasspath::JAR_FILES
  rescue LoadError
    raise "Could not load PlantUML. Eiter require 'asciidoctor-diagram-ditaamini' or specify the location of the PlantUML JAR(s) using the 'DIAGRAM_DITAA_CLASSPATH' environment variable."
  end
end

Instance Method Summary collapse

Methods included from DiagramConverter

#wrap_source

Instance Method Details

#collect_options(source) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/asciidoctor-diagram/ditaa/converter.rb', line 45

def collect_options(source)
  options = {}
  
  OPTIONS.keys.each do |option|
    attr_name = option.to_s.tr('_', '-')
    options[option] = source.attr(attr_name) || source.attr(attr_name, nil, 'ditaa-option')
  end
  
  options
end

#convert(source, format, options) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/asciidoctor-diagram/ditaa/converter.rb', line 60

def convert(source, format, options)
  Java.load

  flags = []

  options.each do |option, value|
    OPTIONS[option].call(flags, value)
  end

  options_string = flags.join(' ')

  case format
  when :png
    mime_type = 'image/png'
  when :svg
    mime_type = 'image/svg+xml'
  else
    raise "Unsupported format: #{format}"
  end

  headers = {
      'Accept' => mime_type,
      'X-Options' => options_string
  }

  response = Java.send_request(
      :url => '/ditaa',
      :body => source.to_s,
      :headers => headers
  )

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

  response[:body]
end

#native_scaling?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/asciidoctor-diagram/ditaa/converter.rb', line 56

def native_scaling?
  true
end

#supported_formatsObject



41
42
43
# File 'lib/asciidoctor-diagram/ditaa/converter.rb', line 41

def supported_formats
  [:png, :svg]
end