{- 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.FileCreate 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

{-|
Represents information on a file/folder create.

@since 3.16.0
-}
data FileCreate = FileCreate 
  { {-|
  A file:// URI for the location of the file/folder being created.
  -}
  FileCreate -> Text
_uri :: Data.Text.Text
  }
  deriving stock (Int -> FileCreate -> ShowS
[FileCreate] -> ShowS
FileCreate -> String
(Int -> FileCreate -> ShowS)
-> (FileCreate -> String)
-> ([FileCreate] -> ShowS)
-> Show FileCreate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FileCreate -> ShowS
showsPrec :: Int -> FileCreate -> ShowS
$cshow :: FileCreate -> String
show :: FileCreate -> String
$cshowList :: [FileCreate] -> ShowS
showList :: [FileCreate] -> ShowS
Show, FileCreate -> FileCreate -> Bool
(FileCreate -> FileCreate -> Bool)
-> (FileCreate -> FileCreate -> Bool) -> Eq FileCreate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FileCreate -> FileCreate -> Bool
== :: FileCreate -> FileCreate -> Bool
$c/= :: FileCreate -> FileCreate -> Bool
/= :: FileCreate -> FileCreate -> Bool
Eq, Eq FileCreate
Eq FileCreate =>
(FileCreate -> FileCreate -> Ordering)
-> (FileCreate -> FileCreate -> Bool)
-> (FileCreate -> FileCreate -> Bool)
-> (FileCreate -> FileCreate -> Bool)
-> (FileCreate -> FileCreate -> Bool)
-> (FileCreate -> FileCreate -> FileCreate)
-> (FileCreate -> FileCreate -> FileCreate)
-> Ord FileCreate
FileCreate -> FileCreate -> Bool
FileCreate -> FileCreate -> Ordering
FileCreate -> FileCreate -> FileCreate
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 :: FileCreate -> FileCreate -> Ordering
compare :: FileCreate -> FileCreate -> Ordering
$c< :: FileCreate -> FileCreate -> Bool
< :: FileCreate -> FileCreate -> Bool
$c<= :: FileCreate -> FileCreate -> Bool
<= :: FileCreate -> FileCreate -> Bool
$c> :: FileCreate -> FileCreate -> Bool
> :: FileCreate -> FileCreate -> Bool
$c>= :: FileCreate -> FileCreate -> Bool
>= :: FileCreate -> FileCreate -> Bool
$cmax :: FileCreate -> FileCreate -> FileCreate
max :: FileCreate -> FileCreate -> FileCreate
$cmin :: FileCreate -> FileCreate -> FileCreate
min :: FileCreate -> FileCreate -> FileCreate
Ord, (forall x. FileCreate -> Rep FileCreate x)
-> (forall x. Rep FileCreate x -> FileCreate) -> Generic FileCreate
forall x. Rep FileCreate x -> FileCreate
forall x. FileCreate -> Rep FileCreate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. FileCreate -> Rep FileCreate x
from :: forall x. FileCreate -> Rep FileCreate x
$cto :: forall x. Rep FileCreate x -> FileCreate
to :: forall x. Rep FileCreate x -> FileCreate
Generic)
  deriving anyclass (FileCreate -> ()
(FileCreate -> ()) -> NFData FileCreate
forall a. (a -> ()) -> NFData a
$crnf :: FileCreate -> ()
rnf :: FileCreate -> ()
NFData, Eq FileCreate
Eq FileCreate =>
(Int -> FileCreate -> Int)
-> (FileCreate -> Int) -> Hashable FileCreate
Int -> FileCreate -> Int
FileCreate -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> FileCreate -> Int
hashWithSalt :: Int -> FileCreate -> Int
$chash :: FileCreate -> Int
hash :: FileCreate -> Int
Hashable)
  deriving (forall ann. FileCreate -> Doc ann)
-> (forall ann. [FileCreate] -> Doc ann) -> Pretty FileCreate
forall ann. [FileCreate] -> Doc ann
forall ann. FileCreate -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. FileCreate -> Doc ann
pretty :: forall ann. FileCreate -> Doc ann
$cprettyList :: forall ann. [FileCreate] -> Doc ann
prettyList :: forall ann. [FileCreate] -> Doc ann
Pretty via (ViaJSON FileCreate)

instance Aeson.ToJSON FileCreate where
  toJSON :: FileCreate -> Value
toJSON (FileCreate 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
"uri" 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 FileCreate where
  parseJSON :: Value -> Parser FileCreate
parseJSON = String
-> (Object -> Parser FileCreate) -> Value -> Parser FileCreate
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"FileCreate" ((Object -> Parser FileCreate) -> Value -> Parser FileCreate)
-> (Object -> Parser FileCreate) -> Value -> Parser FileCreate
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Text -> FileCreate
FileCreate (Text -> FileCreate) -> Parser Text -> Parser FileCreate
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
"uri"