Sha256: 01744caf0f1886a33ecec5c912436b080cc84dfedf885dec0a9df7129920276b

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module PaperTrailScrapbook
  # Class LifeHistory provides Full multi version history
  #
  # @author Timothy Chambers <tim@possibilogy.com>
  #
  class LifeHistory
    def initialize(object)
      @object   = object
      @versions = object.versions
      if object.respond_to?(:trailed_related_content)
        object.trailed_related_content.compact.each do |trc|
          @versions |= trc.versions
        end
      end

      @versions = @versions.sort_by(&:created_at)
    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

3 entries across 3 versions & 1 rubygems

Version Path
paper_trail_scrapbook-0.1.17 lib/paper_trail_scrapbook/life_history.rb
paper_trail_scrapbook-0.1.16 lib/paper_trail_scrapbook/life_history.rb
paper_trail_scrapbook-0.1.15 lib/paper_trail_scrapbook/life_history.rb