argo-0.2021.11.13: source/library/Argo/Json/Name.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveLift #-}
module Argo.Json.Name where
import qualified Argo.Json.String as String
import qualified Argo.Type.Decoder as Decoder
import qualified Argo.Type.Encoder as Encoder
import qualified Argo.Vendor.DeepSeq as DeepSeq
import qualified Argo.Vendor.TemplateHaskell as TH
import qualified Data.String
import qualified GHC.Generics as Generics
newtype Name
= Name String.String
deriving (Eq, Generics.Generic, TH.Lift, DeepSeq.NFData, Ord, Show)
instance Data.String.IsString Name where
fromString = fromString . Data.String.fromString
fromString :: String.String -> Name
fromString = Name
toString :: Name -> String.String
toString (Name x) = x
encode :: Name -> Encoder.Encoder ()
encode = String.encode . toString
decode :: Decoder.Decoder Name
decode = fromString <$> String.decode