Sha256: 3c5f74f392d084ecc8cb156735df0cbd8f75f132a63c15143fd0fe40e6977f06
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
require 'chronic' require 'ruby-duration' require 'time_distribution/task_list' require 'time_distribution/task' module TimeDistribution class WorkDay attr_reader :date, :tasks def self.from_map(map_data) self.new( map_data['date'], *(map_data['tasks'].map { |t| Task.from_map t }) ) end # @param [#to_s] date Date of this work day in +Chronic+ compatible format. # @param [Array<Task>] tasks List of tasks done in this work day. Defaults to an empty list. def initialize(date, *tasks) @date = Chronic.parse(date) @tasks = if tasks.length == 1 && !tasks.first.is_a?(Task) TaskList.new(*tasks) else TaskList.new(tasks) end end def ==(other) ( @date == other.date && @tasks == other.tasks ) end # @param [Task] task Adds +task+ to the list of tasks completed on this work day. def add_task!(task) @tasks << task self end def time_worked(*subjects) @tasks.time_worked *subjects end def to_hours(*subjects) @tasks.to_hours *subjects end def to_md ( @date.strftime('%b %-d, %Y') + "\n============================\n" + @tasks.to_md ) end def to_ssv ( "# #{@date.strftime('%b %-d, %Y')}\n" + ( if block_given? @tasks.to_ssv { |key| yield(key) } else @tasks.to_ssv end ) ) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
time_distribution-2.2.0 | lib/time_distribution/work_day.rb |