class Medo::TextTaskWriter::TaskPresenter
Public Class Methods
new(task)
click to toggle source
# File lib/medo/text_task_writer.rb, line 54 def initialize(task) @task = task end
Public Instance Methods
description(length = nil, options = {})
click to toggle source
# File lib/medo/text_task_writer.rb, line 58 def description(length = nil, options = {}) if length break_line_to_fit(@task.description, length, options) else @task.description end end
done()
click to toggle source
# File lib/medo/text_task_writer.rb, line 86 def done "[#{@task.done? ? '+' : ' '}]" end
notes(length = nil, options = {})
click to toggle source
# File lib/medo/text_task_writer.rb, line 75 def notes(length = nil, options = {}) return "" if @task.notes.empty? "\n\n" + @task.notes.map do |n| if length break_line_to_fit(n, length, options) else n.rjust(n.size + done.size + 1) end end.join("\n") + "\n\n" end
time()
click to toggle source
# File lib/medo/text_task_writer.rb, line 66 def time format = "%H:%M" if @task.done? "[#{@task.completed_at.strftime(format)}]" else "(#{@task.created_at.strftime(format)})" end end
to_s(length = nil)
click to toggle source
# File lib/medo/text_task_writer.rb, line 90 def to_s(length = nil) c = components(length) "#{c.done} #{c.description} #{c.time}#{c.notes}" end
Private Instance Methods
break_line_to_fit(str, length, options = {})
click to toggle source
# File lib/medo/text_task_writer.rb, line 114 def break_line_to_fit(str, length, options = {}) first_line_padding = options[:first_line_padding] left_padding = options[:left_padding] padding_diff = (left_padding - first_line_padding) if first_line_padding && left_padding available_length = length - padding_diff.to_i lines = str.gsub(/(.{1,#{available_length}})(?:\s+|\Z)|(.{1,#{available_length}})/m, "\\1\\2\n").split("\n") lines.map! do |line| line.strip.ljust(available_length).rjust(available_length + left_padding.to_i) end lines[0] = lines.first.strip.ljust(length).rjust(length + first_line_padding.to_i) lines.join("\n") end
components(length = nil)
click to toggle source
# File lib/medo/text_task_writer.rb, line 97 def components(length = nil) if length description_length = length - done.length - time.length - 2 description_padding = done.length + 1 formatted_description = description(description_length, :left_padding => description_padding) notes_length = length - done.length - 1 notes_first_line_padding = done.length + 1 notes_padding = notes_first_line_padding + 2 formatted_notes = notes(notes_length, :first_line_padding => notes_first_line_padding, :left_padding => notes_padding) Components.new(done, formatted_description, time, formatted_notes) else Components.new(done, description, time, notes) end end