-> String
-> Result [(String, Instance.Instance)]
getInstances ktn body =
- loadJSArray body >>= mapM (parseInstance ktn . fromJSObject)
+ loadJSArray "Parsing instance data" body >>=
+ mapM (parseInstance ktn . fromJSObject)
-- | Parse a node list in JSON format.
getNodes :: String -> Result [(String, Node.Node)]
-getNodes body = loadJSArray body >>= mapM (parseNode . fromJSObject)
+getNodes body = loadJSArray "Parsing node data" body >>=
+ mapM (parseNode . fromJSObject)
-- | Construct an instance from a JSON object.
parseInstance :: [(String, Ndx)]
_ -> fail "Wrong JSON type"
-- | Converts a JSON message into an array of JSON objects.
-loadJSArray :: (Monad m) => String -> m [J.JSObject J.JSValue]
-loadJSArray = fromJResult . J.decodeStrict
+loadJSArray :: (Monad m)
+ => String -- ^ Operation description (for error reporting)
+ -> String -- ^ Input message
+ -> m [J.JSObject J.JSValue]
+loadJSArray s = annotateJResult s . J.decodeStrict
-- | Reads a the value of a key in a JSON object.
fromObj :: (J.JSON a, Monad m) => String -> [(String, J.JSValue)] -> m a