Sha256: f2b51ee6dca3aba13728049dae945acbe8237144d122925e0c9b99bb62eeeaa3

Contents?: true

Size: 1.51 KB

Versions: 13

Compression:

Stored size: 1.51 KB

Contents

module Rabbit
  module Parser
    module Ext
      module BlockDiag
        include GetText

        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",
                     "-T", "svg",
                     "-o", image_file.path]
          font = find_font(prop)
          command.concat(["-f", font]) if font
          AVAILABLE_FLAG_OPTIONS.each do |name|
            command << "--#{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)
          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)
          end
        end

        def find_font(prop)
          font = prop["font"]
          return font if font and File.exist?(font)
          fonts = prop["fonts"]
          return nil if fonts.nil?
          fonts = fonts.split(/\s*,\s*/) if fonts.is_a?(String)
          fonts.find do |font|
            File.exist?(font)
          end
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rabbit-2.1.3 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.1.2 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.1.1 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.1.0 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.0.9 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.0.8 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.0.7 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.0.6 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.0.5 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.0.4 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.0.3 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.0.2 lib/rabbit/parser/ext/blockdiag.rb
rabbit-2.0.1 lib/rabbit/parser/ext/blockdiag.rb