{-# LANGUAGE OverloadedStrings #-}
module Text.Pandoc.Lua.Marshal.LogMessage
( peekLogMessage
, pushLogMessage
, typeLogMessage
) where
import HsLua
import Text.Pandoc.Logging (LogMessage, showLogMessage)
import qualified Data.Aeson as Aeson
typeLogMessage :: LuaError e => DocumentedType e LogMessage
typeLogMessage :: forall e. LuaError e => DocumentedType e LogMessage
typeLogMessage = Name
-> [(Operation, DocumentedFunction e)]
-> [Member e (DocumentedFunction e) LogMessage]
-> DocumentedType e LogMessage
forall e a.
LuaError e =>
Name
-> [(Operation, DocumentedFunction e)]
-> [Member e (DocumentedFunction e) a]
-> DocumentedType e a
deftype Name
"pandoc LogMessage"
[ Operation
-> DocumentedFunction e -> (Operation, DocumentedFunction e)
forall e.
Operation
-> DocumentedFunction e -> (Operation, DocumentedFunction e)
operation Operation
Index (DocumentedFunction e -> (Operation, DocumentedFunction e))
-> DocumentedFunction e -> (Operation, DocumentedFunction e)
forall a b. (a -> b) -> a -> b
$ Name
-> (LogMessage -> LuaE e Text)
-> HsFnPrecursor e (LogMessage -> LuaE e Text)
forall a e. Name -> a -> HsFnPrecursor e a
defun Name
"__tostring"
### liftPure showLogMessage
HsFnPrecursor e (LogMessage -> LuaE e Text)
-> Parameter e LogMessage -> HsFnPrecursor e (LuaE e Text)
forall e a b.
HsFnPrecursor e (a -> b) -> Parameter e a -> HsFnPrecursor e b
<#> DocumentedType e LogMessage
-> Text -> Text -> Parameter e LogMessage
forall e a itemtype.
LuaError e =>
DocumentedTypeWithList e a itemtype
-> Text -> Text -> Parameter e a
udparam DocumentedType e LogMessage
forall e. LuaError e => DocumentedType e LogMessage
typeLogMessage Text
"msg" Text
"object"
HsFnPrecursor e (LuaE e Text)
-> FunctionResults e Text -> DocumentedFunction e
forall e a.
HsFnPrecursor e (LuaE e a)
-> FunctionResults e a -> DocumentedFunction e
=#> Pusher e Text -> TypeSpec -> Text -> FunctionResults e Text
forall e a. Pusher e a -> TypeSpec -> Text -> FunctionResults e a
functionResult Pusher e Text
forall e. Pusher e Text
pushText TypeSpec
"string" Text
"stringified log message"
, Operation
-> DocumentedFunction e -> (Operation, DocumentedFunction e)
forall e.
Operation
-> DocumentedFunction e -> (Operation, DocumentedFunction e)
operation (Name -> Operation
CustomOperation Name
"__tojson") (DocumentedFunction e -> (Operation, DocumentedFunction e))
-> DocumentedFunction e -> (Operation, DocumentedFunction e)
forall a b. (a -> b) -> a -> b
$ (LogMessage -> LuaE e ByteString)
-> HsFnPrecursor e (LogMessage -> LuaE e ByteString)
forall a e. a -> HsFnPrecursor e a
lambda
### liftPure Aeson.encode
HsFnPrecursor e (LogMessage -> LuaE e ByteString)
-> Parameter e LogMessage -> HsFnPrecursor e (LuaE e ByteString)
forall e a b.
HsFnPrecursor e (a -> b) -> Parameter e a -> HsFnPrecursor e b
<#> DocumentedType e LogMessage
-> Text -> Text -> Parameter e LogMessage
forall e a itemtype.
LuaError e =>
DocumentedTypeWithList e a itemtype
-> Text -> Text -> Parameter e a
udparam DocumentedType e LogMessage
forall e. LuaError e => DocumentedType e LogMessage
typeLogMessage Text
"msg" Text
"object"
HsFnPrecursor e (LuaE e ByteString)
-> FunctionResults e ByteString -> DocumentedFunction e
forall e a.
HsFnPrecursor e (LuaE e a)
-> FunctionResults e a -> DocumentedFunction e
=#> Pusher e ByteString
-> TypeSpec -> Text -> FunctionResults e ByteString
forall e a. Pusher e a -> TypeSpec -> Text -> FunctionResults e a
functionResult Pusher e ByteString
forall e. Pusher e ByteString
pushLazyByteString TypeSpec
"string" Text
"JSON encoded object"
]
[Member e (DocumentedFunction e) LogMessage]
forall a. Monoid a => a
mempty
pushLogMessage :: LuaError e => Pusher e LogMessage
pushLogMessage :: forall e. LuaError e => Pusher e LogMessage
pushLogMessage = DocumentedTypeWithList e LogMessage Void -> LogMessage -> LuaE e ()
forall e a itemtype.
LuaError e =>
DocumentedTypeWithList e a itemtype -> a -> LuaE e ()
pushUD DocumentedTypeWithList e LogMessage Void
forall e. LuaError e => DocumentedType e LogMessage
typeLogMessage
peekLogMessage :: LuaError e => Peeker e LogMessage
peekLogMessage :: forall e. LuaError e => Peeker e LogMessage
peekLogMessage = DocumentedTypeWithList e LogMessage Void -> Peeker e LogMessage
forall e a itemtype.
LuaError e =>
DocumentedTypeWithList e a itemtype -> Peeker e a
peekUD DocumentedTypeWithList e LogMessage Void
forall e. LuaError e => DocumentedType e LogMessage
typeLogMessage