 
 
 (defn find-code-blocks
+  "Pattern match the text to find fenced code blocks. Returns a sequence of
+  match vectors containing `[match directive? code]`. The directive may be a
+  word appearing inside an HTML comment immediately preceding the block."
   [text]
   (re-seq #"(?:<!-- (\S+) -->\n)?```clojure\n((?:[^`]*\n)*[^`]+)```" text))
 

                             expected
                             post)]
          ;(puget/cprint [form result err])
          (recur (if-not err
                   (take 3 (cons result history))
                   history)



(defn split-body
  "Separate a the `:body` string in the given statement map into an input
  `:form` and `:expected` value (if present). If the body doesn't begin with
  the prompt string `=>`, it is returned unchanged."
  [statement]
  (let [body (:body statement)]
    (if (str/starts-with? (first body) "=> ")
