Browse Source

Merge pull request #110 from l29ah/xpStreamElement-nonza

don't error if xpStanza fails to grok the input
master
Philipp Balzarek 8 years ago committed by GitHub
parent
commit
e826283a27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      source/Network/Xmpp/Marshal.hs

18
source/Network/Xmpp/Marshal.hs

@ -23,15 +23,15 @@ xpNonemptyText :: PU Text NonemptyText
xpNonemptyText = ("xpNonemptyText" , "") <?+> xpWrap Nonempty fromNonempty xpText xpNonemptyText = ("xpNonemptyText" , "") <?+> xpWrap Nonempty fromNonempty xpText
xpStreamElement :: PU [Node] (Either StreamErrorInfo XmppElement) xpStreamElement :: PU [Node] (Either StreamErrorInfo XmppElement)
xpStreamElement = xpEither xpStreamError $ xpStreamElement = xpEither xpStreamError $ xpAlt elemSel
xpWrap (\v -> case v of [ xpWrap XmppStanza (\(XmppStanza x) -> x) xpStanza
Left l -> XmppStanza l , xpWrap XmppNonza (\(XmppNonza x) -> x) xpElemVerbatim
Right r -> XmppNonza r ]
) where
( \v -> case v of -- Selector for which pickler to execute above.
XmppStanza l -> Left l elemSel :: XmppElement -> Int
XmppNonza r -> Right r) elemSel (XmppStanza _) = 0
$ xpEither xpStanza xpElemVerbatim elemSel (XmppNonza _) = 1
xpStreamStanza :: PU [Node] (Either StreamErrorInfo Stanza) xpStreamStanza :: PU [Node] (Either StreamErrorInfo Stanza)
xpStreamStanza = xpEither xpStreamError xpStanza xpStreamStanza = xpEither xpStreamError xpStanza

Loading…
Cancel
Save