{- 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.TextDocumentContentChangeWholeDocument 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 Data.Text
import qualified Language.LSP.Protocol.Types.Common

{-|
@since 3.18.0
@proposed
-}
data TextDocumentContentChangeWholeDocument = TextDocumentContentChangeWholeDocument 
  { {-|
  The new text of the whole document.
  -}
  TextDocumentContentChangeWholeDocument -> Text
_text :: Data.Text.Text
  }
  deriving stock (Int -> TextDocumentContentChangeWholeDocument -> ShowS
[TextDocumentContentChangeWholeDocument] -> ShowS
TextDocumentContentChangeWholeDocument -> String
(Int -> TextDocumentContentChangeWholeDocument -> ShowS)
-> (TextDocumentContentChangeWholeDocument -> String)
-> ([TextDocumentContentChangeWholeDocument] -> ShowS)
-> Show TextDocumentContentChangeWholeDocument
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextDocumentContentChangeWholeDocument -> ShowS
showsPrec :: Int -> TextDocumentContentChangeWholeDocument -> ShowS
$cshow :: TextDocumentContentChangeWholeDocument -> String
show :: TextDocumentContentChangeWholeDocument -> String
$cshowList :: [TextDocumentContentChangeWholeDocument] -> ShowS
showList :: [TextDocumentContentChangeWholeDocument] -> ShowS
Show, TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
(TextDocumentContentChangeWholeDocument
 -> TextDocumentContentChangeWholeDocument -> Bool)
-> (TextDocumentContentChangeWholeDocument
    -> TextDocumentContentChangeWholeDocument -> Bool)
-> Eq TextDocumentContentChangeWholeDocument
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
== :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
$c/= :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
/= :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
Eq, Eq TextDocumentContentChangeWholeDocument
Eq TextDocumentContentChangeWholeDocument =>
(TextDocumentContentChangeWholeDocument
 -> TextDocumentContentChangeWholeDocument -> Ordering)
-> (TextDocumentContentChangeWholeDocument
    -> TextDocumentContentChangeWholeDocument -> Bool)
-> (TextDocumentContentChangeWholeDocument
    -> TextDocumentContentChangeWholeDocument -> Bool)
-> (TextDocumentContentChangeWholeDocument
    -> TextDocumentContentChangeWholeDocument -> Bool)
-> (TextDocumentContentChangeWholeDocument
    -> TextDocumentContentChangeWholeDocument -> Bool)
-> (TextDocumentContentChangeWholeDocument
    -> TextDocumentContentChangeWholeDocument
    -> TextDocumentContentChangeWholeDocument)
-> (TextDocumentContentChangeWholeDocument
    -> TextDocumentContentChangeWholeDocument
    -> TextDocumentContentChangeWholeDocument)
-> Ord TextDocumentContentChangeWholeDocument
TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Ordering
TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
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 :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Ordering
compare :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Ordering
$c< :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
< :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
$c<= :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
<= :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
$c> :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
> :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
$c>= :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
>= :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument -> Bool
$cmax :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
max :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
$cmin :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
min :: TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
-> TextDocumentContentChangeWholeDocument
Ord, (forall x.
 TextDocumentContentChangeWholeDocument
 -> Rep TextDocumentContentChangeWholeDocument x)
-> (forall x.
    Rep TextDocumentContentChangeWholeDocument x
    -> TextDocumentContentChangeWholeDocument)
-> Generic TextDocumentContentChangeWholeDocument
forall x.
Rep TextDocumentContentChangeWholeDocument x
-> TextDocumentContentChangeWholeDocument
forall x.
TextDocumentContentChangeWholeDocument
-> Rep TextDocumentContentChangeWholeDocument x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
TextDocumentContentChangeWholeDocument
-> Rep TextDocumentContentChangeWholeDocument x
from :: forall x.
TextDocumentContentChangeWholeDocument
-> Rep TextDocumentContentChangeWholeDocument x
$cto :: forall x.
Rep TextDocumentContentChangeWholeDocument x
-> TextDocumentContentChangeWholeDocument
to :: forall x.
Rep TextDocumentContentChangeWholeDocument x
-> TextDocumentContentChangeWholeDocument
Generic)
  deriving anyclass (TextDocumentContentChangeWholeDocument -> ()
(TextDocumentContentChangeWholeDocument -> ())
-> NFData TextDocumentContentChangeWholeDocument
forall a. (a -> ()) -> NFData a
$crnf :: TextDocumentContentChangeWholeDocument -> ()
rnf :: TextDocumentContentChangeWholeDocument -> ()
NFData, Eq TextDocumentContentChangeWholeDocument
Eq TextDocumentContentChangeWholeDocument =>
(Int -> TextDocumentContentChangeWholeDocument -> Int)
-> (TextDocumentContentChangeWholeDocument -> Int)
-> Hashable TextDocumentContentChangeWholeDocument
Int -> TextDocumentContentChangeWholeDocument -> Int
TextDocumentContentChangeWholeDocument -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> TextDocumentContentChangeWholeDocument -> Int
hashWithSalt :: Int -> TextDocumentContentChangeWholeDocument -> Int
$chash :: TextDocumentContentChangeWholeDocument -> Int
hash :: TextDocumentContentChangeWholeDocument -> Int
Hashable)
  deriving (forall ann. TextDocumentContentChangeWholeDocument -> Doc ann)
-> (forall ann.
    [TextDocumentContentChangeWholeDocument] -> Doc ann)
-> Pretty TextDocumentContentChangeWholeDocument
forall ann. [TextDocumentContentChangeWholeDocument] -> Doc ann
forall ann. TextDocumentContentChangeWholeDocument -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. TextDocumentContentChangeWholeDocument -> Doc ann
pretty :: forall ann. TextDocumentContentChangeWholeDocument -> Doc ann
$cprettyList :: forall ann. [TextDocumentContentChangeWholeDocument] -> Doc ann
prettyList :: forall ann. [TextDocumentContentChangeWholeDocument] -> Doc ann
Pretty via (ViaJSON TextDocumentContentChangeWholeDocument)

instance Aeson.ToJSON TextDocumentContentChangeWholeDocument where
  toJSON :: TextDocumentContentChangeWholeDocument -> Value
toJSON (TextDocumentContentChangeWholeDocument Text
arg0) = [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
"text" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= Text
arg0]]

instance Aeson.FromJSON TextDocumentContentChangeWholeDocument where
  parseJSON :: Value -> Parser TextDocumentContentChangeWholeDocument
parseJSON = String
-> (Object -> Parser TextDocumentContentChangeWholeDocument)
-> Value
-> Parser TextDocumentContentChangeWholeDocument
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"TextDocumentContentChangeWholeDocument" ((Object -> Parser TextDocumentContentChangeWholeDocument)
 -> Value -> Parser TextDocumentContentChangeWholeDocument)
-> (Object -> Parser TextDocumentContentChangeWholeDocument)
-> Value
-> Parser TextDocumentContentChangeWholeDocument
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Text -> TextDocumentContentChangeWholeDocument
TextDocumentContentChangeWholeDocument (Text -> TextDocumentContentChangeWholeDocument)
-> Parser Text -> Parser TextDocumentContentChangeWholeDocument
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"text"