javascript-extras-0.4.0.0: src/JavaScript/Extras/Number.hs
{-# LANGUAGE CPP #-}
module JavaScript.Extras.Number
( maxSafeInteger
, minSafeInteger
, safeIncrement
, safeDecrement
) where
maxSafeInteger :: Int
maxSafeInteger = js_maxSafeInteger
minSafeInteger :: Int
minSafeInteger = js_minSafeInteger
-- | always returns a number between [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER]
safeIncrement :: Int -> Int
safeIncrement i = if i >= maxSafeInteger then minSafeInteger else i + 1
-- | always returns a number between [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER]
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