{-# OPTIONS_GHC -Wno-unused-imports #-}
{-# OPTIONS_GHC -Wno-unused-matches #-}
{-# OPTIONS_GHC -Wno-deprecations #-}
module Language.LSP.Protocol.Internal.Types.FoldingRange 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.FoldingRangeKind
import qualified Language.LSP.Protocol.Types.Common
data FoldingRange = FoldingRange
{
FoldingRange -> UInt
_startLine :: Language.LSP.Protocol.Types.Common.UInt
,
FoldingRange -> Maybe UInt
_startCharacter :: (Maybe Language.LSP.Protocol.Types.Common.UInt)
,
FoldingRange -> UInt
_endLine :: Language.LSP.Protocol.Types.Common.UInt
,
FoldingRange -> Maybe UInt
_endCharacter :: (Maybe Language.LSP.Protocol.Types.Common.UInt)
,
FoldingRange -> Maybe FoldingRangeKind
_kind :: (Maybe Language.LSP.Protocol.Internal.Types.FoldingRangeKind.FoldingRangeKind)
,
FoldingRange -> Maybe Text
_collapsedText :: (Maybe Data.Text.Text)
}
deriving stock (Int -> FoldingRange -> ShowS
[FoldingRange] -> ShowS
FoldingRange -> String
(Int -> FoldingRange -> ShowS)
-> (FoldingRange -> String)
-> ([FoldingRange] -> ShowS)
-> Show FoldingRange
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FoldingRange -> ShowS
showsPrec :: Int -> FoldingRange -> ShowS
$cshow :: FoldingRange -> String
show :: FoldingRange -> String
$cshowList :: [FoldingRange] -> ShowS
showList :: [FoldingRange] -> ShowS
Show, FoldingRange -> FoldingRange -> Bool
(FoldingRange -> FoldingRange -> Bool)
-> (FoldingRange -> FoldingRange -> Bool) -> Eq FoldingRange
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FoldingRange -> FoldingRange -> Bool
== :: FoldingRange -> FoldingRange -> Bool
$c/= :: FoldingRange -> FoldingRange -> Bool
/= :: FoldingRange -> FoldingRange -> Bool
Eq, Eq FoldingRange
Eq FoldingRange =>
(FoldingRange -> FoldingRange -> Ordering)
-> (FoldingRange -> FoldingRange -> Bool)
-> (FoldingRange -> FoldingRange -> Bool)
-> (FoldingRange -> FoldingRange -> Bool)
-> (FoldingRange -> FoldingRange -> Bool)
-> (FoldingRange -> FoldingRange -> FoldingRange)
-> (FoldingRange -> FoldingRange -> FoldingRange)
-> Ord FoldingRange
FoldingRange -> FoldingRange -> Bool
FoldingRange -> FoldingRange -> Ordering
FoldingRange -> FoldingRange -> FoldingRange
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 :: FoldingRange -> FoldingRange -> Ordering
compare :: FoldingRange -> FoldingRange -> Ordering
$c< :: FoldingRange -> FoldingRange -> Bool
< :: FoldingRange -> FoldingRange -> Bool
$c<= :: FoldingRange -> FoldingRange -> Bool
<= :: FoldingRange -> FoldingRange -> Bool
$c> :: FoldingRange -> FoldingRange -> Bool
> :: FoldingRange -> FoldingRange -> Bool
$c>= :: FoldingRange -> FoldingRange -> Bool
>= :: FoldingRange -> FoldingRange -> Bool
$cmax :: FoldingRange -> FoldingRange -> FoldingRange
max :: FoldingRange -> FoldingRange -> FoldingRange
$cmin :: FoldingRange -> FoldingRange -> FoldingRange
min :: FoldingRange -> FoldingRange -> FoldingRange
Ord, (forall x. FoldingRange -> Rep FoldingRange x)
-> (forall x. Rep FoldingRange x -> FoldingRange)
-> Generic FoldingRange
forall x. Rep FoldingRange x -> FoldingRange
forall x. FoldingRange -> Rep FoldingRange x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. FoldingRange -> Rep FoldingRange x
from :: forall x. FoldingRange -> Rep FoldingRange x
$cto :: forall x. Rep FoldingRange x -> FoldingRange
to :: forall x. Rep FoldingRange x -> FoldingRange
Generic)
deriving anyclass (FoldingRange -> ()
(FoldingRange -> ()) -> NFData FoldingRange
forall a. (a -> ()) -> NFData a
$crnf :: FoldingRange -> ()
rnf :: FoldingRange -> ()
NFData, Eq FoldingRange
Eq FoldingRange =>
(Int -> FoldingRange -> Int)
-> (FoldingRange -> Int) -> Hashable FoldingRange
Int -> FoldingRange -> Int
FoldingRange -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> FoldingRange -> Int
hashWithSalt :: Int -> FoldingRange -> Int
$chash :: FoldingRange -> Int
hash :: FoldingRange -> Int
Hashable)
deriving (forall ann. FoldingRange -> Doc ann)
-> (forall ann. [FoldingRange] -> Doc ann) -> Pretty FoldingRange
forall ann. [FoldingRange] -> Doc ann
forall ann. FoldingRange -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. FoldingRange -> Doc ann
pretty :: forall ann. FoldingRange -> Doc ann
$cprettyList :: forall ann. [FoldingRange] -> Doc ann
prettyList :: forall ann. [FoldingRange] -> Doc ann
Pretty via (ViaJSON FoldingRange)
instance Aeson.ToJSON FoldingRange where
toJSON :: FoldingRange -> Value
toJSON (FoldingRange UInt
arg0 Maybe UInt
arg1 UInt
arg2 Maybe UInt
arg3 Maybe FoldingRangeKind
arg4 Maybe Text
arg5) = [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
"startLine" Key -> UInt -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= UInt
arg0]
,String
"startCharacter" String -> Maybe UInt -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe UInt
arg1
,[Key
"endLine" Key -> UInt -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= UInt
arg2]
,String
"endCharacter" String -> Maybe UInt -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe UInt
arg3
,String
"kind" String -> Maybe FoldingRangeKind -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe FoldingRangeKind
arg4
,String
"collapsedText" String -> Maybe Text -> [Pair]
forall e kv v.
(KeyValue e kv, ToJSON v) =>
String -> Maybe v -> [kv]
Language.LSP.Protocol.Types.Common..=? Maybe Text
arg5]
instance Aeson.FromJSON FoldingRange where
parseJSON :: Value -> Parser FoldingRange
parseJSON = String
-> (Object -> Parser FoldingRange) -> Value -> Parser FoldingRange
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"FoldingRange" ((Object -> Parser FoldingRange) -> Value -> Parser FoldingRange)
-> (Object -> Parser FoldingRange) -> Value -> Parser FoldingRange
forall a b. (a -> b) -> a -> b
$ \Object
arg -> UInt
-> Maybe UInt
-> UInt
-> Maybe UInt
-> Maybe FoldingRangeKind
-> Maybe Text
-> FoldingRange
FoldingRange (UInt
-> Maybe UInt
-> UInt
-> Maybe UInt
-> Maybe FoldingRangeKind
-> Maybe Text
-> FoldingRange)
-> Parser UInt
-> Parser
(Maybe UInt
-> UInt
-> Maybe UInt
-> Maybe FoldingRangeKind
-> Maybe Text
-> FoldingRange)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser UInt
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"startLine" Parser
(Maybe UInt
-> UInt
-> Maybe UInt
-> Maybe FoldingRangeKind
-> Maybe Text
-> FoldingRange)
-> Parser (Maybe UInt)
-> Parser
(UInt
-> Maybe UInt
-> Maybe FoldingRangeKind
-> Maybe Text
-> FoldingRange)
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 UInt)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"startCharacter" Parser
(UInt
-> Maybe UInt
-> Maybe FoldingRangeKind
-> Maybe Text
-> FoldingRange)
-> Parser UInt
-> Parser
(Maybe UInt
-> Maybe FoldingRangeKind -> Maybe Text -> FoldingRange)
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 UInt
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"endLine" Parser
(Maybe UInt
-> Maybe FoldingRangeKind -> Maybe Text -> FoldingRange)
-> Parser (Maybe UInt)
-> Parser (Maybe FoldingRangeKind -> Maybe Text -> FoldingRange)
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 UInt)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"endCharacter" Parser (Maybe FoldingRangeKind -> Maybe Text -> FoldingRange)
-> Parser (Maybe FoldingRangeKind)
-> Parser (Maybe Text -> FoldingRange)
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 FoldingRangeKind)
forall v. FromJSON v => Object -> Key -> Parser (Maybe v)
Language.LSP.Protocol.Types.Common..:!? Key
"kind" Parser (Maybe Text -> FoldingRange)
-> Parser (Maybe Text) -> Parser FoldingRange
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
"collapsedText"