Sha256: 9baabc24600c3af79096a48f449d56cbebc422cdba75e3b351686a23aafd5b4e

Contents?: true

Size: 1.77 KB

Versions: 6

Compression:

Stored size: 1.77 KB

Contents

module Artwork
  module Configuration
    def supported_resolutions_list
      get(:supported_resolutions_list) or @@supported_resolutions_list or raise "Please set #{__method__}"
    end

    def supported_resolutions_list=(resolutions)
      list = resolutions.map(&:to_i).sort

      @@supported_resolutions_list ||= list
      set :supported_resolutions_list, list
    end

    def default_resolution
      get(:default_resolution) or @@default_resolution or raise "Please set #{__method__}"
    end

    def default_resolution=(resolution)
      @@default_resolution ||= resolution
      set :default_resolution, resolution
    end

    def load_2x_images?
      get(:load_2x_images) || false
    end

    def load_2x_images=(flag)
      set :load_2x_images, flag
    end

    def current_resolution
      get(:current_resolution) || default_resolution
    end

    def current_resolution=(resolution)
      set :current_resolution, resolution
    end

    def configure_for(request)
      Artwork.load_2x_images     = fetch_2x_images_flag_from(request)
      Artwork.current_resolution = current_resolution_from(request)
    end

    def reset_configuration
      set :current_resolution, nil
      set :load_2x_images, nil
    end

    private

    def set(setting, value)
      Thread.current[setting] = value
    end

    def get(setting)
      Thread.current[setting]
    end

    def fetch_2x_images_flag_from(request)
      request.cookies['_retina'].to_i > 0
    end

    def current_resolution_from(request)
      browser_width = request.cookies['_width'].to_i

      return default_resolution if browser_width.zero?

      supported_resolutions_list.each do |resolution|
        return resolution if browser_width <= resolution
      end

      supported_resolutions_list.last
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
artwork-0.6.0 lib/artwork/configuration.rb
artwork-0.5.0 lib/artwork/configuration.rb
artwork-0.4.2 lib/artwork/configuration.rb
artwork-0.4.1 lib/artwork/configuration.rb
artwork-0.4.0 lib/artwork/configuration.rb
artwork-0.3.2 lib/artwork/configuration.rb