summaryrefslogtreecommitdiff
path: root/lib/Tiled2.hs
diff options
context:
space:
mode:
authorstuebinm2021-09-30 14:01:25 +0200
committerstuebinm2021-09-30 14:01:25 +0200
commite68d652323e454abf7e6c01ecedd919859cf9274 (patch)
treec64dc6b857b69d599b3b9e74923eca46301eb6ec /lib/Tiled2.hs
parentca8552c4eb69b2b8267fe0046320bccf9f547b52 (diff)
nicer json output which leaks less haskell names
Diffstat (limited to '')
-rw-r--r--lib/Tiled2.hs9
1 files changed, 6 insertions, 3 deletions
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