io.jesi.backpack

->camelCase

(->camelCase s)

->camelCase-key

->comparator

(->comparator val-fn)

Returns a comparator where values returning from a value function are compared against

->kebab-case

(->kebab-case s)

->kebab-case-key

->proper-case

(->proper-case s)

->snake_case

(->snake_case s)

->snake_case-key

->uri

(->uri s)

->uuid

multimethod

Coerces a value into a UUID if possible, otherwise returns nil

->uuid-or-not

(->uuid-or-not id)

add-shutdown-hook

macro

(add-shutdown-hook & body)

Adds a shutdown hook using java.lang.Runtime.addShutdownHook. Returns the created Thread

add-shutdown-hook-fn

(add-shutdown-hook-fn f)

Adds a shutdown hook using java.lang.Runtime.addShutdownHook. Takes a function f, and returns the created Thread

and-fn

(and-fn pred & more)

Higher order and. Takes any number of predicates and returns a function that takes a value and returns true if ALL individual predicates return true, else return false.

any?

(any? pred coll)

Returns true if any item in coll returns true for pred, otherwise false

apply-when

(apply-when f v)

Invokes f when it’s truthy

assoc-in

(assoc-in m & kvs)

assoc-some!

(assoc-some! tmap k v)

Assocs some value into a transitive map

blank?

Similar to clojure.string/blank? but returns false if given a non-string

call

(call f v)

Calls the function f with a value v

close

multimethod

collify

(collify)(collify v)

Puts value v in a vector if it is not a collection. Returns nil if no value

compr

(compr)(compr f)(compr f g)(compr f g & more)

Composes functions left to right, the opposite of comp

concat!

(concat!)(concat! tcoll)(concat! tcoll seq)(concat! tcoll seq & more)

Adds the values to the transient collection, returning tcoll. Concatenates of the elements in the supplied sequences

conj!

(conj!)(conj! tcoll)(conj! tcoll val)(conj! tcoll val & more)

Adds val to the transient collection, and return tcoll. The ‘addition’ may happen at different ‘places’ depending on the concrete type.

conj-some!

(conj-some! tcoll v)

Adds a value to the transitive collection if some

contains-any?

(contains-any? map & keys)

d#

(d# a)

Derefs a value if it is derefable

default-changed-merger

default-comparator

defkw-type

(defkw-type type kw & args)

diff

(diff existing updated)(diff leaf-pred existing updated)(diff leaf-pred comparator existing updated)(diff leaf-pred comparator changed-merger existing updated)

Returns a map of paths which have changed :added, :changed, :removed, and :same

dissoc-all

(dissoc-all map & keys)

dissoc-in

(dissoc-in m path & paths)

Dissociates paths from a map. Any empty maps produced will be removed

distinct-by

(distinct-by key entities)

distinct-vals?

(distinct-vals? m)

Returns true if all the map values are unique

empty->nil

(empty->nil x)

Returns nil if argument returns true for (clojure.core/empty?)

exception?

(exception? x)

Returns true if x is a Clojure Throwable or ClojureScript js/Error

filter-by

(filter-by key-fn pred coll)

Filters a collection where a key matches a predicate e.g. (let [coll [{:id 1} {:id 2}] (filter-by :id (bp/p= 1) coll)) ; returns `({:id 1})

filter-empty

filter-key=

(filter-key= key-fn value coll)

Filters a collection where a key matches a value e.g. (let [coll [{:id 1} {:id 2}] (filter-key= :id 1 coll)) ; returns `({:id 1})

filter-nil-keys

(filter-nil-keys map)

Filters out all nil key values from a map

filter-values

(filter-values pred map)

first-some

(first-some m & ks)

if-fn

(if-fn pred then)(if-fn pred then else)

Higher-order if function. Takes a predicate (pred), calling then or (optionally) else based on the predicate. Returns nil if no else defined.

in?

(in? col el)

infinity

Java’s Integer/MAX_VALUE for consistence use in Clojure(Script) projects

java->clj

(java->clj j)(java->clj j key-fn)

Transforms Java to Clojure. Converting keys to kebab-case keywords by default

kebab->proper-case

(kebab->proper-case s)

kebab-case->Proper-Kebab-Case

(kebab-case->Proper-Kebab-Case kebab-case-str)

macro?

(macro? sym)

True if the provided sym is a macro

map-if

(map-if pred f col)

map-key-walker

map-leaves

(map-leaves f coll)(map-leaves f leaf-pred coll)

Traverses and applies the mapping function to each leaf of a data structure. The mapping function is given the path and value at that path

map-walker

mod

(mod num div)

Modulus of num and div supporting float and decimal values. Truncates toward negative infinity.

named?

(named? x)

Returns true if x is named (can be passed to name)

namespaced?

(namespaced? named)

Returns true if the named has a namespace

noop

not-blank?

or-fn

(or-fn pred & more)

Higher order or. Takes any number of predicates and returns a function that takes a value and returns true if ANY individual predicates return true, else return false.

p=

(p= & x)

Partial =

partial-right

(partial-right f & args)

pass

(pass f)

pass-if

(pass-if pred f)

path-walker

A spectre recursive path navigator, that collects all paths to the occurrences of leaves that match the given predicate. Does not traverse deeper into the matched structures.

pprint-str

(pprint-str object)

pprint-str-code

(pprint-str-code object)

prefix

re-quote

(re-quote s)

Quotes the regex string

redact

(redact keys m)(redact keys m redacted-value)

Deeply replaces value of all the keys in m with the redacted-value

reduce-leaves

(reduce-leaves f coll)(reduce-leaves f init coll)(reduce-leaves f init leaf-pred coll)

Traverses and reduces a data structure where the reducing function is given an accumulator, vector path and value at that path

remove-empty

(remove-empty x)

remove-nil-vals

(remove-nil-vals map)

Shallowly removes nil values from a map

remove-prefix

(remove-prefix prefix s)(remove-prefix prefix separator s)

Removes the prefix if the string starts with it otherwise ignores, is case sensitive

rename-keys!

(rename-keys! tmap kmap)

Returns the transient map with the keys in kmap renamed to the vals in kmap

round-to

(round-to precision d)

Rounds a given value ‘d’ to the specified ‘precision’

safe-empty?

(safe-empty? x)

select-non-nil-keys

(select-non-nil-keys m keys)

select-vals

(select-vals m ks)

Selects all values from a map using specified keys. Missing keys return nil

sorted-map-by-index

(sorted-map-by-index idx & keyvals)

sorted-map-by-order

(sorted-map-by-order ks & keyvals)

sorted?

(sorted? coll)(sorted? comp coll)

True if a collection is sorted by means of a 2 or 3 way comparator

split-at-first

(split-at-first value s)

Splits s at the first occurrence of value, returns nil when s is empty

subs

(subs s start)(subs s start end)

subs-inc

(subs-inc match s)

Returns the substring of ‘s’ up to and including the ‘match’ or nil

subs-to

(subs-to match s)

Returns the substring of ‘s’ up until the ‘match’

suffix

throw-if-throwable

(throw-if-throwable ex)

Throw ex if it’s an exception. Retains the message, data, and cause

trans-reduce

(trans-reduce f [c & coll])(trans-reduce f init coll)

trans-reduce-kv

(trans-reduce-kv f init coll)

transform-keys

(transform-keys f coll)

Recursively transforms all map keys in coll with f

translate-keys

(translate-keys kmap map)

Updates map with the keys from kmap

true-string?

(true-string? s)

True if ‘s’ is the string literal ‘true’

update!

(update! tcoll k f)(update! tcoll k f x)(update! tcoll k f x y)(update! tcoll k f x y z)(update! tcoll k f x y z & more)

‘Updates’ a value in an transient associative structure, where k is a key and f is a function that will take the old value and any supplied args and return the new value, and returns a new structure. If the key does not exist, nil is passed as the old value.

update-some

(update-some m k f & args)

Updates a key in a map with a function, only if the key is present and the result of f is not nil.

update-some!

(update-some! tmap k f)

Replaces the value of a key in a transitive map if the result of the function is some

uuid-str?

(uuid-str? s)

True if ‘s’ is a string and matches the UUID format

xor

(xor)(xor x)(xor x y)(xor x y & more)

Returns true only if one argument is true