Class: Archimate::Cli::Svger

Inherits:
Object
  • Object
show all
Defined in:
lib/archimate/cli/svger.rb

Overview

This class is used to export SVG diagrams as defined in the given model

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(diagrams, output_dir) ⇒ Svger

Returns a new instance of Svger.



11
12
13
14
# File 'lib/archimate/cli/svger.rb', line 11

def initialize(diagrams, output_dir)
  @diagrams = diagrams
  @output_dir = output_dir
end

Class Method Details

.export_svgs(archi_file, output_dir) ⇒ Object



7
8
9
# File 'lib/archimate/cli/svger.rb', line 7

def self.export_svgs(archi_file, output_dir)
  new(Archimate.read(archi_file).diagrams, output_dir).export_svgs
end

Instance Method Details

#export(diagram, file_name = nil) ⇒ Object



26
27
28
29
30
31
# File 'lib/archimate/cli/svger.rb', line 26

def export(diagram, file_name = nil)
  file_name = Cli.process_svg_filename(file_name || diagram.id)
  File.open(File.join(@output_dir, file_name), "wb") do |svg_file|
    svg_file.write(Svg::Diagram.new(diagram).to_svg)
  end
end

#export_svgsObject



16
17
18
19
20
21
22
23
24
# File 'lib/archimate/cli/svger.rb', line 16

def export_svgs
  progress = ProgressIndicator.new(total: @diagrams.size, title: "Writing SVGs")
  @diagrams.each do |diagram|
    export(diagram)
    progress.increment
  end
ensure
  progress.finish
end