Sha256: a94cdbeb01ed2fd88738340be1d84406349563a01b23bc282c1ed434a266e339

Contents?: true

Size: 1.3 KB

Versions: 56

Compression:

Stored size: 1.3 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>'
      }
    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

56 entries across 56 versions & 1 rubygems

Version Path
tenon-1.0.56 lib/tenon/asset_style_generator.rb
tenon-1.0.55 lib/tenon/asset_style_generator.rb
tenon-1.0.54 lib/tenon/asset_style_generator.rb
tenon-1.0.53 lib/tenon/asset_style_generator.rb
tenon-1.0.52 lib/tenon/asset_style_generator.rb
tenon-1.0.51 lib/tenon/asset_style_generator.rb
tenon-1.0.50 lib/tenon/asset_style_generator.rb
tenon-1.0.49 lib/tenon/asset_style_generator.rb
tenon-1.0.48 lib/tenon/asset_style_generator.rb
tenon-1.0.47 lib/tenon/asset_style_generator.rb
tenon-1.0.46 lib/tenon/asset_style_generator.rb
tenon-1.0.45 lib/tenon/asset_style_generator.rb
tenon-1.0.44 lib/tenon/asset_style_generator.rb
tenon-1.0.43 lib/tenon/asset_style_generator.rb
tenon-1.0.42 lib/tenon/asset_style_generator.rb
tenon-1.0.41 lib/tenon/asset_style_generator.rb
tenon-1.0.40 lib/tenon/asset_style_generator.rb
tenon-1.0.39 lib/tenon/asset_style_generator.rb
tenon-1.0.38 lib/tenon/asset_style_generator.rb
tenon-1.0.37 lib/tenon/asset_style_generator.rb