{- 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.DocumentOnTypeFormattingRegistrationOptions 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.Internal.Types.DocumentSelector
import qualified Language.LSP.Protocol.Types.Common

{-|
Registration options for a `DocumentOnTypeFormattingRequest`.
-}
data DocumentOnTypeFormattingRegistrationOptions = DocumentOnTypeFormattingRegistrationOptions 
  { {-|
  A document selector to identify the scope of the registration. If set to null
  the document selector provided on the client side will be used.
  -}
  DocumentOnTypeFormattingRegistrationOptions
-> DocumentSelector |? Null
_documentSelector :: (Language.LSP.Protocol.Internal.Types.DocumentSelector.DocumentSelector Language.LSP.Protocol.Types.Common.|? Language.LSP.Protocol.Types.Common.Null)
  , {-|
  A character on which formatting should be triggered, like `{`.
  -}
  DocumentOnTypeFormattingRegistrationOptions -> Text
_firstTriggerCharacter :: Data.Text.Text
  , {-|
  More trigger characters.
  -}
  DocumentOnTypeFormattingRegistrationOptions -> Maybe [Text]
_moreTriggerCharacter :: (Maybe [Data.Text.Text])
  }
  deriving stock (Int -> DocumentOnTypeFormattingRegistrationOptions -> ShowS
[DocumentOnTypeFormattingRegistrationOptions] -> ShowS
DocumentOnTypeFormattingRegistrationOptions -> String
(Int -> DocumentOnTypeFormattingRegistrationOptions -> ShowS)
-> (DocumentOnTypeFormattingRegistrationOptions -> String)
-> ([DocumentOnTypeFormattingRegistrationOptions] -> ShowS)
-> Show DocumentOnTypeFormattingRegistrationOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DocumentOnTypeFormattingRegistrationOptions -> ShowS
showsPrec :: Int -> DocumentOnTypeFormattingRegistrationOptions -> ShowS
$cshow :: DocumentOnTypeFormattingRegistrationOptions -> String
show :: DocumentOnTypeFormattingRegistrationOptions -> String
$cshowList :: [DocumentOnTypeFormattingRegistrationOptions] -> ShowS
showList :: [DocumentOnTypeFormattingRegistrationOptions] -> ShowS
Show, DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
(DocumentOnTypeFormattingRegistrationOptions
 -> DocumentOnTypeFormattingRegistrationOptions -> Bool)
-> (DocumentOnTypeFormattingRegistrationOptions
    -> DocumentOnTypeFormattingRegistrationOptions -> Bool)
-> Eq DocumentOnTypeFormattingRegistrationOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
== :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
$c/= :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
/= :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
Eq, Eq DocumentOnTypeFormattingRegistrationOptions
Eq DocumentOnTypeFormattingRegistrationOptions =>
(DocumentOnTypeFormattingRegistrationOptions
 -> DocumentOnTypeFormattingRegistrationOptions -> Ordering)
-> (DocumentOnTypeFormattingRegistrationOptions
    -> DocumentOnTypeFormattingRegistrationOptions -> Bool)
-> (DocumentOnTypeFormattingRegistrationOptions
    -> DocumentOnTypeFormattingRegistrationOptions -> Bool)
-> (DocumentOnTypeFormattingRegistrationOptions
    -> DocumentOnTypeFormattingRegistrationOptions -> Bool)
-> (DocumentOnTypeFormattingRegistrationOptions
    -> DocumentOnTypeFormattingRegistrationOptions -> Bool)
-> (DocumentOnTypeFormattingRegistrationOptions
    -> DocumentOnTypeFormattingRegistrationOptions
    -> DocumentOnTypeFormattingRegistrationOptions)
-> (DocumentOnTypeFormattingRegistrationOptions
    -> DocumentOnTypeFormattingRegistrationOptions
    -> DocumentOnTypeFormattingRegistrationOptions)
-> Ord DocumentOnTypeFormattingRegistrationOptions
DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Ordering
DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
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 :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Ordering
compare :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Ordering
$c< :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
< :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
$c<= :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
<= :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
$c> :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
> :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
$c>= :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
>= :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions -> Bool
$cmax :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
max :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
$cmin :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
min :: DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
-> DocumentOnTypeFormattingRegistrationOptions
Ord, (forall x.
 DocumentOnTypeFormattingRegistrationOptions
 -> Rep DocumentOnTypeFormattingRegistrationOptions x)
-> (forall x.
    Rep DocumentOnTypeFormattingRegistrationOptions x
    -> DocumentOnTypeFormattingRegistrationOptions)
-> Generic DocumentOnTypeFormattingRegistrationOptions
forall x.
Rep DocumentOnTypeFormattingRegistrationOptions x
-> DocumentOnTypeFormattingRegistrationOptions
forall x.
DocumentOnTypeFormattingRegistrationOptions
-> Rep DocumentOnTypeFormattingRegistrationOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
DocumentOnTypeFormattingRegistrationOptions
-> Rep DocumentOnTypeFormattingRegistrationOptions x
from :: forall x.
DocumentOnTypeFormattingRegistrationOptions
-> Rep DocumentOnTypeFormattingRegistrationOptions x
$cto :: forall x.
Rep DocumentOnTypeFormattingRegistrationOptions x
-> DocumentOnTypeFormattingRegistrationOptions
to :: forall x.
Rep DocumentOnTypeFormattingRegistrationOptions x
-> DocumentOnTypeFormattingRegistrationOptions
Generic)
  deriving anyclass (DocumentOnTypeFormattingRegistrationOptions -> ()
(DocumentOnTypeFormattingRegistrationOptions -> ())
-> NFData DocumentOnTypeFormattingRegistrationOptions
forall a. (a -> ()) -> NFData a
$crnf :: DocumentOnTypeFormattingRegistrationOptions -> ()
rnf :: DocumentOnTypeFormattingRegistrationOptions -> ()
NFData, Eq DocumentOnTypeFormattingRegistrationOptions
Eq DocumentOnTypeFormattingRegistrationOptions =>
(Int -> DocumentOnTypeFormattingRegistrationOptions -> Int)
-> (DocumentOnTypeFormattingRegistrationOptions -> Int)
-> Hashable DocumentOnTypeFormattingRegistrationOptions
Int -> DocumentOnTypeFormattingRegistrationOptions -> Int
DocumentOnTypeFormattingRegistrationOptions -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> DocumentOnTypeFormattingRegistrationOptions -> Int
hashWithSalt :: Int -> DocumentOnTypeFormattingRegistrationOptions -> Int
$chash :: DocumentOnTypeFormattingRegistrationOptions -> Int
hash :: DocumentOnTypeFormattingRegistrationOptions -> Int
Hashable)
  deriving (forall ann.
 DocumentOnTypeFormattingRegistrationOptions -> Doc ann)
-> (forall ann.
    [DocumentOnTypeFormattingRegistrationOptions] -> Doc ann)
-> Pretty DocumentOnTypeFormattingRegistrationOptions
forall ann.
[DocumentOnTypeFormattingRegistrationOptions] -> Doc ann
forall ann. DocumentOnTypeFormattingRegistrationOptions -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. DocumentOnTypeFormattingRegistrationOptions -> Doc ann
pretty :: forall ann. DocumentOnTypeFormattingRegistrationOptions -> Doc ann
$cprettyList :: forall ann.
[DocumentOnTypeFormattingRegistrationOptions] -> Doc ann
prettyList :: forall ann.
[DocumentOnTypeFormattingRegistrationOptions] -> Doc ann
Pretty via (ViaJSON DocumentOnTypeFormattingRegistrationOptions)

instance Aeson.ToJSON DocumentOnTypeFormattingRegistrationOptions where
  toJSON :: DocumentOnTypeFormattingRegistrationOptions -> Value
toJSON (DocumentOnTypeFormattingRegistrationOptions DocumentSelector |? Null
arg0 Text
arg1 Maybe [Text]
arg2) = [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
"documentSelector" Key -> (DocumentSelector |? Null) -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= DocumentSelector |? Null
arg0]
    ,[Key
"firstTriggerCharacter" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= Text
arg1]
    ,String
"moreTriggerCharacter" String -> Maybe [Text] -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe [Text]
arg2]

instance Aeson.FromJSON DocumentOnTypeFormattingRegistrationOptions where
  parseJSON :: Value -> Parser DocumentOnTypeFormattingRegistrationOptions
parseJSON = String
-> (Object -> Parser DocumentOnTypeFormattingRegistrationOptions)
-> Value
-> Parser DocumentOnTypeFormattingRegistrationOptions
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"DocumentOnTypeFormattingRegistrationOptions" ((Object -> Parser DocumentOnTypeFormattingRegistrationOptions)
 -> Value -> Parser DocumentOnTypeFormattingRegistrationOptions)
-> (Object -> Parser DocumentOnTypeFormattingRegistrationOptions)
-> Value
-> Parser DocumentOnTypeFormattingRegistrationOptions
forall a b. (a -> b) -> a -> b
$ \Object
arg -> (DocumentSelector |? Null)
-> Text
-> Maybe [Text]
-> DocumentOnTypeFormattingRegistrationOptions
DocumentOnTypeFormattingRegistrationOptions ((DocumentSelector |? Null)
 -> Text
 -> Maybe [Text]
 -> DocumentOnTypeFormattingRegistrationOptions)
-> Parser (DocumentSelector |? Null)
-> Parser
     (Text
      -> Maybe [Text] -> DocumentOnTypeFormattingRegistrationOptions)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser (DocumentSelector |? Null)
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"documentSelector" Parser
  (Text
   -> Maybe [Text] -> DocumentOnTypeFormattingRegistrationOptions)
-> Parser Text
-> Parser
     (Maybe [Text] -> DocumentOnTypeFormattingRegistrationOptions)
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 Text
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"firstTriggerCharacter" Parser
  (Maybe [Text] -> DocumentOnTypeFormattingRegistrationOptions)
-> Parser (Maybe [Text])
-> Parser DocumentOnTypeFormattingRegistrationOptions
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 (Maybe [Text])
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"moreTriggerCharacter"