Module: Asciidoctor::Diagram::BlockDiag

Includes:
CliGenerator, Which
Defined in:
lib/asciidoctor-diagram/blockdiag/extension.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Which

which, #which

Methods included from CliGenerator

#generate, #generate_file, #generate_stdin

Class Method Details

.define_processors(name) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/asciidoctor-diagram/blockdiag/extension.rb', line 76

def self.define_processors(name)
  init = Proc.new do
    include ::Asciidoctor::Diagram::BlockDiag

    [:png, :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

Instance Method Details

#blockdiag(tool, parent, source, format) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
# File 'lib/asciidoctor-diagram/blockdiag/extension.rb', line 102

def blockdiag(tool, parent, source, format)
  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"

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