Number helper functions that abstract differences between CLJ and CLJS. | (ns metabase.util.number (:refer-clojure :exclude [bigint integer?]) (:require [clojure.core :as core])) |
Coerce a number or a string to BigInt. Throws if coercion cannot be made. | (defn bigint
[x]
#?(:clj (core/bigint x)
:cljs (js/BigInt x))) |
Checks if the passed value is a BigInt instance. | (defn bigint?
[x]
#?(:clj (instance? clojure.lang.BigInt x)
:cljs (= (type x) js/BigInt))) |
Checks if the passed value is an integer. [[clojure.core/integer?]] does not take BigInt into account on CLJS. | (defn integer?
[x]
#?(:clj (core/integer? x)
:cljs (core/or (core/integer? x) (bigint? x)))) |
Parses a string as a BigInt. If the string cannot be parsed, returns | (defn parse-bigint
[s]
(when (re-matches #"[+-]?\d+" s)
(bigint s))) |