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

{-|
The client supports the following `CompletionList` specific
capabilities.

@since 3.17.0
-}
data CompletionListCapabilities = CompletionListCapabilities 
  { {-|
  The client supports the following itemDefaults on
  a completion list.

  The value lists the supported property names of the
  `CompletionList.itemDefaults` object. If omitted
  no properties are supported.

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

instance Aeson.ToJSON CompletionListCapabilities where
  toJSON :: CompletionListCapabilities -> Value
toJSON (CompletionListCapabilities Maybe [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
$  [String
"itemDefaults" String -> Maybe [Text] -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe [Text]
arg0]

instance Aeson.FromJSON CompletionListCapabilities where
  parseJSON :: Value -> Parser CompletionListCapabilities
parseJSON = String
-> (Object -> Parser CompletionListCapabilities)
-> Value
-> Parser CompletionListCapabilities
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"CompletionListCapabilities" ((Object -> Parser CompletionListCapabilities)
 -> Value -> Parser CompletionListCapabilities)
-> (Object -> Parser CompletionListCapabilities)
-> Value
-> Parser CompletionListCapabilities
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Maybe [Text] -> CompletionListCapabilities
CompletionListCapabilities (Maybe [Text] -> CompletionListCapabilities)
-> Parser (Maybe [Text]) -> Parser CompletionListCapabilities
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser (Maybe [Text])
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"itemDefaults"