argo-0.2021.10.17: source/library/Argo/Type/Null.hs
{-# LANGUAGE TemplateHaskellQuotes #-}
module Argo.Type.Null where
import qualified Argo.Decoder as Decoder
import qualified Argo.Literal as Literal
import qualified Control.DeepSeq as DeepSeq
import qualified Data.ByteString.Builder as Builder
import qualified Language.Haskell.TH.Syntax as TH
newtype Null
= Null ()
deriving (Eq, Show)
instance TH.Lift Null where
liftTyped (Null x) = [|| Null x ||]
instance DeepSeq.NFData Null where
rnf (Null x) = DeepSeq.rnf x
encode :: Null -> Builder.Builder
encode = const $ Builder.byteString Literal.null
decode :: Decoder.Decoder Null
decode = Null () <$ Decoder.byteString Literal.null <* Decoder.spaces