Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
change some names
Browse files Browse the repository at this point in the history
  • Loading branch information
ztellman committed Sep 16, 2012
1 parent 19625d0 commit e3c7429
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 27 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -7,4 +7,5 @@
/checkouts /checkouts
/.lein-deps-sum /.lein-deps-sum
target/** target/**
DS_Store DS_Store
push
53 changes: 28 additions & 25 deletions src/sleight/walk.clj
Expand Up @@ -30,35 +30,38 @@
(and symbol? (resolve x)) (and symbol? (resolve x))
x)) x))


(declare default-walk-handlers) (declare expr-handlers)


(defn walk-exprs (defn walk-exprs
([x] ([x]
(walk-exprs default-walk-handlers x)) (walk-exprs expr-handlers x))
([handlers x] ([handlers x]
(let [handle-expr #(handle-expr handlers %1 %2 x) (let [handle-expr #(handle-expr handlers %1 %2 x)
walk-exprs (partial walk-exprs handlers)] walk-exprs (partial walk-exprs handlers)
(cond x* (cond


(walkable? x) (walkable? x)
(doall (handle-expr (term-descriptor (first x)) #(map walk-exprs %))) (doall (handle-expr (term-descriptor (first x)) #(map walk-exprs %)))


(map-entry? x) (map-entry? x)
(handle-expr #'sleight.walk/map-entry #(clojure.lang.MapEntry. (handle-expr #'sleight.walk/map-entry #(clojure.lang.MapEntry.
(walk-exprs (key %)) (walk-exprs (key %))
(walk-exprs (val %)))) (walk-exprs (val %))))


(vector? x) (vector? x)
(handle-expr #'clojure.core/vector #(vector (map walk-exprs %))) (handle-expr #'clojure.core/vector #(vector (map walk-exprs %)))


(map? x) (map? x)
(handle-expr #'clojure.core/hash-map #(into {} (map walk-exprs %))) (handle-expr #'clojure.core/hash-map #(into {} (map walk-exprs %)))


(set? x) (set? x)
(handle-expr #'clojure.core/hash-set #(set (map walk-exprs %))) (handle-expr #'clojure.core/hash-set #(set (map walk-exprs %)))


:else :else
x)))) x)]
(if (instance? clojure.lang.IMeta x*)
(with-meta x* (merge (meta x) (meta x*)))
x*))))


;;; ;;;


Expand Down Expand Up @@ -89,7 +92,7 @@
(let-bindings-handler handlers (second x)) (let-bindings-handler handlers (second x))
(map (partial walk-exprs handlers) (drop 2 x)))) (map (partial walk-exprs handlers) (drop 2 x))))


(def default-walk-handlers (def expr-handlers
{#'defn fn-handler {#'defn fn-handler
#'fn fn-handler #'fn fn-handler
'fn* fn-handler 'fn* fn-handler
Expand Down
2 changes: 1 addition & 1 deletion test/sleight/test/walk.clj
Expand Up @@ -31,7 +31,7 @@
(defn eval* [x] (defn eval* [x]
(eval (eval
(walk-exprs (walk-exprs
(merge default-walk-handlers {#'+ increment-handler}) (merge expr-handlers {#'+ increment-handler})
x))) x)))


(deftest test-walk-exprs (deftest test-walk-exprs
Expand Down

0 comments on commit e3c7429

Please sign in to comment.