{- 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.InlineValueText 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.Range
import qualified Language.LSP.Protocol.Types.Common

{-|
Provide inline value as text.

@since 3.17.0
-}
data InlineValueText = InlineValueText 
  { {-|
  The document range for which the inline value applies.
  -}
  InlineValueText -> Range
_range :: Language.LSP.Protocol.Internal.Types.Range.Range
  , {-|
  The text of the inline value.
  -}
  InlineValueText -> Text
_text :: Data.Text.Text
  }
  deriving stock (Int -> InlineValueText -> ShowS
[InlineValueText] -> ShowS
InlineValueText -> String
(Int -> InlineValueText -> ShowS)
-> (InlineValueText -> String)
-> ([InlineValueText] -> ShowS)
-> Show InlineValueText
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InlineValueText -> ShowS
showsPrec :: Int -> InlineValueText -> ShowS
$cshow :: InlineValueText -> String
show :: InlineValueText -> String
$cshowList :: [InlineValueText] -> ShowS
showList :: [InlineValueText] -> ShowS
Show, InlineValueText -> InlineValueText -> Bool
(InlineValueText -> InlineValueText -> Bool)
-> (InlineValueText -> InlineValueText -> Bool)
-> Eq InlineValueText
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InlineValueText -> InlineValueText -> Bool
== :: InlineValueText -> InlineValueText -> Bool
$c/= :: InlineValueText -> InlineValueText -> Bool
/= :: InlineValueText -> InlineValueText -> Bool
Eq, Eq InlineValueText
Eq InlineValueText =>
(InlineValueText -> InlineValueText -> Ordering)
-> (InlineValueText -> InlineValueText -> Bool)
-> (InlineValueText -> InlineValueText -> Bool)
-> (InlineValueText -> InlineValueText -> Bool)
-> (InlineValueText -> InlineValueText -> Bool)
-> (InlineValueText -> InlineValueText -> InlineValueText)
-> (InlineValueText -> InlineValueText -> InlineValueText)
-> Ord InlineValueText
InlineValueText -> InlineValueText -> Bool
InlineValueText -> InlineValueText -> Ordering
InlineValueText -> InlineValueText -> InlineValueText
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 :: InlineValueText -> InlineValueText -> Ordering
compare :: InlineValueText -> InlineValueText -> Ordering
$c< :: InlineValueText -> InlineValueText -> Bool
< :: InlineValueText -> InlineValueText -> Bool
$c<= :: InlineValueText -> InlineValueText -> Bool
<= :: InlineValueText -> InlineValueText -> Bool
$c> :: InlineValueText -> InlineValueText -> Bool
> :: InlineValueText -> InlineValueText -> Bool
$c>= :: InlineValueText -> InlineValueText -> Bool
>= :: InlineValueText -> InlineValueText -> Bool
$cmax :: InlineValueText -> InlineValueText -> InlineValueText
max :: InlineValueText -> InlineValueText -> InlineValueText
$cmin :: InlineValueText -> InlineValueText -> InlineValueText
min :: InlineValueText -> InlineValueText -> InlineValueText
Ord, (forall x. InlineValueText -> Rep InlineValueText x)
-> (forall x. Rep InlineValueText x -> InlineValueText)
-> Generic InlineValueText
forall x. Rep InlineValueText x -> InlineValueText
forall x. InlineValueText -> Rep InlineValueText x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. InlineValueText -> Rep InlineValueText x
from :: forall x. InlineValueText -> Rep InlineValueText x
$cto :: forall x. Rep InlineValueText x -> InlineValueText
to :: forall x. Rep InlineValueText x -> InlineValueText
Generic)
  deriving anyclass (InlineValueText -> ()
(InlineValueText -> ()) -> NFData InlineValueText
forall a. (a -> ()) -> NFData a
$crnf :: InlineValueText -> ()
rnf :: InlineValueText -> ()
NFData, Eq InlineValueText
Eq InlineValueText =>
(Int -> InlineValueText -> Int)
-> (InlineValueText -> Int) -> Hashable InlineValueText
Int -> InlineValueText -> Int
InlineValueText -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> InlineValueText -> Int
hashWithSalt :: Int -> InlineValueText -> Int
$chash :: InlineValueText -> Int
hash :: InlineValueText -> Int
Hashable)
  deriving (forall ann. InlineValueText -> Doc ann)
-> (forall ann. [InlineValueText] -> Doc ann)
-> Pretty InlineValueText
forall ann. [InlineValueText] -> Doc ann
forall ann. InlineValueText -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. InlineValueText -> Doc ann
pretty :: forall ann. InlineValueText -> Doc ann
$cprettyList :: forall ann. [InlineValueText] -> Doc ann
prettyList :: forall ann. [InlineValueText] -> Doc ann
Pretty via (ViaJSON InlineValueText)

instance Aeson.ToJSON InlineValueText where
  toJSON :: InlineValueText -> Value
toJSON (InlineValueText Range
arg0 Text
arg1) = [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
"range" Key -> Range -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= Range
arg0]
    ,[Key
"text" 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]]

instance Aeson.FromJSON InlineValueText where
  parseJSON :: Value -> Parser InlineValueText
parseJSON = String
-> (Object -> Parser InlineValueText)
-> Value
-> Parser InlineValueText
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"InlineValueText" ((Object -> Parser InlineValueText)
 -> Value -> Parser InlineValueText)
-> (Object -> Parser InlineValueText)
-> Value
-> Parser InlineValueText
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Range -> Text -> InlineValueText
InlineValueText (Range -> Text -> InlineValueText)
-> Parser Range -> Parser (Text -> InlineValueText)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser Range
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"range" Parser (Text -> InlineValueText)
-> Parser Text -> Parser InlineValueText
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
"text"