packages feed

ansiform-0.7.9.0: src/Ansiform/Number.hs

-- | Non-negative numbers used for widths, offsets and padding.
module Ansiform.Number ( Number
                  , Width
                  , Padding
                  , Offset
                  , formNumber
                  , unNumber
                  , addNumber
                  , subtractNumber
                  , subtractNumberMaybe
                  ) where

--------------------------------------------------------------------------------
import           Ansiform.Internal.Number (Number, Width, Padding, Offset,
                                           formNum, unn)
import qualified Ansiform.Internal.Number as Internal


-- | Builds a 'Number', capping negative values at zero.
formNumber :: Int -> Number
formNumber = formNum

-- | Adds two numbers.
addNumber :: Number -> Number -> Number
addNumber = Internal.addNumber

-- | Subtracts the second number from the first, capping at zero.
subtractNumber :: Number -> Number -> Number
subtractNumber = Internal.subtractNumber

-- | Subtracts the second number from the first.
--   Returns 'Nothing' when the result would be negative.
subtractNumberMaybe :: Number -> Number -> Maybe Number
subtractNumberMaybe = Internal.subtractNumberMaybe

-- | Converts a 'Number' back to an 'Int'.
unNumber :: Number -> Int
unNumber = unn