diff clojure/com/aurellem/gb_driver.clj @ 83:95cb2152d7cd

fleshing out functional gb interface
author Robert McIntyre <rlm@mit.edu>
date Fri, 09 Mar 2012 19:18:00 -0600
parents 04d539d26bdc
children e8855121f413
line wrap: on
line diff
     1.1 --- a/clojure/com/aurellem/gb_driver.clj	Fri Mar 09 13:24:02 2012 -0600
     1.2 +++ b/clojure/com/aurellem/gb_driver.clj	Fri Mar 09 19:18:00 2012 -0600
     1.3 @@ -177,3 +177,30 @@
     1.4    `(binding [*save-history* false]
     1.5       ~@forms))
     1.6  
     1.7 +
     1.8 +(require '(clojure [zip :as zip]))
     1.9 +
    1.10 +
    1.11 +
    1.12 +
    1.13 +(defn tree->str [original]
    1.14 +  (loop [s ".\n" loc (zip/down (zip/seq-zip (seq original)))]
    1.15 +    (if (zip/end? loc) s
    1.16 +        (let [d (count (zip/path loc))
    1.17 +	      rep
    1.18 +              (str
    1.19 +               s
    1.20 +               (if (and (zip/up loc)
    1.21 +                        (> (count (-> loc zip/up zip/rights)) 0))
    1.22 +                 "|" "")
    1.23 +               (apply str (repeat (dec d) "   "))
    1.24 +               (if (= (count (zip/rights loc)) 0)
    1.25 +                 "`-- "
    1.26 +                 "|-- ")
    1.27 +               (zip/node loc)
    1.28 +               "\n")]
    1.29 +          (recur rep (zip/next loc))))))
    1.30 +
    1.31 +
    1.32 +
    1.33 +