Skip to content

Commit 5ac929b

Browse files
committed
Refactor decodeHex in UnescapePure
1 parent 6bc3b7d commit 5ac929b

File tree

1 file changed

+5
-23
lines changed

1 file changed

+5
-23
lines changed

pure/Data/Aeson/Parser/UnescapePure.hs

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -120,29 +120,11 @@ decode UtfTail1 point word = case word of
120120
_ -> throwDecodeError
121121

122122
decodeHex :: Word8 -> Word16
123-
decodeHex 48 = 0 -- '0'
124-
decodeHex 49 = 1 -- '1'
125-
decodeHex 50 = 2 -- '2'
126-
decodeHex 51 = 3 -- '3'
127-
decodeHex 52 = 4 -- '4'
128-
decodeHex 53 = 5 -- '5'
129-
decodeHex 54 = 6 -- '6'
130-
decodeHex 55 = 7 -- '7'
131-
decodeHex 56 = 8 -- '8'
132-
decodeHex 57 = 9 -- '9'
133-
decodeHex 65 = 10 -- 'A'
134-
decodeHex 97 = 10 -- 'a'
135-
decodeHex 66 = 11 -- 'B'
136-
decodeHex 98 = 11 -- 'b'
137-
decodeHex 67 = 12 -- 'C'
138-
decodeHex 99 = 12 -- 'c'
139-
decodeHex 68 = 13 -- 'D'
140-
decodeHex 100 = 13 -- 'd'
141-
decodeHex 69 = 14 -- 'E'
142-
decodeHex 101 = 14 -- 'e'
143-
decodeHex 70 = 15 -- 'F'
144-
decodeHex 102 = 15 -- 'f'
145-
decodeHex _ = throwDecodeError
123+
decodeHex x
124+
| 48 <= x && x <= 57 = fromIntegral x - 48 -- 0-9
125+
| 65 <= x && x <= 70 = fromIntegral x - 55 -- A-F
126+
| 97 <= x && x <= 102 = fromIntegral x - 87 -- a-f
127+
| otherwise = throwDecodeError
146128

147129
unescapeText' :: ByteString -> Text
148130
unescapeText' bs = runText $ \done -> do

0 commit comments

Comments
 (0)