io.jesi.backpack.env
cljs?
(cljs? env)Take the &env from a macro, and tell whether we are expanding into CLJS.
converter
multimethod
Platform specific converters. Takes the env (from &env or platform keyword) and returns a converter function. The converter function takes a symbol and returns the platform specific version of that symbol.
platforms
An atom containing the platform specific predicates. Is an map of predicates, and their platform keyword value. The predicate should take a macro &env and return a boolean. See https://clojure.org/guides/reader_conditionals for platform keywords.
symbol
(symbol env sym)Takes the target env (from &env or platform keyword), and a quoted symbol. Transforms the symbol to platform specific symbol.
(symbol :cljs 'clojure.core.async) => cljs.core.async
transform
macro
(transform quoted-form)Transforms the symbols in a quoted form to platform specific symbols. Takes a quoted-form to be transformed. Use this in macros. e.g. (defmacro go [& body](env/transform (async/go ~@body)))`
WARNING: Will throw StackOverflowError for deeply nested forms. Use io.jesi.backpack.env/symbol to transform individual symbols
transform*
(transform* env quoted-form)Transforms the symbols in a quoted form to platform specific symbols. Takes an env (from &env or platform keyword), and a quoted-form to be transformed.
WARNING: Will throw StackOverflowError for deeply nested forms Use io.jesi.backpack.env/symbol to transform individual symbols