123456789101112131415161718192021222324252627 |
- (ns frontend.handler.export.zip-helper
- "zipper helpers used in opml&html exporting"
- (:require [clojure.zip :as z]))
- (defn goto-last
- [loc]
- (let [loc* (z/next loc)]
- (if (z/end? loc*)
- loc
- (recur loc*))))
- (defn get-level
- [loc]
- (count (z/path loc)))
- (defn goto-level
- [loc level]
- (let [current-level (get-level loc)]
- (assert (<= level (inc current-level))
- (print-str :level level :current-level current-level))
- (let [diff (- level current-level)
- up-or-down (if (pos? diff) z/down z/up)
- diff* (abs diff)]
- (loop [loc loc count* diff*]
- (if (zero? count*)
- loc
- (recur (up-or-down loc) (dec count*)))))))
|