Sha256: 788c53f4865f16e1a6af59a34d99b6297f459e680c739c7600040cf4a71a9376

Contents?: true

Size: 1.37 KB

Versions: 35

Compression:

Stored size: 1.37 KB

Contents

module Pageflow
  class FileTypes
    include Enumerable

    def initialize(page_types)
      @page_types = page_types
    end

    def each(&block)
      first_level_file_types = @page_types.map(&:file_types).flatten
      lower_level_file_types = search_for_nested_file_types(first_level_file_types)
      (first_level_file_types + lower_level_file_types).uniq(&:model).each(&block)
    end

    def find_by_collection_name!(collection_name)
      detect do |file_type|
        file_type.collection_name == collection_name
      end || raise(FileType::NotFoundError,
                   "No file type found for collection name '#{collection_name}'.")
    end

    def find_by_model!(model)
      detect do |file_type|
        file_type.model == model
      end || raise(FileType::NotFoundError, "No file type found for '#{model.name}'.")
    end

    def with_thumbnail_support
      select do |file_type|
        file_type.model.instance_methods.include?(:thumbnail_url)
      end
    end

    def with_css_background_image_support
      select do |file_type|
        file_type.css_background_image_urls.present?
      end
    end

    private

    def search_for_nested_file_types(higher_level_file_types)
      higher_level_file_types.map { |file_type|
        file_type.nested_file_types +
          search_for_nested_file_types(file_type.nested_file_types)
      }.flatten
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
pageflow-14.5.2 lib/pageflow/file_types.rb
pageflow-15.1.0.beta2 lib/pageflow/file_types.rb
pageflow-15.1.0.beta1 lib/pageflow/file_types.rb
pageflow-15.0.2 lib/pageflow/file_types.rb
pageflow-15.0.1 lib/pageflow/file_types.rb
pageflow-15.0.0 lib/pageflow/file_types.rb
pageflow-14.5.1 lib/pageflow/file_types.rb
pageflow-14.5.0 lib/pageflow/file_types.rb
pageflow-15.0.0.rc2 lib/pageflow/file_types.rb
pageflow-15.0.0.rc1 lib/pageflow/file_types.rb
pageflow-15.0.0.beta4 lib/pageflow/file_types.rb
pageflow-15.0.0.beta3 lib/pageflow/file_types.rb
pageflow-14.4.0 lib/pageflow/file_types.rb
pageflow-15.0.0.beta2 lib/pageflow/file_types.rb
pageflow-15.0.0.beta1 lib/pageflow/file_types.rb
pageflow-14.3.0 lib/pageflow/file_types.rb
pageflow-14.2.1 lib/pageflow/file_types.rb
pageflow-14.2.0 lib/pageflow/file_types.rb
pageflow-14.1.1 lib/pageflow/file_types.rb
pageflow-14.1.0 lib/pageflow/file_types.rb