module Data.Char.Small where
superscript :: Char -> Char
superscript =
maybe (error "no superscript character available") id .
superscriptMaybe
superscriptMaybe :: Char -> Maybe Char
superscriptMaybe c =
case c of
'0' -> Just '\x2070'
'1' -> Just '\xb9'
'2' -> Just '\xb2'
'3' -> Just '\xb3'
'4' -> Just '\x2074'
'5' -> Just '\x2075'
'6' -> Just '\x2076'
'7' -> Just '\x2077'
'8' -> Just '\x2078'
'9' -> Just '\x2079'
'+' -> Just '\x207A'
'-' -> Just '\x207B'
'=' -> Just '\x207C'
'(' -> Just '\x207D'
')' -> Just '\x207E'
'i' -> Just '\x2071'
'n' -> Just '\x207F'
_ -> Nothing
subscript :: Char -> Char
subscript =
maybe (error "no subscript character available") id .
subscriptMaybe
subscriptMaybe :: Char -> Maybe Char
subscriptMaybe c =
case c of
'0' -> Just '\x2080'
'1' -> Just '\x2081'
'2' -> Just '\x2082'
'3' -> Just '\x2083'
'4' -> Just '\x2084'
'5' -> Just '\x2085'
'6' -> Just '\x2086'
'7' -> Just '\x2087'
'8' -> Just '\x2088'
'9' -> Just '\x2089'
'+' -> Just '\x208A'
'-' -> Just '\x208B'
'=' -> Just '\x208C'
'(' -> Just '\x208D'
')' -> Just '\x208E'
'a' -> Just '\x2090'
'e' -> Just '\x2091'
'o' -> Just '\x2092'
'x' -> Just '\x2093'
'h' -> Just '\x2095'
'k' -> Just '\x2096'
'l' -> Just '\x2097'
'm' -> Just '\x2098'
'n' -> Just '\x2099'
'p' -> Just '\x209A'
's' -> Just '\x209B'
't' -> Just '\x209C'
_ -> Nothing