{- ORMOLU_DISABLE -}
{- HLINT ignore -}
-- THIS IS A GENERATED FILE, DO NOT EDIT

{-# OPTIONS_GHC -Wno-unused-imports #-}
{-# OPTIONS_GHC -Wno-unused-matches #-}
{-# OPTIONS_GHC -Wno-deprecations #-}
module Language.LSP.Protocol.Internal.Types.VersionedNotebookDocumentIdentifier where

import Control.DeepSeq
import Data.Hashable
import GHC.Generics
import Language.LSP.Protocol.Utils.Misc
import Prettyprinter
import qualified Data.Aeson as Aeson
import qualified Data.Row.Aeson as Aeson
import qualified Data.Row.Hashable as Hashable
import qualified Language.LSP.Protocol.Types.Common
import qualified Language.LSP.Protocol.Types.Uri

{-|
A versioned notebook document identifier.

@since 3.17.0
-}
data VersionedNotebookDocumentIdentifier = VersionedNotebookDocumentIdentifier 
  { {-|
  The version number of this notebook document.
  -}
  VersionedNotebookDocumentIdentifier -> Int32
_version :: Language.LSP.Protocol.Types.Common.Int32
  , {-|
  The notebook document's uri.
  -}
  VersionedNotebookDocumentIdentifier -> Uri
_uri :: Language.LSP.Protocol.Types.Uri.Uri
  }
  deriving stock (Int -> VersionedNotebookDocumentIdentifier -> ShowS
[VersionedNotebookDocumentIdentifier] -> ShowS
VersionedNotebookDocumentIdentifier -> String
(Int -> VersionedNotebookDocumentIdentifier -> ShowS)
-> (VersionedNotebookDocumentIdentifier -> String)
-> ([VersionedNotebookDocumentIdentifier] -> ShowS)
-> Show VersionedNotebookDocumentIdentifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VersionedNotebookDocumentIdentifier -> ShowS
showsPrec :: Int -> VersionedNotebookDocumentIdentifier -> ShowS
$cshow :: VersionedNotebookDocumentIdentifier -> String
show :: VersionedNotebookDocumentIdentifier -> String
$cshowList :: [VersionedNotebookDocumentIdentifier] -> ShowS
showList :: [VersionedNotebookDocumentIdentifier] -> ShowS
Show, VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
(VersionedNotebookDocumentIdentifier
 -> VersionedNotebookDocumentIdentifier -> Bool)
-> (VersionedNotebookDocumentIdentifier
    -> VersionedNotebookDocumentIdentifier -> Bool)
-> Eq VersionedNotebookDocumentIdentifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
== :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
$c/= :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
/= :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
Eq, Eq VersionedNotebookDocumentIdentifier
Eq VersionedNotebookDocumentIdentifier =>
(VersionedNotebookDocumentIdentifier
 -> VersionedNotebookDocumentIdentifier -> Ordering)
-> (VersionedNotebookDocumentIdentifier
    -> VersionedNotebookDocumentIdentifier -> Bool)
-> (VersionedNotebookDocumentIdentifier
    -> VersionedNotebookDocumentIdentifier -> Bool)
-> (VersionedNotebookDocumentIdentifier
    -> VersionedNotebookDocumentIdentifier -> Bool)
-> (VersionedNotebookDocumentIdentifier
    -> VersionedNotebookDocumentIdentifier -> Bool)
-> (VersionedNotebookDocumentIdentifier
    -> VersionedNotebookDocumentIdentifier
    -> VersionedNotebookDocumentIdentifier)
-> (VersionedNotebookDocumentIdentifier
    -> VersionedNotebookDocumentIdentifier
    -> VersionedNotebookDocumentIdentifier)
-> Ord VersionedNotebookDocumentIdentifier
VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Ordering
VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Ordering
compare :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Ordering
$c< :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
< :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
$c<= :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
<= :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
$c> :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
> :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
$c>= :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
>= :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier -> Bool
$cmax :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
max :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
$cmin :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
min :: VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
-> VersionedNotebookDocumentIdentifier
Ord, (forall x.
 VersionedNotebookDocumentIdentifier
 -> Rep VersionedNotebookDocumentIdentifier x)
-> (forall x.
    Rep VersionedNotebookDocumentIdentifier x
    -> VersionedNotebookDocumentIdentifier)
-> Generic VersionedNotebookDocumentIdentifier
forall x.
Rep VersionedNotebookDocumentIdentifier x
-> VersionedNotebookDocumentIdentifier
forall x.
VersionedNotebookDocumentIdentifier
-> Rep VersionedNotebookDocumentIdentifier x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
VersionedNotebookDocumentIdentifier
-> Rep VersionedNotebookDocumentIdentifier x
from :: forall x.
VersionedNotebookDocumentIdentifier
-> Rep VersionedNotebookDocumentIdentifier x
$cto :: forall x.
Rep VersionedNotebookDocumentIdentifier x
-> VersionedNotebookDocumentIdentifier
to :: forall x.
Rep VersionedNotebookDocumentIdentifier x
-> VersionedNotebookDocumentIdentifier
Generic)
  deriving anyclass (VersionedNotebookDocumentIdentifier -> ()
(VersionedNotebookDocumentIdentifier -> ())
-> NFData VersionedNotebookDocumentIdentifier
forall a. (a -> ()) -> NFData a
$crnf :: VersionedNotebookDocumentIdentifier -> ()
rnf :: VersionedNotebookDocumentIdentifier -> ()
NFData, Eq VersionedNotebookDocumentIdentifier
Eq VersionedNotebookDocumentIdentifier =>
(Int -> VersionedNotebookDocumentIdentifier -> Int)
-> (VersionedNotebookDocumentIdentifier -> Int)
-> Hashable VersionedNotebookDocumentIdentifier
Int -> VersionedNotebookDocumentIdentifier -> Int
VersionedNotebookDocumentIdentifier -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> VersionedNotebookDocumentIdentifier -> Int
hashWithSalt :: Int -> VersionedNotebookDocumentIdentifier -> Int
$chash :: VersionedNotebookDocumentIdentifier -> Int
hash :: VersionedNotebookDocumentIdentifier -> Int
Hashable)
  deriving (forall ann. VersionedNotebookDocumentIdentifier -> Doc ann)
-> (forall ann. [VersionedNotebookDocumentIdentifier] -> Doc ann)
-> Pretty VersionedNotebookDocumentIdentifier
forall ann. [VersionedNotebookDocumentIdentifier] -> Doc ann
forall ann. VersionedNotebookDocumentIdentifier -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. VersionedNotebookDocumentIdentifier -> Doc ann
pretty :: forall ann. VersionedNotebookDocumentIdentifier -> Doc ann
$cprettyList :: forall ann. [VersionedNotebookDocumentIdentifier] -> Doc ann
prettyList :: forall ann. [VersionedNotebookDocumentIdentifier] -> Doc ann
Pretty via (ViaJSON VersionedNotebookDocumentIdentifier)

instance Aeson.ToJSON VersionedNotebookDocumentIdentifier where
  toJSON :: VersionedNotebookDocumentIdentifier -> Value
toJSON (VersionedNotebookDocumentIdentifier Int32
arg0 Uri
arg1) = [Pair] -> Value
Aeson.object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ [[Pair]] -> [Pair]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([[Pair]] -> [Pair]) -> [[Pair]] -> [Pair]
forall a b. (a -> b) -> a -> b
$  [[Key
"version" Key -> Int32 -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= Int32
arg0]
    ,[Key
"uri" Key -> Uri -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= Uri
arg1]]

instance Aeson.FromJSON VersionedNotebookDocumentIdentifier where
  parseJSON :: Value -> Parser VersionedNotebookDocumentIdentifier
parseJSON = String
-> (Object -> Parser VersionedNotebookDocumentIdentifier)
-> Value
-> Parser VersionedNotebookDocumentIdentifier
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"VersionedNotebookDocumentIdentifier" ((Object -> Parser VersionedNotebookDocumentIdentifier)
 -> Value -> Parser VersionedNotebookDocumentIdentifier)
-> (Object -> Parser VersionedNotebookDocumentIdentifier)
-> Value
-> Parser VersionedNotebookDocumentIdentifier
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Int32 -> Uri -> VersionedNotebookDocumentIdentifier
VersionedNotebookDocumentIdentifier (Int32 -> Uri -> VersionedNotebookDocumentIdentifier)
-> Parser Int32
-> Parser (Uri -> VersionedNotebookDocumentIdentifier)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser Int32
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"version" Parser (Uri -> VersionedNotebookDocumentIdentifier)
-> Parser Uri -> Parser VersionedNotebookDocumentIdentifier
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
arg Object -> Key -> Parser Uri
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"uri"