Sha256: 592c80af0283eebaa55b168e3d91c34f0640f836fcf40b6d6ffe40fedc8f700f

Contents?: true

Size: 1.34 KB

Versions: 37

Compression:

Stored size: 1.34 KB

Contents

module Tenon
  class AssetStyleGenerator
    attr_reader :asset

    def self.generate(asset)
      new(asset).styles
    end

    def initialize(asset)
      @asset = asset
    end

    def styles
      @styles ||= Hash[*item_assets.map do |ia|
        get_styles_from_item(ia) || []
      end.flatten].merge(default_styles)
    end

    private

    def default_styles
      {
        original: { processors: ['cropper'], geometry: '' },
        thumbnail: '200x200#',
        medium: '1400>', # DEPRECATED
        tile: '350x350#',
      }
    end

    def item_assets
      @item_assets ||= asset.item_assets.map do |ia|
        attributes_for(ia)
      end.uniq
    end

    def get_styles_from_item(item_asset)
      item = item_asset[:klass].new
      styles = item.send("#{item_asset[:asset_name]}_styles")
      if styles
        item.send("#{item_asset[:asset_name]}_styles").map do |name, style|
          ["#{item_asset[:prefix]}_#{name}".to_sym, style]
        end.flatten
      end
    end

    def attributes_for(item_asset)
      {
        klass: item_asset.item_type.constantize,
        asset_name: item_asset.asset_name,
        prefix: style_prefix_for(item_asset)
      }
    end

    def style_prefix_for(item_asset)
      class_prefix = item_asset.item_type.underscore.gsub('/', '_')
      "#{class_prefix}_#{item_asset.asset_name}"
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
tenon-1.1.8 lib/tenon/asset_style_generator.rb
tenon-1.1.7 lib/tenon/asset_style_generator.rb
tenon-1.1.6 lib/tenon/asset_style_generator.rb
tenon-2.1.0 lib/tenon/asset_style_generator.rb
tenon-2.0.8 lib/tenon/asset_style_generator.rb
tenon-2.0.7 lib/tenon/asset_style_generator.rb
tenon-2.0.6 lib/tenon/asset_style_generator.rb
tenon-2.0.5 lib/tenon/asset_style_generator.rb
tenon-2.0.4 lib/tenon/asset_style_generator.rb
tenon-2.0.3 lib/tenon/asset_style_generator.rb
tenon-2.0.2 lib/tenon/asset_style_generator.rb
tenon-2.0.1 lib/tenon/asset_style_generator.rb
tenon-2.0.0 lib/tenon/asset_style_generator.rb
tenon-1.1.5 lib/tenon/asset_style_generator.rb
tenon-1.1.4 lib/tenon/asset_style_generator.rb
tenon-1.1.3 lib/tenon/asset_style_generator.rb
tenon-1.1.2 lib/tenon/asset_style_generator.rb
tenon-1.1.1 lib/tenon/asset_style_generator.rb
tenon-1.0.76 lib/tenon/asset_style_generator.rb
tenon-1.0.75 lib/tenon/asset_style_generator.rb