git.fiddlerwoaroof.com
Raw Blame History
(in-package :aion.build-tree)

(fw.lu:defclass+ build-tree ()
  ((%history :accessor history :initform ())))

(defmethod handle-begin ((client build-tree) block)
  (push (list block) (history client)))
(defmethod handle-end ((client build-tree) block)
  (progn (when (cdr (history client))
           (let ((last (pop (history client))))
             (push (nreverse last)
                   (car (history client)))))))
(defmethod handle-property ((client build-tree) tag params content)
  (push (list tag params content)
        (car (history client))))

(defun ics->tree (data)
  (let ((client (build-tree)))
    (process-ics client data)
    (nreverse (car (history client)))))