From e68d652323e454abf7e6c01ecedd919859cf9274 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Thu, 30 Sep 2021 14:01:25 +0200 Subject: nicer json output which leaks less haskell names --- lib/Tiled2.hs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'lib/Tiled2.hs') diff --git a/lib/Tiled2.hs b/lib/Tiled2.hs index a729083..7e462cc 100644 --- a/lib/Tiled2.hs +++ b/lib/Tiled2.hs @@ -441,11 +441,14 @@ instance ToJSON Tiledmap where , "nextobjectid" .= tiledmapNextobjectid ] +data LoadResult = Loaded Tiledmap | IOErr String | DecodeErr String -- | Load a Tiled map from the given 'FilePath'. -loadTiledmap :: FilePath -> IO (Either String Tiledmap) +loadTiledmap :: FilePath -> IO LoadResult loadTiledmap path = do res <- try (BS.readFile path) pure $ case res of - Right file -> mapLeft ("Json decode error or not a Tiled map: " <>) . eitherDecode . LB.fromStrict $ file - Left (err :: SomeException) -> Left $ "IO Error: " <> show err + Right file -> case eitherDecode . LB.fromStrict $ file of + Left err -> DecodeErr err + Right map -> Loaded map + Left (err :: SomeException) -> IOErr $ show err -- cgit v1.2.3