-- | Like @<https://hackage.haskell.org/package/aeson-qq/docs/Data-Aeson-QQ.html Data.Aeson.QQ>@ but without interpolation.moduleData.Aeson.QQ.Simple(aesonQQ )whereimportData.Aeson importqualifiedData.TextasTimportqualifiedData.Text.EncodingasTEimportLanguage.Haskell.THimportLanguage.Haskell.TH.QuoteimportLanguage.Haskell.TH.Syntax(Lift(..))-- | Converts a string representation of a JSON value into 'Data.Aeson.Value' at compile-time.---- @-- {-\# LANGUAGE QuasiQuotes \#-}---- import Data.Aeson (Value)-- import Data.Aeson.QQ.Simple---- joe :: 'Value'-- joe = [aesonQQ|{ "name": \"Joe\", "age": 12 }|]-- @aesonQQ ::QuasiQuoteraesonQQ :: QuasiQuoter
aesonQQ =QuasiQuoter{quoteExp :: String -> Q Exp
quoteExp=String -> Q Exp
aesonExp ,quotePat :: String -> Q Pat
quotePat=Q Pat -> String -> Q Pat
forall a b. a -> b -> a
const(Q Pat -> String -> Q Pat) -> Q Pat -> String -> Q Pat
forall a b. (a -> b) -> a -> b
$String -> Q Pat
forall a. HasCallStack => String -> a
errorString
"No quotePat defined for jsonQQ",quoteType :: String -> Q Type
quoteType=Q Type -> String -> Q Type
forall a b. a -> b -> a
const(Q Type -> String -> Q Type) -> Q Type -> String -> Q Type
forall a b. (a -> b) -> a -> b
$String -> Q Type
forall a. HasCallStack => String -> a
errorString
"No quoteType defined for jsonQQ",quoteDec :: String -> Q [Dec]
quoteDec=Q [Dec] -> String -> Q [Dec]
forall a b. a -> b -> a
const(Q [Dec] -> String -> Q [Dec]) -> Q [Dec] -> String -> Q [Dec]
forall a b. (a -> b) -> a -> b
$String -> Q [Dec]
forall a. HasCallStack => String -> a
errorString
"No quoteDec defined for jsonQQ"}aesonExp ::String->ExpQaesonExp :: String -> Q Exp
aesonExp String
txt =caseByteString -> Either String Value
forall a. FromJSON a => ByteString -> Either String a
eitherDecodeStrict (ByteString -> Either String Value)
-> ByteString -> Either String Value
forall a b. (a -> b) -> a -> b
$Text -> ByteString
TE.encodeUtf8(Text -> ByteString) -> Text -> ByteString
forall a b. (a -> b) -> a -> b
$String -> Text
T.packString
txt ofLeftString
err ->String -> Q Exp
forall a. HasCallStack => String -> a
error(String -> Q Exp) -> String -> Q Exp
forall a b. (a -> b) -> a -> b
$String
"Error in aesonExp: "String -> String -> String
forall a. [a] -> [a] -> [a]
++String -> String
forall a. Show a => a -> String
showString
err RightValue
val ->Value -> Q Exp
forall t (m :: * -> *). (Lift t, Quote m) => t -> m Exp
forall (m :: * -> *). Quote m => Value -> m Exp
lift(Value
val ::Value )

AltStyle によって変換されたページ (->オリジナル) /