diff options
author | stuebinm | 2021-09-30 14:01:25 +0200 |
---|---|---|
committer | stuebinm | 2021-09-30 14:01:25 +0200 |
commit | e68d652323e454abf7e6c01ecedd919859cf9274 (patch) | |
tree | c64dc6b857b69d599b3b9e74923eca46301eb6ec /lib/Tiled2.hs | |
parent | ca8552c4eb69b2b8267fe0046320bccf9f547b52 (diff) |
nicer json output which leaks less haskell names
Diffstat (limited to 'lib/Tiled2.hs')
-rw-r--r-- | lib/Tiled2.hs | 9 |
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 |