(gl game n & args)

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

Source

(defmacro gl "Wraps the WebGL2RenderingContext object, calling a method if the provided symbol starts with a lower-case letter, or a static field if it starts with an upper-case letter." [game n & args] (let [s (str n) ^Character l (nth s 0)] (if (Character/isUpperCase l) `(aget (:context ~game) ~s) (concat [(symbol (str "." s)) `(:context ~game)] args))))