{-# LANGUAGE PatternSynonyms #-} module Argo.Pattern where import qualified Argo.Json.Array as Array import qualified Argo.Json.Boolean as Boolean import qualified Argo.Json.Member as Member import qualified Argo.Json.Name as Name import qualified Argo.Json.Null as Null import qualified Argo.Json.Number as Number import qualified Argo.Json.Object as Object import qualified Argo.Json.String as String import qualified Argo.Json.Value as Value import qualified Argo.Vendor.Text as Text pattern Null :: Value.Value pattern $bNull :: Value $mNull :: forall r. Value -> (Void# -> r) -> (Void# -> r) -> r Null = Value.Null (Null.Null ()) pattern Boolean :: Bool -> Value.Value pattern $bBoolean :: Bool -> Value $mBoolean :: forall r. Value -> (Bool -> r) -> (Void# -> r) -> r Boolean x = Value.Boolean (Boolean.Boolean x) pattern Number :: Integer -> Integer -> Value.Value pattern $bNumber :: Integer -> Integer -> Value $mNumber :: forall r. Value -> (Integer -> Integer -> r) -> (Void# -> r) -> r Number x y <- Value.Number (Number.Number x y) where Number Integer x Integer y = Number -> Value Value.Number (Number -> Value) -> Number -> Value forall a b. (a -> b) -> a -> b $ Integer -> Integer -> Number Number.number Integer x Integer y pattern String :: Text.Text -> Value.Value pattern $bString :: Text -> Value $mString :: forall r. Value -> (Text -> r) -> (Void# -> r) -> r String x = Value.String (String.String x) type Array = [Value.Value] pattern Array :: Array -> Value.Value pattern $bArray :: Array -> Value $mArray :: forall r. Value -> (Array -> r) -> (Void# -> r) -> r Array x = Value.Array (Array.Array x) type Object = [Member] pattern Object :: Object -> Value.Value pattern $bObject :: Object -> Value $mObject :: forall r. Value -> (Object -> r) -> (Void# -> r) -> r Object x = Value.Object (Object.Object x) {-# COMPLETE Null, Boolean, Number, String, Array, Object #-} type Member = Member.MemberOf Value.Value pattern Member :: Name.Name -> Value.Value -> Member pattern $bMember :: Name -> Value -> Member $mMember :: forall r. Member -> (Name -> Value -> r) -> (Void# -> r) -> r Member k v = Member.Member k v {-# COMPLETE Member #-} pattern Name :: Text.Text -> Name.Name pattern $bName :: Text -> Name $mName :: forall r. Name -> (Text -> r) -> (Void# -> r) -> r Name x = Name.Name (String.String x) {-# COMPLETE Name #-}