   blocks."
   "$$$")
 
+(def content-file? (complement fs/directory?))
+
 (defn mk-page-record
   [file lines]
   (merge (->> lines (take-while #(not= % *meta-sep*)) (join " ") (read-string))


(defn build-files!
  [root-dir]
  (map-directory! build-file! (complement fs/directory?) root-dir))

;; A site is our primary way of keeping track of content files as they
;; change.

         (strip-file-info page-record)))

(defn compile-file!
  [site-map build-root [page-record lines]]
  (let [output (mk-output build-root (:path page-record))]
    (with-parent-dir output
      (fn []
        (with-open [writer (clojure.java.io/writer output)]
