Sha256: 5399a70ca9fdcc5548f158be549d5331072c89729aff7666eb36e68e45ffb4a1

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

module LiquidDiagrams
  module Renderers
    %i[ Blockdiag
        Seqdiag
        Actdiag
        Nwdiag
        Rackdiag
        Packetdiag ].each do |diagram|
      renderer = Class.new(BasicRenderer) do
        const_set :OPTIONS, %w[
          config
          font
          fontmap
          size
        ].freeze

        const_set :SWITCHES, {
          'antialias' => false
        }.freeze

        def render
          Rendering.render_with_tempfile(build_command, @content) do |input, output|
            "#{input} -o #{output}"
          end
        end

        define_method :build_command do
          command = +"#{diagram.downcase} -T svg --nodoctype"

          options = self.class.const_get(:OPTIONS)
          switches = self.class.const_get(:SWITCHES)

          @config.slice(*options).each do |opt, value|
            command << " --#{opt}=#{value}"
          end

          Utils.merge(switches, @config).each do |swc, value|
            command << " --#{swc}" if value
          end

          command
        end
      end

      const_set "#{diagram}Renderer", renderer
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
liquid-diagrams-0.1.0 lib/liquid_diagrams/renderers/blockdiag_renderer.rb