refactor(sterni/mblog): add (sub)class for apple note messages

* Upon creation of an apple-note object we can check if certain fields
  we are interested in are present and of the right type etc.

  These currently are:

  - UUID (for links later)
  - Subject (title)
  - Time
  - Text part with supported MIME type

  These are then put into their own shortcut fields in the apple-note
  subclass which allows for easier access and forces us to make sure
  they are present.

* Split out everything note related into its own package. Using the new
  type, we can expose an interface which sort of makes sense.

Change-Id: Ic9d67518354e61a3cc8388bb0e566fce661e90d0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5072
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
sterni 2022-01-13 00:33:59 +01:00
parent d0e30ed23a
commit 56ec3b1803
5 changed files with 105 additions and 27 deletions

View file

@ -5,18 +5,33 @@
(:documentation
"Very incomplete package for dealing with maildir(5)."))
(defpackage :mblog
(defpackage :note
(:use
:common-lisp
:mime4cl
:closure-html
:who
:uiop)
(:shadow :with-html-output) ; conflict between closure-html and who
:cl-date-time-parser
:mime4cl
:who)
(:import-from
:alexandria
:when-let*
:when-let
:starts-with-subseq
:ends-with-subseq)
(:shadow :with-html-output) ; conflict between closure-html and who
(:export
:apple-note
:apple-note-uuid
:apple-note-subject
:apple-note-time
:apple-note-text-part
:make-apple-note
:apple-note-html-fragment))
(defpackage :mblog
(:use
:common-lisp
:uiop
:note)
(:export :main))