module Asciidoctor::Diagram::BlockDiag

@private

Public Class Methods

define_processors(name) click to toggle source
# File lib/asciidoctor-diagram/blockdiag/extension.rb, line 76
def self.define_processors(name)
  init = Proc.new do
    include ::Asciidoctor::Diagram::BlockDiag

    [:png, :pdf, :svg].each do |f|
      register_format(f, :image) do |p, c|
        blockdiag(name, p, c, f)
      end
    end
  end

  block = Class.new(Extensions::DiagramBlockProcessor) do
    self.instance_eval(&init)
  end
  ::Asciidoctor::Diagram.const_set("#{name}BlockProcessor", block)

  block_macro = Class.new(Extensions::DiagramBlockMacroProcessor) do
    self.instance_eval(&init)
  end

  ::Asciidoctor::Diagram.const_set("#{name}BlockMacroProcessor", block_macro)
end

Public Instance Methods

blockdiag(tool, parent, source, format) click to toggle source
# File lib/asciidoctor-diagram/blockdiag/extension.rb, line 102
def blockdiag(tool, parent, source, format)
  inherit_prefix = name
  cmd_name = tool.downcase

  # On Debian based systems the Python 3.x packages python3-(act|block|nw|seq)diag executables with
  # a '3' suffix.
  alt_cmd_name = "#{tool.downcase}3"

  font_path = source.attr('fontpath', nil, inherit_prefix)

  generate_stdin(which(parent, cmd_name, :alt_cmds => [alt_cmd_name]), format.to_s, source.to_s) do |tool_path, output_path|
    args = [tool_path, '-a', '-o', Platform.native_path(output_path), "-T#{format.to_s}"]
    args << "-f#{Platform.native_path(font_path)}" if font_path
    args << '-'
    args
  end
end