{- 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.MarkedStringWithLanguage 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.Types.Common

{-# DEPRECATED MarkedStringWithLanguage "use MarkupContent instead." #-}
{-|
@since 3.18.0
@proposed
@deprecated use MarkupContent instead.
-}
data MarkedStringWithLanguage = MarkedStringWithLanguage 
  { {-|

  -}
  MarkedStringWithLanguage -> Text
_language :: Data.Text.Text
  , {-|

  -}
  MarkedStringWithLanguage -> Text
_value :: Data.Text.Text
  }
  deriving stock (Int -> MarkedStringWithLanguage -> ShowS
[MarkedStringWithLanguage] -> ShowS
MarkedStringWithLanguage -> String
(Int -> MarkedStringWithLanguage -> ShowS)
-> (MarkedStringWithLanguage -> String)
-> ([MarkedStringWithLanguage] -> ShowS)
-> Show MarkedStringWithLanguage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MarkedStringWithLanguage -> ShowS
showsPrec :: Int -> MarkedStringWithLanguage -> ShowS
$cshow :: MarkedStringWithLanguage -> String
show :: MarkedStringWithLanguage -> String
$cshowList :: [MarkedStringWithLanguage] -> ShowS
showList :: [MarkedStringWithLanguage] -> ShowS
Show, MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
(MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool)
-> (MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool)
-> Eq MarkedStringWithLanguage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
== :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
$c/= :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
/= :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
Eq, Eq MarkedStringWithLanguage
Eq MarkedStringWithLanguage =>
(MarkedStringWithLanguage -> MarkedStringWithLanguage -> Ordering)
-> (MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool)
-> (MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool)
-> (MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool)
-> (MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool)
-> (MarkedStringWithLanguage
    -> MarkedStringWithLanguage -> MarkedStringWithLanguage)
-> (MarkedStringWithLanguage
    -> MarkedStringWithLanguage -> MarkedStringWithLanguage)
-> Ord MarkedStringWithLanguage
MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
MarkedStringWithLanguage -> MarkedStringWithLanguage -> Ordering
MarkedStringWithLanguage
-> MarkedStringWithLanguage -> MarkedStringWithLanguage
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 :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Ordering
compare :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Ordering
$c< :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
< :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
$c<= :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
<= :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
$c> :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
> :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
$c>= :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
>= :: MarkedStringWithLanguage -> MarkedStringWithLanguage -> Bool
$cmax :: MarkedStringWithLanguage
-> MarkedStringWithLanguage -> MarkedStringWithLanguage
max :: MarkedStringWithLanguage
-> MarkedStringWithLanguage -> MarkedStringWithLanguage
$cmin :: MarkedStringWithLanguage
-> MarkedStringWithLanguage -> MarkedStringWithLanguage
min :: MarkedStringWithLanguage
-> MarkedStringWithLanguage -> MarkedStringWithLanguage
Ord, (forall x.
 MarkedStringWithLanguage -> Rep MarkedStringWithLanguage x)
-> (forall x.
    Rep MarkedStringWithLanguage x -> MarkedStringWithLanguage)
-> Generic MarkedStringWithLanguage
forall x.
Rep MarkedStringWithLanguage x -> MarkedStringWithLanguage
forall x.
MarkedStringWithLanguage -> Rep MarkedStringWithLanguage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
MarkedStringWithLanguage -> Rep MarkedStringWithLanguage x
from :: forall x.
MarkedStringWithLanguage -> Rep MarkedStringWithLanguage x
$cto :: forall x.
Rep MarkedStringWithLanguage x -> MarkedStringWithLanguage
to :: forall x.
Rep MarkedStringWithLanguage x -> MarkedStringWithLanguage
Generic)
  deriving anyclass (MarkedStringWithLanguage -> ()
(MarkedStringWithLanguage -> ()) -> NFData MarkedStringWithLanguage
forall a. (a -> ()) -> NFData a
$crnf :: MarkedStringWithLanguage -> ()
rnf :: MarkedStringWithLanguage -> ()
NFData, Eq MarkedStringWithLanguage
Eq MarkedStringWithLanguage =>
(Int -> MarkedStringWithLanguage -> Int)
-> (MarkedStringWithLanguage -> Int)
-> Hashable MarkedStringWithLanguage
Int -> MarkedStringWithLanguage -> Int
MarkedStringWithLanguage -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> MarkedStringWithLanguage -> Int
hashWithSalt :: Int -> MarkedStringWithLanguage -> Int
$chash :: MarkedStringWithLanguage -> Int
hash :: MarkedStringWithLanguage -> Int
Hashable)
  deriving (forall ann. MarkedStringWithLanguage -> Doc ann)
-> (forall ann. [MarkedStringWithLanguage] -> Doc ann)
-> Pretty MarkedStringWithLanguage
forall ann. [MarkedStringWithLanguage] -> Doc ann
forall ann. MarkedStringWithLanguage -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. MarkedStringWithLanguage -> Doc ann
pretty :: forall ann. MarkedStringWithLanguage -> Doc ann
$cprettyList :: forall ann. [MarkedStringWithLanguage] -> Doc ann
prettyList :: forall ann. [MarkedStringWithLanguage] -> Doc ann
Pretty via (ViaJSON MarkedStringWithLanguage)

instance Aeson.ToJSON MarkedStringWithLanguage where
  toJSON :: MarkedStringWithLanguage -> Value
toJSON (MarkedStringWithLanguage Text
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
"language" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
Aeson..= Text
arg0]
    ,[Key
"value" 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 MarkedStringWithLanguage where
  parseJSON :: Value -> Parser MarkedStringWithLanguage
parseJSON = String
-> (Object -> Parser MarkedStringWithLanguage)
-> Value
-> Parser MarkedStringWithLanguage
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"MarkedStringWithLanguage" ((Object -> Parser MarkedStringWithLanguage)
 -> Value -> Parser MarkedStringWithLanguage)
-> (Object -> Parser MarkedStringWithLanguage)
-> Value
-> Parser MarkedStringWithLanguage
forall a b. (a -> b) -> a -> b
$ \Object
arg -> Text -> Text -> MarkedStringWithLanguage
MarkedStringWithLanguage (Text -> Text -> MarkedStringWithLanguage)
-> Parser Text -> Parser (Text -> MarkedStringWithLanguage)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
arg Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
Aeson..: Key
"language" Parser (Text -> MarkedStringWithLanguage)
-> Parser Text -> Parser MarkedStringWithLanguage
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
"value"