Sha256: 964fb171491a4c6d0d04e17c61836f6188cb17cb21f10e33dafe48b32ac3eb1b

Contents?: true

Size: 849 Bytes

Versions: 4

Compression:

Stored size: 849 Bytes

Contents

# frozen_string_literal: true

module PaperTrailScrapbook
  # Class LifeHistory provides Full multi version history
  #
  # @author Timothy Chambers <tim@hint.io>
  #
  class LifeHistory
    def initialize(object)
      @object   = object
      @versions = Versions.new(object).versions
    end

    # Retries textual historical analysis of versions
    #
    # @return [String] analyzed versions
    #
    def story
      x = versions.map do |v|
        if primary?(v)
          Chapter
        else
          SecondaryChapter
        end.new(v).story
      end.compact

      x.reverse! if PaperTrailScrapbook.config.recent_first

      x.join("\n\n")
    end

    private

    def primary?(version)
      version.item_type.eql?(object.class.name) &&
        version.item_id.equal?(object.id)
    end

    attr_reader :object, :versions
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
paper_trail_scrapbook-0.2.0 lib/paper_trail_scrapbook/life_history.rb
paper_trail_scrapbook-0.1.21 lib/paper_trail_scrapbook/life_history.rb
paper_trail_scrapbook-0.1.20 lib/paper_trail_scrapbook/life_history.rb
paper_trail_scrapbook-0.1.19 lib/paper_trail_scrapbook/life_history.rb