From 8f11927ea74d6adb332c884502ebd9c486837523 Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 24 Nov 2020 20:07:37 +0100 Subject: initial commit --- src/Data/ByteString/Extended.hs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/Data/ByteString/Extended.hs (limited to 'src/Data/ByteString') diff --git a/src/Data/ByteString/Extended.hs b/src/Data/ByteString/Extended.hs new file mode 100644 index 0000000..144c933 --- /dev/null +++ b/src/Data/ByteString/Extended.hs @@ -0,0 +1,34 @@ +{-# LANGUAGE FlexibleInstances #-} +{-# OPTIONS_GHC -fno-warn-orphans #-} + +module Data.ByteString.Extended + ( + ) where + +import Data.Aeson +import Data.ByteString +import qualified Data.CaseInsensitive +import Data.Text.Encoding +import qualified Data.Text.Encoding.Error + + +instance FromJSON ByteString where + parseJSON = + withText "ByteString" $ + pure . Data.Text.Encoding.encodeUtf8 + +instance ToJSON Data.ByteString.ByteString where + toJSON = + String . + Data.Text.Encoding.decodeUtf8With + Data.Text.Encoding.Error.lenientDecode + + +instance ToJSON (Data.CaseInsensitive.CI Data.ByteString.ByteString) where + toJSON = + toJSON . Data.CaseInsensitive.foldedCase + +instance FromJSON (Data.CaseInsensitive.CI Data.ByteString.ByteString) where + parseJSON = + withText "CI ByteString" $ + pure . Data.CaseInsensitive.mk . Data.Text.Encoding.encodeUtf8 -- cgit v1.2.3 [cgit] Unable to lock slot /tmp/cgit/a5200000.lock: No such file or directory (2)