class Medo::TextTaskWriter

Public Class Methods

new(output_stream = STDOUT) click to toggle source
Calls superclass method Medo::TaskWriter::new
# File lib/medo/text_task_writer.rb, line 6
def initialize(output_stream = STDOUT)
  super()
  @output_stream = output_stream
end

Public Instance Methods

write() click to toggle source
# File lib/medo/text_task_writer.rb, line 11
def write
  return puts "There are no tasks left!" if @tasks.empty?

  presented_active_tasks    = present_tasks(active_tasks)
  presented_completed_tasks = present_tasks(completed_tasks)

  max_task_length = (presented_active_tasks + presented_completed_tasks).map do |t| 
    t.to_s.split("\n").map(&:size).max
  end.max

  max_output_width = [Terminal.instance.size.first, max_task_length].min

  presented_active_tasks.each do |t|
    @output_stream.puts t.to_s(max_output_width)
  end

  if presented_active_tasks.any? and presented_completed_tasks.any?
    @output_stream.puts "-" * max_output_width
  end

  presented_completed_tasks.each do |t|
    @output_stream.puts t.to_s(max_output_width)
  end
end

Private Instance Methods

active_tasks() click to toggle source
# File lib/medo/text_task_writer.rb, line 38
def active_tasks
  @tasks.reject(&:done?).sort
end
completed_tasks() click to toggle source
# File lib/medo/text_task_writer.rb, line 42
def completed_tasks
  @tasks.select(&:done?).sort
end
present_tasks(tasks) click to toggle source
# File lib/medo/text_task_writer.rb, line 46
def present_tasks(tasks)
  tasks.map { |t| TaskPresenter.new(t) }
end