Sha256: 389e0ba8ac3bdadd9f2d31e8126cb888ef30ccaa8c30bed94e735787f2fdacbf

Contents?: true

Size: 1.05 KB

Versions: 10

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

require 'uploadcare/errors/type_error'

module Uploadcare
  module Rails
    module Transformations
      # A class for building image urls after image transformations.
      class ImageTransformations
        def initialize(options = {})
          raise ArgumentError, "Options argument must be a Hash, #{options.class} is given?" unless options.is_a?(Hash)

          @options = options.to_h { |k, v| [k.to_sym, v] }
        end

        def call
          options_to_a.compact.join('-').squeeze('/').gsub(/\s/, '').presence
        end

        private

        attr_reader :options

        def options_to_a
          options.map do |key, value|
            "/#{key}/#{adjusted_value(value)}/"
          end
        end

        def adjusted_value(value)
          case value
          when Hash
            value.values.join('/')
          when TrueClass, FalseClass, 'true', 'false'
            nil
          when Array
            value.join(',')
          else
            value
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
uploadcare-rails-3.4.4 lib/uploadcare/rails/transformations/image_transformations.rb
uploadcare-rails-3.4.3 lib/uploadcare/rails/transformations/image_transformations.rb
uploadcare-rails-3.4.1 lib/uploadcare/rails/transformations/image_transformations.rb
uploadcare-rails-3.4.0 lib/uploadcare/rails/transformations/image_transformations.rb
uploadcare-rails-3.3.4 lib/uploadcare/rails/transformations/image_transformations.rb
uploadcare-rails-3.3.3 lib/uploadcare/rails/transformations/image_transformations.rb
uploadcare-rails-3.3.2.1 lib/uploadcare/rails/transformations/image_transformations.rb
uploadcare-rails-3.3.2 lib/uploadcare/rails/transformations/image_transformations.rb
uploadcare-rails-3.3.1 lib/uploadcare/rails/transformations/image_transformations.rb
uploadcare-rails-3.3.0 lib/uploadcare/rails/transformations/image_transformations.rb