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

{-|
Describes the content type that a client supports in various
result literals like `Hover`, `ParameterInfo` or `CompletionItem`.

Please note that `MarkupKinds` must not start with a `$`. This kinds
are reserved for internal usage.
-}
data MarkupKind = 
    {-|
  Plain text is supported as a content format
  -}
  MarkupKind_PlainText
  | {-|
  Markdown is supported as a content format
  -}
  MarkupKind_Markdown
  deriving stock (Int -> MarkupKind -> ShowS
[MarkupKind] -> ShowS
MarkupKind -> String
(Int -> MarkupKind -> ShowS)
-> (MarkupKind -> String)
-> ([MarkupKind] -> ShowS)
-> Show MarkupKind
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MarkupKind -> ShowS
showsPrec :: Int -> MarkupKind -> ShowS
$cshow :: MarkupKind -> String
show :: MarkupKind -> String
$cshowList :: [MarkupKind] -> ShowS
showList :: [MarkupKind] -> ShowS
Show, MarkupKind -> MarkupKind -> Bool
(MarkupKind -> MarkupKind -> Bool)
-> (MarkupKind -> MarkupKind -> Bool) -> Eq MarkupKind
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MarkupKind -> MarkupKind -> Bool
== :: MarkupKind -> MarkupKind -> Bool
$c/= :: MarkupKind -> MarkupKind -> Bool
/= :: MarkupKind -> MarkupKind -> Bool
Eq, Eq MarkupKind
Eq MarkupKind =>
(MarkupKind -> MarkupKind -> Ordering)
-> (MarkupKind -> MarkupKind -> Bool)
-> (MarkupKind -> MarkupKind -> Bool)
-> (MarkupKind -> MarkupKind -> Bool)
-> (MarkupKind -> MarkupKind -> Bool)
-> (MarkupKind -> MarkupKind -> MarkupKind)
-> (MarkupKind -> MarkupKind -> MarkupKind)
-> Ord MarkupKind
MarkupKind -> MarkupKind -> Bool
MarkupKind -> MarkupKind -> Ordering
MarkupKind -> MarkupKind -> MarkupKind
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 :: MarkupKind -> MarkupKind -> Ordering
compare :: MarkupKind -> MarkupKind -> Ordering
$c< :: MarkupKind -> MarkupKind -> Bool
< :: MarkupKind -> MarkupKind -> Bool
$c<= :: MarkupKind -> MarkupKind -> Bool
<= :: MarkupKind -> MarkupKind -> Bool
$c> :: MarkupKind -> MarkupKind -> Bool
> :: MarkupKind -> MarkupKind -> Bool
$c>= :: MarkupKind -> MarkupKind -> Bool
>= :: MarkupKind -> MarkupKind -> Bool
$cmax :: MarkupKind -> MarkupKind -> MarkupKind
max :: MarkupKind -> MarkupKind -> MarkupKind
$cmin :: MarkupKind -> MarkupKind -> MarkupKind
min :: MarkupKind -> MarkupKind -> MarkupKind
Ord, (forall x. MarkupKind -> Rep MarkupKind x)
-> (forall x. Rep MarkupKind x -> MarkupKind) -> Generic MarkupKind
forall x. Rep MarkupKind x -> MarkupKind
forall x. MarkupKind -> Rep MarkupKind x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MarkupKind -> Rep MarkupKind x
from :: forall x. MarkupKind -> Rep MarkupKind x
$cto :: forall x. Rep MarkupKind x -> MarkupKind
to :: forall x. Rep MarkupKind x -> MarkupKind
Generic)
  deriving anyclass (MarkupKind -> ()
(MarkupKind -> ()) -> NFData MarkupKind
forall a. (a -> ()) -> NFData a
$crnf :: MarkupKind -> ()
rnf :: MarkupKind -> ()
NFData, Eq MarkupKind
Eq MarkupKind =>
(Int -> MarkupKind -> Int)
-> (MarkupKind -> Int) -> Hashable MarkupKind
Int -> MarkupKind -> Int
MarkupKind -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> MarkupKind -> Int
hashWithSalt :: Int -> MarkupKind -> Int
$chash :: MarkupKind -> Int
hash :: MarkupKind -> Int
Hashable)
  deriving ( [MarkupKind] -> Value
[MarkupKind] -> Encoding
MarkupKind -> Bool
MarkupKind -> Value
MarkupKind -> Encoding
(MarkupKind -> Value)
-> (MarkupKind -> Encoding)
-> ([MarkupKind] -> Value)
-> ([MarkupKind] -> Encoding)
-> (MarkupKind -> Bool)
-> ToJSON MarkupKind
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: MarkupKind -> Value
toJSON :: MarkupKind -> Value
$ctoEncoding :: MarkupKind -> Encoding
toEncoding :: MarkupKind -> Encoding
$ctoJSONList :: [MarkupKind] -> Value
toJSONList :: [MarkupKind] -> Value
$ctoEncodingList :: [MarkupKind] -> Encoding
toEncodingList :: [MarkupKind] -> Encoding
$comitField :: MarkupKind -> Bool
omitField :: MarkupKind -> Bool
Aeson.ToJSON
  , Maybe MarkupKind
Value -> Parser [MarkupKind]
Value -> Parser MarkupKind
(Value -> Parser MarkupKind)
-> (Value -> Parser [MarkupKind])
-> Maybe MarkupKind
-> FromJSON MarkupKind
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser MarkupKind
parseJSON :: Value -> Parser MarkupKind
$cparseJSONList :: Value -> Parser [MarkupKind]
parseJSONList :: Value -> Parser [MarkupKind]
$comittedField :: Maybe MarkupKind
omittedField :: Maybe MarkupKind
Aeson.FromJSON ) via (Language.LSP.Protocol.Types.LspEnum.AsLspEnum MarkupKind)
  deriving (forall ann. MarkupKind -> Doc ann)
-> (forall ann. [MarkupKind] -> Doc ann) -> Pretty MarkupKind
forall ann. [MarkupKind] -> Doc ann
forall ann. MarkupKind -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. MarkupKind -> Doc ann
pretty :: forall ann. MarkupKind -> Doc ann
$cprettyList :: forall ann. [MarkupKind] -> Doc ann
prettyList :: forall ann. [MarkupKind] -> Doc ann
Pretty via (ViaJSON MarkupKind)

instance Language.LSP.Protocol.Types.LspEnum.LspEnum MarkupKind where
  knownValues :: Set MarkupKind
knownValues = [MarkupKind] -> Set MarkupKind
forall a. Ord a => [a] -> Set a
Data.Set.fromList [MarkupKind
MarkupKind_PlainText,MarkupKind
MarkupKind_Markdown]
  type EnumBaseType MarkupKind = Data.Text.Text
  toEnumBaseType :: MarkupKind -> EnumBaseType MarkupKind
toEnumBaseType MarkupKind
MarkupKind_PlainText = Text
EnumBaseType MarkupKind
"plaintext"
  toEnumBaseType MarkupKind
MarkupKind_Markdown = Text
EnumBaseType MarkupKind
"markdown"
  fromEnumBaseType :: EnumBaseType MarkupKind -> Maybe MarkupKind
fromEnumBaseType EnumBaseType MarkupKind
"plaintext" = MarkupKind -> Maybe MarkupKind
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure MarkupKind
MarkupKind_PlainText
  fromEnumBaseType EnumBaseType MarkupKind
"markdown" = MarkupKind -> Maybe MarkupKind
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure MarkupKind
MarkupKind_Markdown
  fromEnumBaseType EnumBaseType MarkupKind
_ = Maybe MarkupKind
forall a. Maybe a
Nothing