From 875b1e695a0f520ff791cbf9e785c4e1c13d6225 Mon Sep 17 00:00:00 2001 From: Sergey Alirzaev Date: Sat, 3 Feb 2018 04:16:36 +0300 Subject: [PATCH] don't error if xpStanza fails to grok the input fixes #109 --- source/Network/Xmpp/Marshal.hs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/Network/Xmpp/Marshal.hs b/source/Network/Xmpp/Marshal.hs index cca8bf5..bebbf03 100644 --- a/source/Network/Xmpp/Marshal.hs +++ b/source/Network/Xmpp/Marshal.hs @@ -23,15 +23,15 @@ xpNonemptyText :: PU Text NonemptyText xpNonemptyText = ("xpNonemptyText" , "") xpWrap Nonempty fromNonempty xpText xpStreamElement :: PU [Node] (Either StreamErrorInfo XmppElement) -xpStreamElement = xpEither xpStreamError $ - xpWrap (\v -> case v of - Left l -> XmppStanza l - Right r -> XmppNonza r - ) - ( \v -> case v of - XmppStanza l -> Left l - XmppNonza r -> Right r) - $ xpEither xpStanza xpElemVerbatim +xpStreamElement = xpEither xpStreamError $ xpAlt elemSel + [ xpWrap XmppStanza (\(XmppStanza x) -> x) xpStanza + , xpWrap XmppNonza (\(XmppNonza x) -> x) xpElemVerbatim + ] + where + -- Selector for which pickler to execute above. + elemSel :: XmppElement -> Int + elemSel (XmppStanza _) = 0 + elemSel (XmppNonza _) = 1 xpStreamStanza :: PU [Node] (Either StreamErrorInfo Stanza) xpStreamStanza = xpEither xpStreamError xpStanza