Sha256: 215975fcfa5c5b3b2666bf0d0d2ca6a3cddf7a493d6d87412b69b440e85864a7

Contents?: true

Size: 960 Bytes

Versions: 3

Compression:

Stored size: 960 Bytes

Contents

require 'time_distribution/smart_duration'

module TimeDistribution
  class Task
    attr_reader :subject, :time_taken, :desc

    # @param [#to_s] subject The subject on which the task was completed. E.g. A course or project.
    # @param [#to_s] time_taken The amount of time taken on the task (Compatible with +ChronicDuration+ parsing, or a range of times that conform to +Chronic+ parsing).
    # @param [#to_s] desc The task's description.
    def initialize(subject, time_taken, desc)
      @subject = subject
      @time_taken = SmartDuration.parse(time_taken)
      @desc = desc
    end

    def to_s() "#{to_headline}: #{to_desc}" end

    def to_desc() @desc.strip end

    def to_headline
      "#{to_hours_s} hours of #{@subject}"
    end

    def to_hours
      @time_taken.total / (60 * 60).to_f
    end

    def to_hours_s
      format('%0.2f', to_hours)
    end

    def to_ssv
      format("%-25s%10s", @subject, to_hours_s)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
time_distribution-2.0.2 lib/time_distribution/task.rb
time_distribution-2.0.1 lib/time_distribution/task.rb
time_distribution-2.0.0 lib/time_distribution/task.rb