git.fiddlerwoaroof.com
main-classes.lisp
b411883d
 (in-package #:timesheet)
 
 (defclass status-calculator ()
   ((rate :initarg :rate :accessor rate)
    (total-hours :initform 0 :initarg :total-hour :accessor total-hours)
    (client-totals :initarg :client-totals :accessor client-totals)))
 
 (defclass status-line ()
   ((client :initarg :client :accessor client)
    (duration :initarg :duration :accessor duration :initform 0)))
 
 (defclass parsed-entry ()
   ((date :initarg :date :accessor date)
    (client :initarg :client :accessor client)
    (memo :initarg :memo :accessor memo)))
 
 (defclass complete-entry (parsed-entry)
   ((duration :initarg :duration :accessor duration)))
 
 (defclass partial-entry (parsed-entry)
   ((start-times :initarg :start-times :initform nil :accessor start-times)))
 
 (define-condition incomplete-entry-warning (warning) ())
 
 (define-condition parsing-error ()
   ((leftovers :initarg :leftovers :accessor leftovers))
   (:report (lambda (condition stream)
                (format stream "Parse error: ~20s leftover" (leftovers condition)))))