word8-0.1.4: Data/Word8.hs
-- | Word8 library to be used with "Data.ByteString".
-- All functions assume that the 'Word8' is encoded in Latin-1 (ISO-8859-1).
-- All utility functions are supposed to work like those of "Data.Char".
-- Exceptions are described in the function documentations.
module Data.Word8 (
-- * Re-exporting
Word8,
-- * Functions on bytes
-- ** Character classification
isControl,
isSpace,
isLower,
isUpper,
isAlpha,
isAlphaNum,
isPrint,
isDigit,
isOctDigit,
isHexDigit,
isLetter,
isMark,
isNumber,
isPunctuation,
isSymbol,
isSeparator,
-- ** Subranges
isAscii,
isLatin1,
isAsciiUpper,
isAsciiLower,
-- ** Case conversion
toUpper,
toLower,
toTitle,
-- * Byte constants
-- ** ASCII characters
_nul,
_tab,
_lf,
_vt,
_np,
_cr,
_space,
_exclam,
_quotedbl,
_numbersign,
_dollar,
_percent,
_ampersand,
_quotesingle,
_parenleft,
_parenright,
_asterisk,
_plus,
_comma,
_hyphen,
_period,
_slash,
_0,
_1,
_2,
_3,
_4,
_5,
_6,
_7,
_8,
_9,
_colon,
_semicolon,
_less,
_equal,
_greater,
_question,
_at,
_A,
_B,
_C,
_D,
_E,
_F,
_G,
_H,
_I,
_J,
_K,
_L,
_M,
_N,
_O,
_P,
_Q,
_R,
_S,
_T,
_U,
_V,
_W,
_X,
_Y,
_Z,
_bracketleft,
_backslash,
_bracketright,
_circum,
_underscore,
_grave,
_a,
_b,
_c,
_d,
_e,
_f,
_g,
_h,
_i,
_j,
_k,
_l,
_m,
_n,
_o,
_p,
_q,
_r,
_s,
_t,
_u,
_v,
_w,
_x,
_y,
_z,
_braceleft,
_bar,
_braceright,
_tilde,
_del,
-- ** Some Latin-1 characters
_nbsp,
_ordfeminine,
_softhyphen,
_mu,
_ordmasculine,
_s2,
_s3,
_s1,
_1'4,
_1'2,
_3'4,
_Agrave,
_Odieresis,
_Oslash,
_Thorn,
_germandbls,
_agrave,
_odieresis,
_oslash,
_thorn,
_ydieresis,
) where
import Data.Bits (unsafeShiftR, (.&.))
import Data.Word (Word64, Word8)
----------------------------------------------------------------
-- | Is the byte a control character
isControl :: Word8 -> Bool
isControl w =
w <= 0x1f
|| _del <= w && w <= 0x9f
-- | Is the byte white space
isSpace :: Word8 -> Bool
isSpace w =
w == _space
|| w == _tab
|| w == _lf
|| w == _cr
|| w == _np
|| w == _vt
|| w == _nbsp
-- | Is the byte a lower case character
--
-- This function returns 'False' for 170 (ª) and 186 (º).
isLower :: Word8 -> Bool
isLower w =
isLower' w
|| w == _mu
isLowerCommon :: Word8 -> Bool
isLowerCommon w =
isLower' w
|| w == _mu
|| w == _ordfeminine
|| w == _ordmasculine
isLower' :: Word8 -> Bool
isLower' w =
isAsciiLower w
|| _germandbls <= w && w <= _ydieresis && w /= 0xf7
-- | Is the byte an upper case character
isUpper :: Word8 -> Bool
isUpper w =
isAsciiUpper w
|| _Agrave <= w && w <= _Thorn && w /= 0xd7
-- | Is the byte an alphabet letter
--
-- Synonym for 'isLetter'
isAlpha :: Word8 -> Bool
isAlpha w = isLowerCommon w || isUpper w
-- | Is the byte an alphabet letter or a number
isAlphaNum :: Word8 -> Bool
isAlphaNum w = isAlpha w || isNumber w
-- | Is the byte printable
isPrint :: Word8 -> Bool
isPrint w
| w == _softhyphen = False
isPrint w =
_space <= w && w <= _tilde
|| _nbsp <= w && w <= _ydieresis
-- | Is the byte a digit (@0-9@)
isDigit :: Word8 -> Bool
isDigit w = _0 <= w && w <= _9
-- | Is the byte an octal digit (@0-7@)
isOctDigit :: Word8 -> Bool
isOctDigit w = _0 <= w && w <= _7
-- | Is the byte a hexadecimal digit (@0-9a-fA-F@)
isHexDigit :: Word8 -> Bool
isHexDigit w =
isDigit w
|| _A <= w && w <= _F
|| _a <= w && w <= _f
-- | Is the byte an alphabet letter
--
-- Synonym for 'isAlpha'
isLetter :: Word8 -> Bool
isLetter w = isLowerCommon w || isUpper w
-- | A byte is never a mark
--
-- Synonymous with @const False@
isMark :: Word8 -> Bool
isMark _ = False
-- | Is the byte a number
isNumber :: Word8 -> Bool
isNumber w =
isDigit w
|| w == _s1
|| w == _s2
|| w == _s3
|| w == _1'4
|| w == _1'2
|| w == _3'4
-- | Is the byte a punctuation character
--
-- This function returns 'True' for 167 (§) and 182 (¶).
isPunctuation :: Word8 -> Bool
-- Bitmap of !"#%&'()*,-./:;?@[\]_{} and ¡§«¶·»¿
{-# INLINE isPunctuation #-}
isPunctuation w =
inBitmap 0x8c00f7ee00000000 0x28000000b8000001 0x88c0088200000000 0 w
-- | Is the byte a symbol character
--
-- This function returns 'False' for 167 (§) and 182 (¶).
isSymbol :: Word8 -> Bool
-- Bitmap of $+<=>^`|~ and ¢£¤¥¦¨©¬®¯°±´¸×÷
{-# INLINE isSymbol #-}
isSymbol w =
inBitmap
0x7000081000000000
0x5000000140000000
0x0113d37c00000000
0x0080000000800000
w
-- Membership test for a 256-bit set given as four 64-bit words.
inBitmap :: Word64 -> Word64 -> Word64 -> Word64 -> Word8 -> Bool
inBitmap b0 b1 b2 b3 w = (b `unsafeShiftR` fromIntegral (w .&. 63)) .&. 1 /= 0
where
b = case w `unsafeShiftR` 6 of
0 -> b0
1 -> b1
2 -> b2
_ -> b3
{-# INLINE inBitmap #-}
-- | Is the byte a (non-breaking) space
isSeparator :: Word8 -> Bool
isSeparator w =
w == _space
|| w == _nbsp
----------------------------------------------------------------
-- | Is the byte in the ASCII range
isAscii :: Word8 -> Bool
isAscii w = w .&. 0x80 == 0
-- | Every byte is in the Latin-1 range
--
-- Synonymous with @const True@
isLatin1 :: Word8 -> Bool
isLatin1 _ = True
-- | Is the byte an upper case ASCII letter (@A-Z@)
isAsciiUpper :: Word8 -> Bool
isAsciiUpper w = _A <= w && w <= _Z
-- | Is the byte a lower case ASCII letter (@a-z@)
isAsciiLower :: Word8 -> Bool
isAsciiLower w = _a <= w && w <= _z
----------------------------------------------------------------
-- | Changes the byte to the upper case variant, if possible.
--
-- Micro sign/mu ('_mu') and small letter Y with diaeresis ('_ydieresis') remain the same.
toUpper :: Word8 -> Word8
toUpper w
| w == _germandbls = w
| w == _ydieresis = w
| isLower' w = w - _space
| otherwise = w
-- | Changes the byte to the lower case variant, if possible.
toLower :: Word8 -> Word8
toLower w
| isUpper w = w + _space
| otherwise = w
-- | Synonym for 'toUpper'
toTitle :: Word8 -> Word8
toTitle = toUpper
----------------------------------------------------------------
-- | Null character
--
-- > BIN: 0b00000000
-- > OCT: 0o000
-- > DEC: 0
-- > HEX: 0x00
-- > HTML: �
-- > Char: '\NUL'
_nul :: Word8
_nul = 0x00
-- | Horizontal Tab
--
-- > BIN: 0b00001001
-- > OCT: 0o011
-- > DEC: 9
-- > HEX: 0x09
-- > HTML: 	
-- > Char: '\HT' or '\t'
_tab :: Word8
_tab = 0x09
-- | Line Feed
--
-- > BIN: 0b00001010
-- > OCT: 0o012
-- > DEC: 10
-- > HEX: 0x0A
-- > HTML:
-- > Char: '\LF' or '\n'
_lf :: Word8
_lf = 0x0a
-- | Vertical Tabulation
--
-- > BIN: 0b00001011
-- > OCT: 0o013
-- > DEC: 11
-- > HEX: 0x0B
-- > HTML: 
-- > Char: '\VT'
_vt :: Word8
_vt = 0x0b
-- | Form Feed (New Page)
--
-- > BIN: 0b00001100
-- > OCT: 0o014
-- > DEC: 12
-- > HEX: 0x0C
-- > HTML: 
-- > Char: '\FF'
_np :: Word8
_np = 0x0c
-- | Carriage Return
--
-- > BIN: 0b00001101
-- > OCT: 0o015
-- > DEC: 13
-- > HEX: 0x0D
-- > HTML:
-- > Char: '\CR' or '\r'
_cr :: Word8
_cr = 0x0d
-- | Space
--
-- > BIN: 0b00100000
-- > OCT: 0o040
-- > DEC: 32
-- > HEX: 0x20
-- > HTML:  
-- > Char: '\SP' or ' '
_space :: Word8
_space = 0x20
-- | Exclamation mark
--
-- > BIN: 0b00100001
-- > OCT: 0o041
-- > DEC: 33
-- > HEX: 0x21
-- > HTML: ! or !
-- > Char: '!'
_exclam :: Word8
_exclam = 0x21
-- | Double quotes (or speech marks)
--
-- > BIN: 0b00100010
-- > OCT: 0o042
-- > DEC: 34
-- > HEX: 0x22
-- > HTML: " or "
-- > Char: '"'
_quotedbl :: Word8
_quotedbl = 0x22
-- | Number sign (or hash sign, or pound sign)
--
-- > BIN: 0b00100011
-- > OCT: 0o043
-- > DEC: 35
-- > HEX: 0x23
-- > HTML: # or #
-- > Char: '#'
_numbersign :: Word8
_numbersign = 0x23
-- | Dollar
--
-- > BIN: 0b00100100
-- > OCT: 0o044
-- > DEC: 36
-- > HEX: 0x24
-- > HTML: $ or $
-- > Char: '$'
_dollar :: Word8
_dollar = 0x24
-- | Per cent sign
--
-- > BIN: 0b00100101
-- > OCT: 0o045
-- > DEC: 37
-- > HEX: 0x25
-- > HTML: % or %
-- > Char: '%'
_percent :: Word8
_percent = 0x25
-- | Ampersand
--
-- > BIN: 0b00100110
-- > OCT: 0o046
-- > DEC: 38
-- > HEX: 0x26
-- > HTML: & or &
-- > Char: '&'
_ampersand :: Word8
_ampersand = 0x26
-- | Single quote
--
-- > BIN: 0b00100111
-- > OCT: 0o047
-- > DEC: 39
-- > HEX: 0x27
-- > HTML: ' or '
-- > Char: '\''
_quotesingle :: Word8
_quotesingle = 0x27
-- | Open parenthesis (or open bracket)
--
-- > BIN: 0b00101000
-- > OCT: 0o050
-- > DEC: 40
-- > HEX: 0x28
-- > HTML: ( or &lparen;
-- > Char: '('
_parenleft :: Word8
_parenleft = 0x28
-- | Close parenthesis (or close bracket)
--
-- > BIN: 0b00101001
-- > OCT: 0o051
-- > DEC: 41
-- > HEX: 0x29
-- > HTML: ) or &rparen;
-- > Char: ')'
_parenright :: Word8
_parenright = 0x29
-- | Asterisk
--
-- > BIN: 0b00101010
-- > OCT: 0o052
-- > DEC: 42
-- > HEX: 0x2A
-- > HTML: * or *
-- > Char: '*'
_asterisk :: Word8
_asterisk = 0x2a
-- | Plus
--
-- > BIN: 0b00101011
-- > OCT: 0o053
-- > DEC: 43
-- > HEX: 0x2B
-- > HTML: + or +
-- > Char: '+'
_plus :: Word8
_plus = 0x2b
-- | Comma
--
-- > BIN: 0b00101100
-- > OCT: 0o054
-- > DEC: 44
-- > HEX: 0x2C
-- > HTML: , or ,
-- > Char: ','
_comma :: Word8
_comma = 0x2c
-- | Hyphen (or minus, or dash)
--
-- > BIN: 0b00101101
-- > OCT: 0o055
-- > DEC: 45
-- > HEX: 0x2D
-- > HTML: -
-- > Char: '-'
_hyphen :: Word8
_hyphen = 0x2d
-- | Period (or dot, or full stop)
--
-- > BIN: 0b00101110
-- > OCT: 0o056
-- > DEC: 46
-- > HEX: 0x2E
-- > HTML: . or .
-- > Char: '.'
_period :: Word8
_period = 0x2e
-- | Slash (or divide)
--
-- > BIN: 0b00101111
-- > OCT: 0o057
-- > DEC: 47
-- > HEX: 0x2F
-- > HTML: / or /
-- > Char: '/'
_slash :: Word8
_slash = 0x2f
-- | Zero
--
-- > BIN: 0b00110000
-- > OCT: 0o060
-- > DEC: 48
-- > HEX: 0x30
-- > HTML: 0
-- > Char: '0'
_0 :: Word8
_0 = 0x30
-- | One
--
-- > BIN: 0b00110001
-- > OCT: 0o061
-- > DEC: 49
-- > HEX: 0x31
-- > HTML: 1
-- > Char: '1'
_1 :: Word8
_1 = 0x31
-- | Two
--
-- > BIN: 0b00110010
-- > OCT: 0o062
-- > DEC: 50
-- > HEX: 0x32
-- > HTML: 2
-- > Char: '2'
_2 :: Word8
_2 = 0x32
-- | Three
--
-- > BIN: 0b00110011
-- > OCT: 0o063
-- > DEC: 51
-- > HEX: 0x33
-- > HTML: 3
-- > Char: '3'
_3 :: Word8
_3 = 0x33
-- | Four
--
-- > BIN: 0b00110100
-- > OCT: 0o064
-- > DEC: 52
-- > HEX: 0x34
-- > HTML: 4
-- > Char: '4'
_4 :: Word8
_4 = 0x34
-- | Five
--
-- > BIN: 0b00110101
-- > OCT: 0o065
-- > DEC: 53
-- > HEX: 0x35
-- > HTML: 5
-- > Char: '5'
_5 :: Word8
_5 = 0x35
-- | Six
--
-- > BIN: 0b00110110
-- > OCT: 0o066
-- > DEC: 54
-- > HEX: 0x36
-- > HTML: 6
-- > Char: '6'
_6 :: Word8
_6 = 0x36
-- | Seven
--
-- > BIN: 0b00110111
-- > OCT: 0o067
-- > DEC: 55
-- > HEX: 0x37
-- > HTML: 7
-- > Char: '7'
_7 :: Word8
_7 = 0x37
-- | Eight
--
-- > BIN: 0b00111000
-- > OCT: 0o070
-- > DEC: 56
-- > HEX: 0x38
-- > HTML: 8
-- > Char: '8'
_8 :: Word8
_8 = 0x38
-- | Nine
--
-- > BIN: 0b00111001
-- > OCT: 0o071
-- > DEC: 57
-- > HEX: 0x39
-- > HTML: 9
-- > Char: '9'
_9 :: Word8
_9 = 0x39
-- | Colon
--
-- > BIN: 0b00111010
-- > OCT: 0o072
-- > DEC: 58
-- > HEX: 0x3A
-- > HTML: : or :
-- > Char: ':'
_colon :: Word8
_colon = 0x3a
-- | Semicolon
--
-- > BIN: 0b00111011
-- > OCT: 0o073
-- > DEC: 59
-- > HEX: 0x3B
-- > HTML: ; or ;
-- > Char: ';'
_semicolon :: Word8
_semicolon = 0x3b
-- | Less than (or open angled bracket)
--
-- > BIN: 0b00111100
-- > OCT: 0o074
-- > DEC: 60
-- > HEX: 0x3C
-- > HTML: < or <
-- > Char: '<'
_less :: Word8
_less = 0x3c
-- | Equals
--
-- > BIN: 0b00111101
-- > OCT: 0o075
-- > DEC: 61
-- > HEX: 0x3D
-- > HTML: = or =
-- > Char: '='
_equal :: Word8
_equal = 0x3d
-- | Greater than (or close angled bracket)
--
-- > BIN: 0b00111110
-- > OCT: 0o076
-- > DEC: 62
-- > HEX: 0x3E
-- > HTML: > or >
-- > Char: '>'
_greater :: Word8
_greater = 0x3e
-- | Question mark
--
-- > BIN: 0b00111111
-- > OCT: 0o077
-- > DEC: 63
-- > HEX: 0x3F
-- > HTML: ? or ?
-- > Char: '?'
_question :: Word8
_question = 0x3f
-- | At sign
--
-- > BIN: 0b01000000
-- > OCT: 0o100
-- > DEC: 64
-- > HEX: 0x40
-- > HTML: @ or @
-- > Char: '@'
_at :: Word8
_at = 0x40
-- | Uppercase A
--
-- > BIN: 0b01000001
-- > OCT: 0o101
-- > DEC: 65
-- > HEX: 0x41
-- > HTML: A
-- > Char: 'A'
_A :: Word8
_A = 0x41
-- | Uppercase B
--
-- > BIN: 0b01000010
-- > OCT: 0o102
-- > DEC: 66
-- > HEX: 0x42
-- > HTML: B
-- > Char: 'B'
_B :: Word8
_B = 0x42
-- | Uppercase C
--
-- > BIN: 0b01000011
-- > OCT: 0o103
-- > DEC: 67
-- > HEX: 0x43
-- > HTML: C
-- > Char: 'C'
_C :: Word8
_C = 0x43
-- | Uppercase D
--
-- > BIN: 0b01000100
-- > OCT: 0o104
-- > DEC: 68
-- > HEX: 0x44
-- > HTML: D
-- > Char: 'D'
_D :: Word8
_D = 0x44
-- | Uppercase E
--
-- > BIN: 0b01000101
-- > OCT: 0o105
-- > DEC: 69
-- > HEX: 0x45
-- > HTML: E
-- > Char: 'E'
_E :: Word8
_E = 0x45
-- | Uppercase F
--
-- > BIN: 0b01000110
-- > OCT: 0o106
-- > DEC: 70
-- > HEX: 0x46
-- > HTML: F
-- > Char: 'F'
_F :: Word8
_F = 0x46
-- | Uppercase G
--
-- > BIN: 0b01000111
-- > OCT: 0o107
-- > DEC: 71
-- > HEX: 0x47
-- > HTML: G
-- > Char: 'G'
_G :: Word8
_G = 0x47
-- | Uppercase H
--
-- > BIN: 0b01001000
-- > OCT: 0o110
-- > DEC: 72
-- > HEX: 0x48
-- > HTML: H
-- > Char: 'H'
_H :: Word8
_H = 0x48
-- | Uppercase I
--
-- > BIN: 0b01001001
-- > OCT: 0o111
-- > DEC: 73
-- > HEX: 0x49
-- > HTML: I
-- > Char: 'I'
_I :: Word8
_I = 0x49
-- | Uppercase J
--
-- > BIN: 0b01001010
-- > OCT: 0o112
-- > DEC: 74
-- > HEX: 0x4A
-- > HTML: J
-- > Char: 'J'
_J :: Word8
_J = 0x4a
-- | Uppercase K
--
-- > BIN: 0b01001011
-- > OCT: 0o113
-- > DEC: 75
-- > HEX: 0x4B
-- > HTML: K
-- > Char: 'K'
_K :: Word8
_K = 0x4b
-- | Uppercase L
--
-- > BIN: 0b01001100
-- > OCT: 0o114
-- > DEC: 76
-- > HEX: 0x4C
-- > HTML: L
-- > Char: 'L'
_L :: Word8
_L = 0x4c
-- | Uppercase M
--
-- > BIN: 0b01001101
-- > OCT: 0o115
-- > DEC: 77
-- > HEX: 0x4D
-- > HTML: M
-- > Char: 'M'
_M :: Word8
_M = 0x4d
-- | Uppercase N
--
-- > BIN: 0b01001110
-- > OCT: 0o116
-- > DEC: 78
-- > HEX: 0x4E
-- > HTML: N
-- > Char: 'N'
_N :: Word8
_N = 0x4e
-- | Uppercase O
--
-- > BIN: 0b01001111
-- > OCT: 0o117
-- > DEC: 79
-- > HEX: 0x4F
-- > HTML: O
-- > Char: 'O'
_O :: Word8
_O = 0x4f
-- | Uppercase P
--
-- > BIN: 0b01010000
-- > OCT: 0o120
-- > DEC: 80
-- > HEX: 0x50
-- > HTML: P
-- > Char: 'P'
_P :: Word8
_P = 0x50
-- | Uppercase Q
--
-- > BIN: 0b01010001
-- > OCT: 0o121
-- > DEC: 81
-- > HEX: 0x51
-- > HTML: Q
-- > Char: 'Q'
_Q :: Word8
_Q = 0x51
-- | Uppercase R
--
-- > BIN: 0b01010010
-- > OCT: 0o122
-- > DEC: 82
-- > HEX: 0x52
-- > HTML: R
-- > Char: 'R'
_R :: Word8
_R = 0x52
-- | Uppercase S
--
-- > BIN: 0b01010011
-- > OCT: 0o123
-- > DEC: 83
-- > HEX: 0x53
-- > HTML: S
-- > Char: 'S'
_S :: Word8
_S = 0x53
-- | Uppercase T
--
-- > BIN: 0b01010100
-- > OCT: 0o124
-- > DEC: 84
-- > HEX: 0x54
-- > HTML: T
-- > Char: 'T'
_T :: Word8
_T = 0x54
-- | Uppercase U
--
-- > BIN: 0b01010101
-- > OCT: 0o125
-- > DEC: 85
-- > HEX: 0x55
-- > HTML: U
-- > Char: 'U'
_U :: Word8
_U = 0x55
-- | Uppercase V
--
-- > BIN: 0b01010110
-- > OCT: 0o126
-- > DEC: 86
-- > HEX: 0x56
-- > HTML: V
-- > Char: 'V'
_V :: Word8
_V = 0x56
-- | Uppercase W
--
-- > BIN: 0b01010111
-- > OCT: 0o127
-- > DEC: 87
-- > HEX: 0x57
-- > HTML: W
-- > Char: 'W'
_W :: Word8
_W = 0x57
-- | Uppercase X
--
-- > BIN: 0b01011000
-- > OCT: 0o130
-- > DEC: 88
-- > HEX: 0x58
-- > HTML: X
-- > Char: 'X'
_X :: Word8
_X = 0x58
-- | Uppercase Y
--
-- > BIN: 0b01011001
-- > OCT: 0o131
-- > DEC: 89
-- > HEX: 0x59
-- > HTML: Y
-- > Char: 'Y'
_Y :: Word8
_Y = 0x59
-- | Uppercase Z
--
-- > BIN: 0b01011010
-- > OCT: 0o132
-- > DEC: 90
-- > HEX: 0x5A
-- > HTML: Z
-- > Char: 'Z'
_Z :: Word8
_Z = 0x5a
-- | Opening bracket
--
-- > BIN: 0b01011011
-- > OCT: 0o133
-- > DEC: 91
-- > HEX: 0x5B
-- > HTML: [ or [
-- > Char: '['
_bracketleft :: Word8
_bracketleft = 0x5b
-- | Backslash
--
-- > BIN: 0b01011100
-- > OCT: 0o134
-- > DEC: 92
-- > HEX: 0x5C
-- > HTML: \ or \
-- > Char: '\'
_backslash :: Word8
_backslash = 0x5c
-- | Closing bracket
--
-- > BIN: 0b01011101
-- > OCT: 0o135
-- > DEC: 93
-- > HEX: 0x5D
-- > HTML: ] or ]
-- > Char: ']'
_bracketright :: Word8
_bracketright = 0x5d
-- | Caret - circumflex
--
-- > BIN: 0b01011110
-- > OCT: 0o136
-- > DEC: 94
-- > HEX: 0x5E
-- > HTML: ^ or ^
-- > Char: '^'
_circum :: Word8
_circum = 0x5e
-- | Underscore
--
-- > BIN: 0b01011111
-- > OCT: 0o137
-- > DEC: 95
-- > HEX: 0x5F
-- > HTML: _ or _
-- > Char: '_'
_underscore :: Word8
_underscore = 0x5f
-- | Grave accent
--
-- > BIN: 0b01100000
-- > OCT: 0o140
-- > DEC: 96
-- > HEX: 0x60
-- > HTML: ` or `
-- > Char: '`'
_grave :: Word8
_grave = 0x60
-- | Lowercase a
--
-- > BIN: 0b01100001
-- > OCT: 0o141
-- > DEC: 97
-- > HEX: 0x61
-- > HTML: a
-- > Char: 'a'
_a :: Word8
_a = 0x61
-- | Lowercase b
--
-- > BIN: 0b01100010
-- > OCT: 0o142
-- > DEC: 98
-- > HEX: 0x62
-- > HTML: b
-- > Char: 'b'
_b :: Word8
_b = 0x62
-- | Lowercase c
--
-- > BIN: 0b01100011
-- > OCT: 0o143
-- > DEC: 99
-- > HEX: 0x63
-- > HTML: c
-- > Char: 'c'
_c :: Word8
_c = 0x63
-- | Lowercase d
--
-- > BIN: 0b01100100
-- > OCT: 0o144
-- > DEC: 100
-- > HEX: 0x64
-- > HTML: d
-- > Char: 'd'
_d :: Word8
_d = 0x64
-- | Lowercase e
--
-- > BIN: 0b01100101
-- > OCT: 0o145
-- > DEC: 101
-- > HEX: 0x65
-- > HTML: e
-- > Char: 'e'
_e :: Word8
_e = 0x65
-- | Lowercase f
--
-- > BIN: 0b01100110
-- > OCT: 0o146
-- > DEC: 102
-- > HEX: 0x66
-- > HTML: f
-- > Char: 'f'
_f :: Word8
_f = 0x66
-- | Lowercase g
--
-- > BIN: 0b01100111
-- > OCT: 0o147
-- > DEC: 103
-- > HEX: 0x67
-- > HTML: g
-- > Char: 'g'
_g :: Word8
_g = 0x67
-- | Lowercase h
--
-- > BIN: 0b01101000
-- > OCT: 0o150
-- > DEC: 104
-- > HEX: 0x68
-- > HTML: h
-- > Char: 'h'
_h :: Word8
_h = 0x68
-- | Lowercase i
--
-- > BIN: 0b01101001
-- > OCT: 0o151
-- > DEC: 105
-- > HEX: 0x69
-- > HTML: i
-- > Char: 'i'
_i :: Word8
_i = 0x69
-- | Lowercase j
--
-- > BIN: 0b01101010
-- > OCT: 0o152
-- > DEC: 106
-- > HEX: 0x6A
-- > HTML: j
-- > Char: 'j'
_j :: Word8
_j = 0x6a
-- | Lowercase k
--
-- > BIN: 0b01101011
-- > OCT: 0o153
-- > DEC: 107
-- > HEX: 0x6B
-- > HTML: k
-- > Char: 'k'
_k :: Word8
_k = 0x6b
-- | Lowercase l
--
-- > BIN: 0b01101100
-- > OCT: 0o154
-- > DEC: 108
-- > HEX: 0x6C
-- > HTML: l
-- > Char: 'l'
_l :: Word8
_l = 0x6c
-- | Lowercase m
--
-- > BIN: 0b01101101
-- > OCT: 0o155
-- > DEC: 109
-- > HEX: 0x6D
-- > HTML: m
-- > Char: 'm'
_m :: Word8
_m = 0x6d
-- | Lowercase n
--
-- > BIN: 0b01101110
-- > OCT: 0o156
-- > DEC: 110
-- > HEX: 0x6E
-- > HTML: n
-- > Char: 'n'
_n :: Word8
_n = 0x6e
-- | Lowercase o
--
-- > BIN: 0b01101111
-- > OCT: 0o157
-- > DEC: 111
-- > HEX: 0x6F
-- > HTML: o
-- > Char: 'o'
_o :: Word8
_o = 0x6f
-- | Lowercase p
--
-- > BIN: 0b01110000
-- > OCT: 0o160
-- > DEC: 112
-- > HEX: 0x70
-- > HTML: p
-- > Char: 'p'
_p :: Word8
_p = 0x70
-- | Lowercase q
--
-- > BIN: 0b01110001
-- > OCT: 0o161
-- > DEC: 113
-- > HEX: 0x71
-- > HTML: q
-- > Char: 'q'
_q :: Word8
_q = 0x71
-- | Lowercase r
--
-- > BIN: 0b01110010
-- > OCT: 0o162
-- > DEC: 114
-- > HEX: 0x72
-- > HTML: r
-- > Char: 'r'
_r :: Word8
_r = 0x72
-- | Lowercase s
--
-- > BIN: 0b01110011
-- > OCT: 0o163
-- > DEC: 115
-- > HEX: 0x73
-- > HTML: s
-- > Char: 's'
_s :: Word8
_s = 0x73
-- | Lowercase t
--
-- > BIN: 0b01110100
-- > OCT: 0o164
-- > DEC: 116
-- > HEX: 0x74
-- > HTML: t
-- > Char: 't'
_t :: Word8
_t = 0x74
-- | Lowercase u
--
-- > BIN: 0b01110101
-- > OCT: 0o165
-- > DEC: 117
-- > HEX: 0x75
-- > HTML: u
-- > Char: 'u'
_u :: Word8
_u = 0x75
-- | Lowercase v
--
-- > BIN: 0b01110110
-- > OCT: 0o166
-- > DEC: 118
-- > HEX: 0x76
-- > HTML: v
-- > Char: 'v'
_v :: Word8
_v = 0x76
-- | Lowercase w
--
-- > BIN: 0b01110111
-- > OCT: 0o167
-- > DEC: 119
-- > HEX: 0x77
-- > HTML: w
-- > Char: 'w'
_w :: Word8
_w = 0x77
-- | Lowercase x
--
-- > BIN: 0b01111000
-- > OCT: 0o170
-- > DEC: 120
-- > HEX: 0x78
-- > HTML: x
-- > Char: 'x'
_x :: Word8
_x = 0x78
-- | Lowercase y
--
-- > BIN: 0b01111001
-- > OCT: 0o171
-- > DEC: 121
-- > HEX: 0x79
-- > HTML: y
-- > Char: 'y'
_y :: Word8
_y = 0x79
-- | Lowercase z
--
-- > BIN: 0b01111010
-- > OCT: 0o172
-- > DEC: 122
-- > HEX: 0x7A
-- > HTML: z
-- > Char: 'z'
_z :: Word8
_z = 0x7a
-- | Opening brace
--
-- > BIN: 0b01111011
-- > OCT: 0o173
-- > DEC: 123
-- > HEX: 0x7B
-- > HTML: { or {
-- > Char: '{'
_braceleft :: Word8
_braceleft = 0x7b
-- | Vertical bar
--
-- > BIN: 0b01111100
-- > OCT: 0o174
-- > DEC: 124
-- > HEX: 0x7C
-- > HTML: | or |
-- > Char: '|'
_bar :: Word8
_bar = 0x7c
-- | Closing brace
--
-- > BIN: 0b01111101
-- > OCT: 0o175
-- > DEC: 125
-- > HEX: 0x7D
-- > HTML: } or }
-- > Char: '}'
_braceright :: Word8
_braceright = 0x7d
-- | Equivalency sign - tilde
--
-- > BIN: 0b01111110
-- > OCT: 0o176
-- > DEC: 126
-- > HEX: 0x7E
-- > HTML: ~ or ˜
-- > Char: '~'
_tilde :: Word8
_tilde = 0x7e
-- | Delete
--
-- > BIN: 0b01111111
-- > OCT: 0o177
-- > DEC: 127
-- > HEX: 0x7F
-- > HTML: 
-- > Char: '\DEL'
_del :: Word8
_del = 0x7f
-- | Non-breaking space
--
-- > BIN: 0b10100000
-- > OCT: 0o240
-- > DEC: 160
-- > HEX: 0xA0
-- > HTML:   or
_nbsp :: Word8
_nbsp = 0xa0
-- | Feminine ordinal indicator
--
-- > BIN: 0b10101010
-- > OCT: 0o252
-- > DEC: 170
-- > HEX: 0xAA
-- > HTML: ª or ª
-- > Char: 'ª'
_ordfeminine :: Word8
_ordfeminine = 0xaa
-- | Soft hyphen
--
-- > BIN: 0b10101101
-- > OCT: 0o255
-- > DEC: 173
-- > HEX: 0xAD
-- > HTML: ­ or ­
_softhyphen :: Word8
_softhyphen = 0xad
-- | Micro sign (or greek letter mu)
--
-- > BIN: 0b10110101
-- > OCT: 0o265
-- > DEC: 181
-- > HEX: 0xB5
-- > HTML: µ or µ
-- > Char: 'µ'
_mu :: Word8
_mu = 0xb5
-- | Masculine ordinal indicator
--
-- > BIN: 0b10111010
-- > OCT: 0o272
-- > DEC: 186
-- > HEX: 0xBA
-- > HTML: º or º
-- > Char: 'º'
_ordmasculine :: Word8
_ordmasculine = 0xba
-- | Superscript two - squared
--
-- > BIN: 0b10110010
-- > OCT: 0o262
-- > DEC: 178
-- > HEX: 0xB2
-- > HTML: ² or ²
-- > Char: '²'
_s2 :: Word8
_s2 = 0xb2
-- | Superscript three - cubed
--
-- > BIN: 0b10110011
-- > OCT: 0o263
-- > DEC: 179
-- > HEX: 0xB3
-- > HTML: ³ or ³
-- > Char: '³'
_s3 :: Word8
_s3 = 0xb3
-- | Superscript one
--
-- > BIN: 0b10111001
-- > OCT: 0o271
-- > DEC: 185
-- > HEX: 0xB9
-- > HTML: ¹ or ¹
-- > Char: '¹'
_s1 :: Word8
_s1 = 0xb9
-- | Fraction one quarter
--
-- > BIN: 0b10111100
-- > OCT: 0o274
-- > DEC: 188
-- > HEX: 0xBC
-- > HTML: ¼ or ¼
-- > Char: '¼'
_1'4 :: Word8
_1'4 = 0xbc
-- | Fraction one half
--
-- > BIN: 0b10111101
-- > OCT: 0o275
-- > DEC: 189
-- > HEX: 0xBD
-- > HTML: ½ or ½
-- > Char: '½'
_1'2 :: Word8
_1'2 = 0xbd
-- | Fraction three quarters
--
-- > BIN: 0b10111110
-- > OCT: 0o276
-- > DEC: 190
-- > HEX: 0xBE
-- > HTML: ¾ or ¾
-- > Char: '¾'
_3'4 :: Word8
_3'4 = 0xbe
-- | Latin capital letter A with grave
--
-- > BIN: 0b11000000
-- > OCT: 0o300
-- > DEC: 192
-- > HEX: 0xC0
-- > HTML: À or À
-- > Char: 'À'
_Agrave :: Word8
_Agrave = 0xc0
-- | Latin capital letter O with diaeresis
--
-- > BIN: 0b11010110
-- > OCT: 0o326
-- > DEC: 214
-- > HEX: 0xD6
-- > HTML: Ö or Ö
-- > Char: 'Ö'
_Odieresis :: Word8
_Odieresis = 0xd6
-- | Latin capital letter O with slash
--
-- > BIN: 0b11011000
-- > OCT: 0o330
-- > DEC: 216
-- > HEX: 0xD8
-- > HTML: Ø or Ø
-- > Char: 'Ø'
_Oslash :: Word8
_Oslash = 0xd8
-- | Latin capital letter THORN
--
-- > BIN: 0b11011110
-- > OCT: 0o336
-- > DEC: 222
-- > HEX: 0xDE
-- > HTML: Þ or Þ
-- > Char: 'Þ'
_Thorn :: Word8
_Thorn = 0xde
-- | Latin small letter sharp s - ess-zed
--
-- > BIN: 0b11011111
-- > OCT: 0o337
-- > DEC: 223
-- > HEX: 0xDF
-- > HTML: ß or ß
-- > Char: 'ß'
_germandbls :: Word8
_germandbls = 0xdf
-- | Latin small letter a with grave
--
-- > BIN: 0b11100000
-- > OCT: 0o340
-- > DEC: 224
-- > HEX: 0xE0
-- > HTML: à or à
-- > Char: 'à'
_agrave :: Word8
_agrave = 0xe0
-- | Latin small letter o with diaeresis
--
-- > BIN: 0b11110110
-- > OCT: 0o366
-- > DEC: 246
-- > HEX: 0xF6
-- > HTML: ö or ö
-- > Char: 'ö'
_odieresis :: Word8
_odieresis = 0xf6
-- | Latin small letter o with slash
--
-- > BIN: 0b11111000
-- > OCT: 0o370
-- > DEC: 248
-- > HEX: 0xF8
-- > HTML: ø or ø
-- > Char: 'ø'
_oslash :: Word8
_oslash = 0xf8
-- | Latin small letter thorn
--
-- > BIN: 0b11111110
-- > OCT: 0o376
-- > DEC: 254
-- > HEX: 0xFE
-- > HTML: þ or þ
-- > Char: 'þ'
_thorn :: Word8
_thorn = 0xfe
-- | Latin small letter y with diaeresis
--
-- > BIN: 0b11111111
-- > OCT: 0o377
-- > DEC: 255
-- > HEX: 0xFF
-- > HTML: ÿ or ÿ
-- > Char: 'ÿ'
_ydieresis :: Word8
_ydieresis = 0xff