Utility library. Docstrings are omitted for simple functions; read the source to see what they do.
Utility library. Docstrings are omitted for simple functions; read the source to see what they do.
(assoc-pred m f & kvs)
Like assoc, but skip kv pairs where (f v) is false.
Like assoc, but skip kv pairs where (f v) is false.
(cljs-import-vars nspace & syms)
Like potemkin/import-vars
but supports importing cljs-only functions.
Example:
(cljs-import-vars my.namespace.core
foo bar baz)
Like `potemkin/import-vars` but supports importing cljs-only functions. Example: ``` (cljs-import-vars my.namespace.core foo bar baz) ```
(condas-> expr name & clauses)
Combination of cond->
and as->
.
Combination of `cond->` and `as->`.
(derive-config m)
Replaces any ^:derived
values in m
.
Example:
(def m
{:first-name "John"
:last-name "Doe"
:full-name ^:derived #(str (get-config % :first-name) " "
(get-config % :last-name))})
(derive-config m)
=> {:first-name "John" :last-name "Doe" :full-name "John Doe"}
Any values with a truthy :derived
metadata value must be single-argument
functions. These functions will be replaced with their return values, with
the config map as the argument.
get-config
is like get
, but if the return value is a :derived
function,
get-config
will derive it before returning. It should be used within
:derived
function as in the example
Replaces any `^:derived` values in `m`. Example: ``` (def m {:first-name "John" :last-name "Doe" :full-name ^:derived #(str (get-config % :first-name) " " (get-config % :last-name))}) (derive-config m) => {:first-name "John" :last-name "Doe" :full-name "John Doe"} ``` Any values with a truthy `:derived` metadata value must be single-argument functions. These functions will be replaced with their return values, with the config map as the argument. `get-config` is like `get`, but if the return value is a `:derived` function, `get-config` will derive it before returning. It should be used within `:derived` function as in the example
(doclines _var)
Returns the docstring of a var as a collection of lines, removing indentation.
Returns the docstring of a var as a collection of lines, removing indentation.
(format-columns rows)
Formats rows of text into columns.
Example:
(doseq [row (format-columns [["hellooooooooo " "there"]
["foo " "bar"]
["one column"]])]
(println row))
hellooooooooo there
foo bar
one column
Formats rows of text into columns. Example: ``` (doseq [row (format-columns [["hellooooooooo " "there"] ["foo " "bar"] ["one column"]])] (println row)) hellooooooooo there foo bar one column ```
(get-config m k)
(get-config m k not-found)
See [derive-config].
See [derive-config].
(get-in-config m ks)
(get-in-config m ks not-found)
See [derive-config].
See [derive-config].
(inherit child-name [parent-instance :as fields] & overrides)
Like deftype
but with default function implementations.
The first field is the "parent": for any protocol functions you don't define, the function will be called again with the parent as the first argument instead of the current object.
Example:
(defprotocol P
(foo [this])
(bar [this]))
(deftype Parent []
P
(foo [_] "parent foo")
(bar [_] "parent bar"))
(inherit Child [parent]
P
(foo [_] "child foo"))
(def parent (Parent.))
(def child (Child. parent))
(foo child)
=> "child foo"
(bar child)
=> "parent bar"
Like `deftype` but with default function implementations. The first field is the "parent": for any protocol functions you don't define, the function will be called again with the parent as the first argument instead of the current object. Example: ``` (defprotocol P (foo [this]) (bar [this])) (deftype Parent [] P (foo [_] "parent foo") (bar [_] "parent bar")) (inherit Child [parent] P (foo [_] "child foo")) (def parent (Parent.)) (def child (Child. parent)) (foo child) => "child foo" (bar child) => "parent bar" ```
(js<! form)
Like <!
but for js promises. See to-chan
.
Like `<!` but for js promises. See [[to-chan]].
(load-fns & forms)
Defines a bunch of "dynamic functions" (see loadf
).
Example:
(load-fns
foo my.lib/foo
bar my.lib/bar
baz your.lib/baz)
(foo) ; same as (do (require 'my.lib) (my.lib/foo))
Defines a bunch of "dynamic functions" (see [[loadf]]). Example: ``` (load-fns foo my.lib/foo bar my.lib/bar baz your.lib/baz) (foo) ; same as (do (require 'my.lib) (my.lib/foo)) ```
(load-var sym)
Dynamically loads a var.
sym
: a fully-qualified var symbol.
Dynamically loads a var. `sym`: a fully-qualified var symbol.
(loadf sym)
Returns a function that dynamically loads and calls the specified function.
sym
: a fully-qualified function symbol.
Returns a function that dynamically loads and calls the specified function. `sym`: a fully-qualified function symbol.
(maintain-subscriptions sub-atom sub-fn)
Watch for changes in a set of subscriptions (stored in sub-atom), subscribing and unsubscribing accordingly. sub-fn should take an element of @sub-atom and return a channel that delivers the subscription channel after the first subscription result has been received. This is necessary because otherwise, old subscriptions would be closed too early, causing problems for the calculation of sub-atom.
Watch for changes in a set of subscriptions (stored in sub-atom), subscribing and unsubscribing accordingly. sub-fn should take an element of @sub-atom and return a channel that delivers the subscription channel after the first subscription result has been received. This is necessary because otherwise, old subscriptions would be closed too early, causing problems for the calculation of sub-atom.
(maybe-slurp f)
Attempts to slurp f
, returning nil on failure
Attempts to slurp `f`, returning nil on failure
(merge-subscription-results! {:keys [sub-data-atom merge-result sub-key
sub-channel]})
Continually merge results from subscription into sub-data-atom. Returns a channel that delivers sub-channel after the first result has been merged.
Continually merge results from subscription into sub-data-atom. Returns a channel that delivers sub-channel after the first result has been merged.
(print-table header-info table)
Prints a nicely formatted table.
Example:
(print-table
[[:foo "Foo"] [:bar "Bar"]]
[{:foo 1 :bar 2} {:foo 3 :bar 4}])
=> Foo Bar
1 2
3 4
Prints a nicely formatted table. Example: ``` (print-table [[:foo "Foo"] [:bar "Bar"]] [{:foo 1 :bar 2} {:foo 3 :bar 4}]) => Foo Bar 1 2 3 4 ```
(sh & args)
Runs a shell command.
Returns the output if successful; otherwise, throws an exception.
Runs a shell command. Returns the output if successful; otherwise, throws an exception.
(synchronize f)
Returns a fn that will queue calls to f
, an async fn.
Returns a fn that will queue calls to `f`, an async fn.
(text & forms)
Generates a string from pairs of conditions and lines of text.
The right-hand side values will be flattened, so you can give strings,
collections of strings, or nested collections of strings. nil
s are
removed.
Example:
(println (text
true ["foo" nil "bar"]
false "baz"
true "quux"))
foo
bar
quux
Generates a string from pairs of conditions and lines of text. The right-hand side values will be flattened, so you can give strings, collections of strings, or nested collections of strings. `nil`s are removed. Example: ``` (println (text true ["foo" nil "bar"] false "baz" true "quux")) foo bar quux ```
(to-chan p)
Converts a js promise to a channel. If the promise throws an error, logs to the console and closes the channel.
Converts a js promise to a channel. If the promise throws an error, logs to the console and closes the channel.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close