Liking cljdoc? Tell your friends :D

hara.code.query


$cljmacro

($ context path & args)

select and manipulation of clojure source code

($ {:string "(defn hello1) (defn hello2)"} [(defn _ ^:%+ (keyword "oeuoeuoe"))]) => '[(defn hello1 :oeuoeuoe) (defn hello2 :oeuoeuoe)]

($ {:string "(defn hello1) (defn hello2)"} [(defn _ | ^:%+ (keyword "oeuoeuoe"))]) => '[:oeuoeuoe :oeuoeuoe]

(->> ($ {:string "(defn hello1) (defn hello2)"} [(defn _ | ^:%+ (keyword "oeuoeuoe"))] {:return :string})) => [":oeuoeuoe" ":oeuoeuoe"]

($ (nav/parse-root "a b c") [{:is a}]) => '[a]

select and manipulation of clojure source code

($ {:string "(defn hello1) (defn hello2)"}
   [(defn _ ^:%+ (keyword "oeuoeuoe"))])
=> '[(defn hello1 :oeuoeuoe) (defn hello2 :oeuoeuoe)]

($ {:string "(defn hello1) (defn hello2)"}
   [(defn _ | ^:%+ (keyword "oeuoeuoe"))])
=> '[:oeuoeuoe :oeuoeuoe]

(->> ($ {:string "(defn hello1) (defn hello2)"}
        [(defn _ | ^:%+ (keyword "oeuoeuoe"))]
        {:return :string}))
=> [":oeuoeuoe" ":oeuoeuoe"]

($ (nav/parse-root "a b c") [{:is a}])
=> '[a]
raw docstring

$*clj

($* context path & [func? opts?])

helper function for $

helper function for `$`
raw docstring

context-zlocclj

(context-zloc context)

gets the context for loading forms

gets the context for loading forms
raw docstring

matchclj

(match zloc selector)

matches the source code (match (nav/parse-string "(+ 1 1)") '(symbol? _ _)) => false

(match (nav/parse-string "(+ 1 1)") '(^:% symbol? _ _)) => true

(match (nav/parse-string "(+ 1 1)") '(^:%- symbol? _ | _)) => true

(match (nav/parse-string "(+ 1 1)") '(^:%+ symbol? _ _)) => false

matches the source code
(match (nav/parse-string "(+ 1 1)") '(symbol? _ _))
=> false

(match (nav/parse-string "(+ 1 1)") '(^:% symbol? _ _))
=> true

(match (nav/parse-string "(+ 1 1)") '(^:%- symbol? _ | _))
=> true

(match (nav/parse-string "(+ 1 1)") '(^:%+ symbol? _ _))
=> false
raw docstring

modifyclj

(modify zloc selectors func)
(modify zloc selectors func opts)

modifies location given a function (nav/string (modify (nav/parse-root "^:a (defn hello3) (defn hello)") ['(defn | _)] (fn [zloc] (nav/insert-left zloc :hello)))) => "^:a (defn :hello hello3) (defn :hello hello)"

modifies location given a function
(nav/string
 (modify (nav/parse-root "^:a (defn hello3) (defn hello)") ['(defn | _)]
         (fn [zloc]
           (nav/insert-left zloc :hello))))
=> "^:a (defn :hello hello3) (defn :hello hello)"
raw docstring

selectclj

(select zloc selectors)
(select zloc selectors opts)

selects all patterns from a starting point (map nav/value (select (nav/parse-root "(defn hello [] (if (try))) (defn hello2 [] (if (try)))") '[defn if try])) => '((defn hello [] (if (try))) (defn hello2 [] (if (try))))

selects all patterns from a starting point
(map nav/value
     (select (nav/parse-root "(defn hello [] (if (try))) (defn hello2 [] (if (try)))")
             '[defn if try]))
=> '((defn hello  [] (if (try)))
     (defn hello2 [] (if (try))))
raw docstring

traverseclj

(traverse zloc pattern)
(traverse zloc pattern func)

uses a pattern to traverse as well as to edit the form

(nav/value (traverse (nav/parse-string "^:a (+ () 2 3)") '(+ () 2 3))) => '(+ () 2 3)

(nav/value (traverse (nav/parse-string "()") '(^:&+ hello))) => '(hello)

(nav/value (traverse (nav/parse-string "()") '(+ 1 2 3))) => throws

(nav/value (traverse (nav/parse-string "(defn hello "world" {:a 1} [])") '(defn ^:% symbol? ^:?%- string? ^:?%- map? ^:% vector? & _))) => '(defn hello [])

uses a pattern to traverse as well as to edit the form

(nav/value
 (traverse (nav/parse-string "^:a (+ () 2 3)")
           '(+ () 2 3)))
=> '(+ () 2 3)

(nav/value
 (traverse (nav/parse-string "()")
           '(^:&+ hello)))
=> '(hello)

(nav/value
 (traverse (nav/parse-string "()")
           '(+ 1 2 3)))
=> throws

(nav/value
 (traverse (nav/parse-string "(defn hello \"world\" {:a 1} [])")
           '(defn ^:% symbol? ^:?%- string? ^:?%- map? ^:% vector? & _)))
=> '(defn hello [])
raw docstring

wrap-returnclj

(wrap-return f)

decides whether to return a string, zipper or sexp representation`

decides whether to return a string, zipper or sexp representation`
raw docstring

wrap-vecclj

(wrap-vec f)

helper for dealing with vectors

helper for dealing with vectors
raw docstring

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close