Adds JSON instances for HexString

This commit is contained in:
Leon Mergen 2015-04-21 13:28:49 +07:00
parent adc3eb566d
commit 3087439daf
2 changed files with 12 additions and 2 deletions

View file

@ -31,6 +31,7 @@ library
, text
, bytestring
, base16-bytestring
, aeson
test-suite test-suite
type: exitcode-stdio-1.0

View file

@ -6,10 +6,13 @@ module Data.HexString ( HexString
, toBytes
, toText ) where
import Control.Applicative (pure)
import Data.Aeson
import Data.Word (Word8)
import qualified Data.ByteString.Base16 as BS16 (decode, encode)
import qualified Data.ByteString as BS
import qualified Data.ByteString.Base16 as BS16 (decode, encode)
import qualified Data.ByteString.Lazy as BSL
import qualified Data.Text as T
@ -23,6 +26,12 @@ data HexString =
HexString BS.ByteString
deriving ( Show, Eq, Ord )
instance FromJSON HexString where
parseJSON = withText "HexString" $ pure . hexString . TE.encodeUtf8
instance ToJSON HexString where
toJSON = String . toText
-- | Smart constructor which validates that all the text are actually
-- hexadecimal characters.
hexString :: BS.ByteString -> HexString