Sha256: ed6ac3b943058333c726ec06a06a9e85c41c2230d391ad4a645d9c91c1bc6427

Contents?: true

Size: 1.04 KB

Versions: 7

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true
module Hyrax
  ##
  # @api public
  class VersionListPresenter
    include Enumerable

    ##
    # @param version_list [Array<#created>]
    def initialize(version_list)
      @raw_list = version_list
    end

    ##
    # @param [Object] an object representing the File Set
    #
    # @return [Enumerable<Hyrax::VersionPresenter>] an enumerable of presenters
    #   for the relevant file versions.
    #
    # @raise [ArgumentError] if we can't build an enu
    def self.for(file_set:)
      new(file_set.original_file&.versions&.all.to_a)
    rescue NoMethodError
      raise ArgumentError
    end

    delegate :each, to: :wrapped_list

    private

    def wrapped_list
      @wrapped_list ||=
        @raw_list.map { |v| Hyrax::VersionPresenter.new(v) } # wrap each item in a presenter
                 .sort { |a, b| b.version.created <=> a.version.created } # sort list of versions based on creation date
                 .tap { |l| l.first.try(:current!) } # set the first version to the current version
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
hyrax-3.4.2 app/presenters/hyrax/version_list_presenter.rb
hyrax-4.0.0.beta1 app/presenters/hyrax/version_list_presenter.rb
hyrax-3.4.1 app/presenters/hyrax/version_list_presenter.rb
hyrax-3.4.0 app/presenters/hyrax/version_list_presenter.rb
hyrax-3.3.0 app/presenters/hyrax/version_list_presenter.rb
hyrax-3.2.0 app/presenters/hyrax/version_list_presenter.rb
hyrax-3.1.0 app/presenters/hyrax/version_list_presenter.rb