lib/rabbit/parser/ext/blockdiag.rb in rabbit-3.0.1 vs lib/rabbit/parser/ext/blockdiag.rb in rabbit-3.0.2

- old
+ new

@@ -7,32 +7,34 @@ module_function AVAILABLE_FLAG_OPTIONS = ["antialias"] # "font" is treated as specially. AVAILABLE_VALUE_OPTIONS = [] def make_image(path, prop, logger) - image_file = Tempfile.new("rabbit-image-blockdiag") - command = [ - "blockdiag", + image_file = Tempfile.new(["rabbit-image-blockdiag", ".svg"]) + command_line = [ "-T", "svg", "-o", image_file.path, ] font = find_font(prop) - command.concat(["-f", font]) if font + command_line.concat(["-f", font]) if font AVAILABLE_FLAG_OPTIONS.each do |name| - command << "--#{name}" if /\A(?:true|yes)\z/i =~ prop[name].to_s + command_line << "--#{name}" if /\A(?:true|yes)\z/i =~ prop[name].to_s end AVAILABLE_VALUE_OPTIONS.each do |name| - command.concat(["--#{name}", prop[name]]) if prop.has_key?(name) + command_line.concat(["--#{name}", prop[name]]) if prop.has_key?(name) end - command << path - if SystemRunner.run(*command) - image_file - else - format = _("tried blockdiag command: %s") - additional_info = format % command.inspect - raise BlockDiagCanNotHandleError.new(command.join(' '), - additional_info) + command_line << path + blockdiag_commands = ["blockdiag3", "blockdiag"] + blockdiag_commands.each do |blockdiag| + if SystemRunner.run(blockdiag, *command_line) + return image_file + end end + command_line.unshift(blockdiag_commands.first) + format = _("tried blockdiag command: %s") + additional_info = format % command_line + raise BlockDiagCanNotHandleError.new(command_line.join(' '), + additional_info) end def find_font(prop) font = prop["font"] return font if font and File.exist?(font)