Sha256: 7f4900fc0c27548b81fbe92ee245327cd4d351cc85c462adddddc142d7e83b64

Contents?: true

Size: 1.23 KB

Versions: 25

Compression:

Stored size: 1.23 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

    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

25 entries across 25 versions & 1 rubygems

Version Path
pageflow-12.6.0 lib/pageflow/file_types.rb
pageflow-12.5.0 lib/pageflow/file_types.rb
pageflow-12.4.1 lib/pageflow/file_types.rb
pageflow-12.4.0 lib/pageflow/file_types.rb
pageflow-12.3.0 lib/pageflow/file_types.rb
pageflow-13.0.0.beta6 lib/pageflow/file_types.rb
pageflow-13.0.0.beta5 lib/pageflow/file_types.rb
pageflow-13.0.0.beta4 lib/pageflow/file_types.rb
pageflow-13.0.0.beta3 lib/pageflow/file_types.rb
pageflow-13.0.0.beta2 lib/pageflow/file_types.rb
pageflow-13.0.0.beta1 lib/pageflow/file_types.rb
pageflow-12.2.0 lib/pageflow/file_types.rb
pageflow-12.1.0 lib/pageflow/file_types.rb
pageflow-12.0.4 lib/pageflow/file_types.rb
pageflow-12.0.3 lib/pageflow/file_types.rb
pageflow-12.0.2 lib/pageflow/file_types.rb
pageflow-12.0.1 lib/pageflow/file_types.rb
pageflow-12.0.0 lib/pageflow/file_types.rb
pageflow-12.0.0.rc7 lib/pageflow/file_types.rb
pageflow-12.0.0.rc6 lib/pageflow/file_types.rb