Suppose we want to parse a 24-bit hex color value:
input :: ByteString
input = "af093c blah blah blah"
type Color = (Word8, Word8, Word8)
Attoparsec.Char8 exports a nice hexadecimal parser, but it consumes all available hex-flavored input. I'd like to make it consume exactly two bytes, so I could write my color parser like this:
color :: Parser Color
color = do
r <- hex2
g <- hex2
b <- hex2
return $ Color (r, g, b)
hex2 :: Parser Word8
hex2 = ???
So my question is "how do I write hex2?" I could easily rewrite hexadecimal, but it would be nicer to reuse its hex-handling logic.
Best,
Mike S Craig
(908) 328 8030