xml-picklers 0.3.5 → 0.3.6
raw patch · 2 files changed
+20/−3 lines, 2 files
Files
- src/Data/XML/Pickle/Basic.hs +19/−2
- xml-picklers.cabal +1/−1
src/Data/XML/Pickle/Basic.hs view
@@ -4,7 +4,8 @@ module Data.XML.Pickle.Basic where -import Control.Applicative ((<$>))+import Control.Applicative+import Control.Monad (ap) import qualified Control.Category as Cat import Control.Exception (Exception) import Data.Maybe@@ -31,6 +32,11 @@ -- instead of @Just mempty@ deriving (Functor, Show) ++instance Applicative (UnpickleResult t) where+ pure = return+ (<*>) = ap+ instance Monad (UnpickleResult t) where return x = Result x Nothing Result x r >>= f = case f x of@@ -72,11 +78,22 @@ printUPE :: UnpickleError -> [String] printUPE (ErrorMessage m) = [Text.unpack m]-printUPE (TraceStep t es) = ("-> " ++ showTr t) : printUPE es printUPE (Variants vs) = concat . zipWith (:) (map (\x -> show x ++ ")") [(1 :: Int)..]) . map (map ( " " ++)) $ (printUPE <$> vs)+printUPE (TraceStep t es) =+ let (n, es') = collapsSteps t es+ in ("-> " ++ showTr t+ ++ if n > 0+ then (" [x" ++ show (n+1) ++"]" )+ else "")+ : printUPE es'+ where+ collapsSteps t (TraceStep t' ns) | t == t'+ = let (n, ns') = collapsSteps t ns+ in (n+1, ns')+ collapsSteps _ es = (0, es) ppUnpickleError :: UnpickleError -> String ppUnpickleError e = "Error while unpickling:\n"
xml-picklers.cabal view
@@ -1,6 +1,6 @@ Cabal-Version: >= 1.2 Name: xml-picklers-Version: 0.3.5+Version: 0.3.6 Synopsis: XML picklers based on xml-types, ported from hexpat-pickle Description: A library of combinators that allows Haskell data structures to be pickled