diff options
| author | Daniel Gnoutcheff <gnoutchd@softwarefreedom.org> | 2021-09-15 11:53:04 -0400 | 
|---|---|---|
| committer | Daniel Gnoutcheff <gnoutchd@softwarefreedom.org> | 2021-09-15 11:53:04 -0400 | 
| commit | b97904c85f21bfb485f110b5b4f84abc5d6b0b66 (patch) | |
| tree | f48a31e0e54b4107d6062ae9f127850797649e96 | |
| parent | 916a68adab4e3e021179be67d79db050f7198070 (diff) | |
Unescape input messages
| -rw-r--r-- | app/Main.hs | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/app/Main.hs b/app/Main.hs index eab879e..c5275b6 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -13,7 +13,7 @@ import Data.List.Split (chop)  import qualified Network.XmlRpc.DTD_XMLRPC as XR  import Text.XML.HaXml.XmlContent (Document (..), toXml, fromXml)  import qualified Text.XML.HaXml.ByteStringPP as XPP -import Text.XML.HaXml.Escape (xmlEscape, stdXmlEscaper) +import Text.XML.HaXml.Escape (xmlEscape, xmlUnEscape, stdXmlEscaper)  import qualified Text.Pandoc as P  -- Modified version of XMLParse.document that doesn't wait for anything after @@ -50,7 +50,7 @@ plugin (i:is) = case parseRpcCall i of  type RpcArgs = [(String, XR.Value_)]  parseRpcCall :: Document Posn -> Maybe (String, RpcArgs) -parseRpcCall doc = case fromXml doc of +parseRpcCall doc = case fromXml (unEscapeDoc doc) of    Right (XR.MethodCall (XR.MethodName method) mArgs) ->      Just . (,) method $ case mArgs of        Just (XR.Params params) -> flattenParams params @@ -64,6 +64,9 @@ parseRpcCall doc = case fromXml doc of                  ) = (key, val) : flattenParams ps    flattenParams _ = error "args not in named-value format" +unEscapeDoc :: Document i -> Document i +unEscapeDoc (Document p s e m) = Document p s (xmlUnEscape stdXmlEscaper e) m +  hookCall :: Document ()  hookCall = toXml False . XR.MethodCall (XR.MethodName "hook") . Just .    XR.Params . map stringParam $ | 
