(math n & args)

Wraps the Math object, calling a method if the provided symbol starts with a lower-case letter, or a property if it starts with an upper-case letter.

Source

(defmacro math "Wraps the Math object, calling a method if the provided symbol starts with a lower-case letter, or a property if it starts with an upper-case letter." [n & args] (let [s (str n) ^Character l (nth s 0)] (if (Character/isUpperCase l) (symbol (str 'js "/Math." s)) (cons (symbol (str 'js "/Math." s)) args))))