Sha256: 5d957136eb1c6d17bceb552e9985eb9d03ccf98582dc24bfacdd8a2073091ee3

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

module PaperTrailScrapbook
  # Class Chapter provides single version history analysis
  #
  # @author Timothy Chambers <tim@possibilogy.com>
  #
  class Chapter
    include Concord.new(:version)
    include Adamantium::Flat

    # Single version historical analysis
    #
    # @return [String] Human readable description of changes
    #
    def story
      "#{preface}\\n#{changes}"
    end

    private

    def preface
      "On #{whenn}, #{who} #{kind} the following #{model} info:".squeeze(' ')
    end

    def model
      version.item_type
    end

    def changes
      Changes.new(version).change_log
    end

    def who
      author = version.version_author
      if author
        if whodunnit_class
          whodunnit_class.find(author).to_s
        else
          author
        end
      else
        config.unknown_whodunnit
      end
    end

    def whodunnit_class
      config.whodunnit_class
    end

    def config
      PaperTrailScrapbook.config
    end

    def whenn
      version.created_at.strftime(config.time_format)
    end

    def kind
      config.events[version.event] ||
        raise(ArgumentError, "incorrect event:#{version.event}")
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
paper_trail_scrapbook-0.1.2 lib/paper_trail_scrapbook/chapter.rb
paper_trail_scrapbook-0.1.1 lib/paper_trail_scrapbook/chapter.rb
paper_trail_scrapbook-0.1.0 lib/paper_trail_scrapbook/chapter.rb