{-# LANGUAGE CPP #-}
module JavaScript.Extras.Number
( maxSafeInteger
, minSafeInteger
, safeIncrement
, safeDecrement
) where
maxSafeInteger :: Int
maxSafeInteger = js_maxSafeInteger
minSafeInteger :: Int
minSafeInteger = js_minSafeInteger
safeIncrement :: Int -> Int
safeIncrement i = if i >= maxSafeInteger then minSafeInteger else i + 1
safeDecrement :: Int -> Int
safeDecrement i = if i <= minSafeInteger then maxSafeInteger else i - 1
#ifdef __GHCJS__
foreign import javascript unsafe
"Number.MAX_SAFE_INTEGER"
js_maxSafeInteger :: Int
foreign import javascript unsafe
"Number.MIN_SAFE_INTEGER"
js_minSafeInteger :: Int
#else
js_maxSafeInteger :: Int
js_maxSafeInteger = 0
js_minSafeInteger :: Int
js_minSafeInteger = 0
#endif