{- 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.FoldingRangeKind 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.Set
import qualified Data.String
import qualified Data.Text
import qualified Language.LSP.Protocol.Types.LspEnum

{-|
A set of predefined range kinds.
-}
data FoldingRangeKind = 
    {-|
  Folding range for a comment
  -}
  FoldingRangeKind_Comment
  | {-|
  Folding range for an import or include
  -}
  FoldingRangeKind_Imports
  | {-|
  Folding range for a region (e.g. `#region`)
  -}
  FoldingRangeKind_Region
  | FoldingRangeKind_Custom Data.Text.Text
  deriving stock (Int -> FoldingRangeKind -> ShowS
[FoldingRangeKind] -> ShowS
FoldingRangeKind -> String
(Int -> FoldingRangeKind -> ShowS)
-> (FoldingRangeKind -> String)
-> ([FoldingRangeKind] -> ShowS)
-> Show FoldingRangeKind
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FoldingRangeKind -> ShowS
showsPrec :: Int -> FoldingRangeKind -> ShowS
$cshow :: FoldingRangeKind -> String
show :: FoldingRangeKind -> String
$cshowList :: [FoldingRangeKind] -> ShowS
showList :: [FoldingRangeKind] -> ShowS
Show, FoldingRangeKind -> FoldingRangeKind -> Bool
(FoldingRangeKind -> FoldingRangeKind -> Bool)
-> (FoldingRangeKind -> FoldingRangeKind -> Bool)
-> Eq FoldingRangeKind
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FoldingRangeKind -> FoldingRangeKind -> Bool
== :: FoldingRangeKind -> FoldingRangeKind -> Bool
$c/= :: FoldingRangeKind -> FoldingRangeKind -> Bool
/= :: FoldingRangeKind -> FoldingRangeKind -> Bool
Eq, Eq FoldingRangeKind
Eq FoldingRangeKind =>
(FoldingRangeKind -> FoldingRangeKind -> Ordering)
-> (FoldingRangeKind -> FoldingRangeKind -> Bool)
-> (FoldingRangeKind -> FoldingRangeKind -> Bool)
-> (FoldingRangeKind -> FoldingRangeKind -> Bool)
-> (FoldingRangeKind -> FoldingRangeKind -> Bool)
-> (FoldingRangeKind -> FoldingRangeKind -> FoldingRangeKind)
-> (FoldingRangeKind -> FoldingRangeKind -> FoldingRangeKind)
-> Ord FoldingRangeKind
FoldingRangeKind -> FoldingRangeKind -> Bool
FoldingRangeKind -> FoldingRangeKind -> Ordering
FoldingRangeKind -> FoldingRangeKind -> FoldingRangeKind
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 :: FoldingRangeKind -> FoldingRangeKind -> Ordering
compare :: FoldingRangeKind -> FoldingRangeKind -> Ordering
$c< :: FoldingRangeKind -> FoldingRangeKind -> Bool
< :: FoldingRangeKind -> FoldingRangeKind -> Bool
$c<= :: FoldingRangeKind -> FoldingRangeKind -> Bool
<= :: FoldingRangeKind -> FoldingRangeKind -> Bool
$c> :: FoldingRangeKind -> FoldingRangeKind -> Bool
> :: FoldingRangeKind -> FoldingRangeKind -> Bool
$c>= :: FoldingRangeKind -> FoldingRangeKind -> Bool
>= :: FoldingRangeKind -> FoldingRangeKind -> Bool
$cmax :: FoldingRangeKind -> FoldingRangeKind -> FoldingRangeKind
max :: FoldingRangeKind -> FoldingRangeKind -> FoldingRangeKind
$cmin :: FoldingRangeKind -> FoldingRangeKind -> FoldingRangeKind
min :: FoldingRangeKind -> FoldingRangeKind -> FoldingRangeKind
Ord, (forall x. FoldingRangeKind -> Rep FoldingRangeKind x)
-> (forall x. Rep FoldingRangeKind x -> FoldingRangeKind)
-> Generic FoldingRangeKind
forall x. Rep FoldingRangeKind x -> FoldingRangeKind
forall x. FoldingRangeKind -> Rep FoldingRangeKind x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. FoldingRangeKind -> Rep FoldingRangeKind x
from :: forall x. FoldingRangeKind -> Rep FoldingRangeKind x
$cto :: forall x. Rep FoldingRangeKind x -> FoldingRangeKind
to :: forall x. Rep FoldingRangeKind x -> FoldingRangeKind
Generic)
  deriving anyclass (FoldingRangeKind -> ()
(FoldingRangeKind -> ()) -> NFData FoldingRangeKind
forall a. (a -> ()) -> NFData a
$crnf :: FoldingRangeKind -> ()
rnf :: FoldingRangeKind -> ()
NFData, Eq FoldingRangeKind
Eq FoldingRangeKind =>
(Int -> FoldingRangeKind -> Int)
-> (FoldingRangeKind -> Int) -> Hashable FoldingRangeKind
Int -> FoldingRangeKind -> Int
FoldingRangeKind -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> FoldingRangeKind -> Int
hashWithSalt :: Int -> FoldingRangeKind -> Int
$chash :: FoldingRangeKind -> Int
hash :: FoldingRangeKind -> Int
Hashable)
  deriving ( [FoldingRangeKind] -> Value
[FoldingRangeKind] -> Encoding
FoldingRangeKind -> Bool
FoldingRangeKind -> Value
FoldingRangeKind -> Encoding
(FoldingRangeKind -> Value)
-> (FoldingRangeKind -> Encoding)
-> ([FoldingRangeKind] -> Value)
-> ([FoldingRangeKind] -> Encoding)
-> (FoldingRangeKind -> Bool)
-> ToJSON FoldingRangeKind
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: FoldingRangeKind -> Value
toJSON :: FoldingRangeKind -> Value
$ctoEncoding :: FoldingRangeKind -> Encoding
toEncoding :: FoldingRangeKind -> Encoding
$ctoJSONList :: [FoldingRangeKind] -> Value
toJSONList :: [FoldingRangeKind] -> Value
$ctoEncodingList :: [FoldingRangeKind] -> Encoding
toEncodingList :: [FoldingRangeKind] -> Encoding
$comitField :: FoldingRangeKind -> Bool
omitField :: FoldingRangeKind -> Bool
Aeson.ToJSON
  , Maybe FoldingRangeKind
Value -> Parser [FoldingRangeKind]
Value -> Parser FoldingRangeKind
(Value -> Parser FoldingRangeKind)
-> (Value -> Parser [FoldingRangeKind])
-> Maybe FoldingRangeKind
-> FromJSON FoldingRangeKind
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser FoldingRangeKind
parseJSON :: Value -> Parser FoldingRangeKind
$cparseJSONList :: Value -> Parser [FoldingRangeKind]
parseJSONList :: Value -> Parser [FoldingRangeKind]
$comittedField :: Maybe FoldingRangeKind
omittedField :: Maybe FoldingRangeKind
Aeson.FromJSON
  , String -> FoldingRangeKind
(String -> FoldingRangeKind) -> IsString FoldingRangeKind
forall a. (String -> a) -> IsString a
$cfromString :: String -> FoldingRangeKind
fromString :: String -> FoldingRangeKind
Data.String.IsString ) via (Language.LSP.Protocol.Types.LspEnum.AsLspEnum FoldingRangeKind)
  deriving (forall ann. FoldingRangeKind -> Doc ann)
-> (forall ann. [FoldingRangeKind] -> Doc ann)
-> Pretty FoldingRangeKind
forall ann. [FoldingRangeKind] -> Doc ann
forall ann. FoldingRangeKind -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. FoldingRangeKind -> Doc ann
pretty :: forall ann. FoldingRangeKind -> Doc ann
$cprettyList :: forall ann. [FoldingRangeKind] -> Doc ann
prettyList :: forall ann. [FoldingRangeKind] -> Doc ann
Pretty via (ViaJSON FoldingRangeKind)

instance Language.LSP.Protocol.Types.LspEnum.LspEnum FoldingRangeKind where
  knownValues :: Set FoldingRangeKind
knownValues = [FoldingRangeKind] -> Set FoldingRangeKind
forall a. Ord a => [a] -> Set a
Data.Set.fromList [FoldingRangeKind
FoldingRangeKind_Comment
    ,FoldingRangeKind
FoldingRangeKind_Imports
    ,FoldingRangeKind
FoldingRangeKind_Region]
  type EnumBaseType FoldingRangeKind = Data.Text.Text
  toEnumBaseType :: FoldingRangeKind -> EnumBaseType FoldingRangeKind
toEnumBaseType FoldingRangeKind
FoldingRangeKind_Comment = Text
EnumBaseType FoldingRangeKind
"comment"
  toEnumBaseType FoldingRangeKind
FoldingRangeKind_Imports = Text
EnumBaseType FoldingRangeKind
"imports"
  toEnumBaseType FoldingRangeKind
FoldingRangeKind_Region = Text
EnumBaseType FoldingRangeKind
"region"
  toEnumBaseType (FoldingRangeKind_Custom Text
arg) = Text
EnumBaseType FoldingRangeKind
arg

instance Language.LSP.Protocol.Types.LspEnum.LspOpenEnum FoldingRangeKind where
  fromOpenEnumBaseType :: EnumBaseType FoldingRangeKind -> FoldingRangeKind
fromOpenEnumBaseType EnumBaseType FoldingRangeKind
"comment" = FoldingRangeKind
FoldingRangeKind_Comment
  fromOpenEnumBaseType EnumBaseType FoldingRangeKind
"imports" = FoldingRangeKind
FoldingRangeKind_Imports
  fromOpenEnumBaseType EnumBaseType FoldingRangeKind
"region" = FoldingRangeKind
FoldingRangeKind_Region
  fromOpenEnumBaseType EnumBaseType FoldingRangeKind
arg = Text -> FoldingRangeKind
FoldingRangeKind_Custom Text
EnumBaseType FoldingRangeKind
arg