Sha256: c4dfa0ba1e4787a632f67ea2085e555e11666365c46acc58b9cdfd946e6c133b

Contents?: true

Size: 1.2 KB

Versions: 13

Compression:

Stored size: 1.2 KB

Contents

# frozen_string_literal: true

module IziLightup
  module SmartPicture
    class << self
      include ActionView::Helpers::AssetTagHelper

      def render(object, fields = %i[picture], versions = [], params = {})
        return '' if object.blank?

        items = fetch_items(object, fields)
        return '' if items.blank?

        versions = Array.wrap(versions)
        items.each do |item|
          next unless item.respond_to?(:data)

          versions.each do |version_name|
            next unless version_name == :default || item.data.respond_to?(version_name)

            version = version_name == :default ? item.data : item.data.public_send(version_name)
            next unless version&.file&.exists? && version&.url&.present?

            url = version.url
            params.merge!(%i[width height].zip(version.dimensions).to_h)
            return image_tag(url, params) unless block_given?

            yield(url, params)
            return ''
          end
        end

        ''
      end

      private

      def fetch_items(object, fields)
        Array.wrap(fields).map do |name|
          object.respond_to?(name) ? object.public_send(name) : nil
        end.compact
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
izi_lightup-1.0.12 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.11 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.10 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.9 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.8 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.7 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.6 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.5 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.4 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.3 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.2 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.1 lib/izi_lightup/smart_picture.rb
izi_lightup-1.0.0 lib/izi_lightup/smart_picture.rb