Sha256: 4922a784b0558ce9b0c76cf8cfe0956b6dffe9e46b5e5b513950982759712d10

Contents?: true

Size: 968 Bytes

Versions: 3

Compression:

Stored size: 968 Bytes

Contents

module Svgeez
  class Optimizer
    SVGO_MINIMUM_VERSION = '1.3.0'.freeze
    SVGO_MINIMUM_VERSION_MESSAGE = "svgeez relies on SVGO #{SVGO_MINIMUM_VERSION} or newer. Continuing with standard sprite generation...".freeze
    SVGO_NOT_INSTALLED = 'Unable to find `svgo` in your PATH. Continuing with standard sprite generation...'.freeze

    def optimize(file_contents)
      raise SVGO_NOT_INSTALLED unless installed?
      raise SVGO_MINIMUM_VERSION_MESSAGE unless supported?

      `cat <<EOF | svgo --disable=cleanupIDs --disable=removeHiddenElems --disable=removeViewBox -i - -o -\n#{file_contents}\nEOF`
    rescue RuntimeError => exception
      logger.warn exception.message
    end

    private

    def installed?
      @installed ||= find_executable0('svgo')
    end

    def logger
      @logger ||= Svgeez.logger
    end

    def supported?
      @supported ||= Gem::Version.new(`svgo -v`.strip) >= Gem::Version.new(SVGO_MINIMUM_VERSION)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
svgeez-3.2.0 lib/svgeez/optimizer.rb
svgeez-3.1.0 lib/svgeez/optimizer.rb
svgeez-3.0.0 lib/svgeez/optimizer.rb