class Deeds::Journals::Entry

Attributes

error[R]
input[R]
line[R]
node[R]

Public Class Methods

new(input:, line: 1) click to toggle source
# File lib/deeds/journals/entry.rb, line 9
def initialize(input:, line: 1)
  @input = input
  @line = line
  parse! # Could be lazy, but that would be too complex
end

Public Instance Methods

activity() click to toggle source
# File lib/deeds/journals/entry.rb, line 55
def activity
  node.try!(:activity)
rescue Citrus::ParseError
  nil
end
date() click to toggle source
# File lib/deeds/journals/entry.rb, line 35
def date
  node.try!(:date)
rescue Citrus::ParseError
  nil
end
dump() click to toggle source
# File lib/deeds/journals/entry.rb, line 15
def dump
  %(#{date} #{minutes}m  \# #{hours.to_f.round(1)} hours)
end
hours() click to toggle source
# File lib/deeds/journals/entry.rb, line 51
def hours
  BigDecimal.new(minutes) / 60
end
minutes() click to toggle source
# File lib/deeds/journals/entry.rb, line 45
def minutes
  node.try!(:minutes)
rescue Citrus::ParseError
  nil
end
minutes?() click to toggle source
# File lib/deeds/journals/entry.rb, line 41
def minutes?
  !minutes.zero?
end
mjd() click to toggle source
# File lib/deeds/journals/entry.rb, line 19
def mjd
  date.mjd
end
monday?() click to toggle source
# File lib/deeds/journals/entry.rb, line 23
def monday?
  date.monday?
end
sunday?() click to toggle source
# File lib/deeds/journals/entry.rb, line 27
def sunday?
  date.sunday?
end
work_day?() click to toggle source
# File lib/deeds/journals/entry.rb, line 31
def work_day?
  !date.saturday? && !date.sunday?
end

Private Instance Methods

parse!() click to toggle source
# File lib/deeds/journals/entry.rb, line 63
def parse!
  @node = Deeds::Grammar.parse input

  # Triggering possible custom Exceptions
  @node.date
  @node.minutes
  @node.activity

rescue Citrus::ParseError => exception
  @error = exception
end