{-# LANGUAGE Safe #-}
module Data.Char.Number.Duodecimal
(
char10,
char11,
duodecimalDigit,
duodecimalDigit',
duodecimalNumber,
duodecimalNumber',
)
where
import Data.Bits ((.|.))
import Data.Char (chr)
import Data.Char.Core (PlusStyle, positionalNumberSystem)
import Data.Default.Class (def)
import Data.Text (Text)
char10 ::
Char
char10 :: Char
char10 = Char
'\x2180'
char11 ::
Char
char11 :: Char
char11 = Char
'\x2181'
_duodecimalDigit :: Int -> Char
_duodecimalDigit :: Int -> Char
_duodecimalDigit Int
n
| Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
10 = Int -> Char
chr (Int
0x30 Int -> Int -> Int
forall a. Bits a => a -> a -> a
.|. Int
n)
| Bool
otherwise = Int -> Char
chr (Int
0x2180 Int -> Int -> Int
forall a. Bits a => a -> a -> a
.|. Int
n)
duodecimalDigit' ::
Integral i =>
i ->
Char
duodecimalDigit' :: forall i. Integral i => i -> Char
duodecimalDigit' = Int -> Char
_duodecimalDigit (Int -> Char) -> (i -> Int) -> i -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. i -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral
duodecimalDigit :: Integral i => i -> Maybe Char
duodecimalDigit :: forall i. Integral i => i -> Maybe Char
duodecimalDigit i
n
| i
n i -> i -> Bool
forall a. Ord a => a -> a -> Bool
>= i
0 Bool -> Bool -> Bool
&& i
n i -> i -> Bool
forall a. Ord a => a -> a -> Bool
< i
12 = Char -> Maybe Char
forall a. a -> Maybe a
Just (i -> Char
forall i. Integral i => i -> Char
duodecimalDigit' i
n)
| Bool
otherwise = Maybe Char
forall a. Maybe a
Nothing
duodecimalNumber ::
Integral i =>
PlusStyle ->
i ->
Text
duodecimalNumber :: forall i. Integral i => PlusStyle -> i -> Text
duodecimalNumber = i -> (Int -> Char) -> Char -> Char -> PlusStyle -> i -> Text
forall i.
Integral i =>
i -> (Int -> Char) -> Char -> Char -> PlusStyle -> i -> Text
positionalNumberSystem i
12 Int -> Char
_duodecimalDigit Char
'+' Char
'-'
duodecimalNumber' ::
Integral i =>
i ->
Text
duodecimalNumber' :: forall i. Integral i => i -> Text
duodecimalNumber' = PlusStyle -> i -> Text
forall i. Integral i => PlusStyle -> i -> Text
duodecimalNumber PlusStyle
forall a. Default a => a
def