       (java.io.InputStreamReader.)
       (slurp))
     (catch Exception e
-      (message "failed to read resource " resource-name)
+      (message "Failed to read resource " resource-name)
       (if continue-on-failure?
         (message "    continuing anyway...")
         (do (message "    aborting...")

  [path & continue-on-failure?]
  (try (slurp path)
    (catch java.io.FileNotFoundException _
      (message path " not found; reading as a resource instead")
      (slurp-resource path continue-on-failure?))))

(defn encode-anchor [s]

(defn maybe-associate-brush [path lang]
  (when-let [b (and lang (second (languages lang)))]
    (when-not (@*brushes* b)
      (message "Associating "path " with brush " b)
      (swap! *brushes* conj b))))

; The output of each file is wrapped in `article` or `section` tags. Article
