diff options
author | stuebinm | 2022-03-06 17:56:30 +0100 |
---|---|---|
committer | stuebinm | 2022-03-06 17:57:30 +0100 |
commit | 83bfdb5600e4888648272eaf85c25f0af944a4f3 (patch) | |
tree | d0f90a6d47d6ec0e673fe233ba98a9d2cab97f0f /tiled | |
parent | bbe906ed445b77ad5dc0e1257ce652fe4a6e88cc (diff) |
make tiled even more strict
turns out aeson really REALLY likes to keep huge scientific numbers
around, which is great if your data structures consist largely of arrays
of (small) integers!
Diffstat (limited to '')
-rw-r--r-- | tiled/Data/Tiled.hs | 15 | ||||
-rw-r--r-- | tiled/Data/Tiled/Abstract.hs | 4 |
2 files changed, 10 insertions, 9 deletions
diff --git a/tiled/Data/Tiled.hs b/tiled/Data/Tiled.hs index 8a8036e..d3ccb26 100644 --- a/tiled/Data/Tiled.hs +++ b/tiled/Data/Tiled.hs @@ -1,4 +1,5 @@ {-# LANGUAGE AllowAmbiguousTypes #-} +{-# LANGUAGE BangPatterns #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} @@ -19,10 +20,10 @@ module Data.Tiled where import Universum -import Data.Aeson hiding (Object) -import qualified Data.Aeson as A -import Data.Aeson.Types (typeMismatch) -import Data.Char (toLower) +import Data.Aeson hiding (Object) +import qualified Data.Aeson as A +import Data.Aeson.Types (typeMismatch) +import Data.Char (toLower) -- | options for Aeson's generic encoding and parsing functions @@ -381,6 +382,6 @@ instance ToJSON Tiledmap where -- | Load a Tiled map from the given 'FilePath'. loadTiledmap :: FilePath -> IO (Either String Tiledmap) -loadTiledmap path = eitherDecodeFileStrict' path <&> \case - Left err -> Left err - Right tiledmap -> Right tiledmap +loadTiledmap path = eitherDecodeFileStrict' path >>= \case + Left err -> pure $ Left err + Right !tiledmap -> evaluateNF tiledmap <&> Right diff --git a/tiled/Data/Tiled/Abstract.hs b/tiled/Data/Tiled/Abstract.hs index 4b2e15d..4d6396a 100644 --- a/tiled/Data/Tiled/Abstract.hs +++ b/tiled/Data/Tiled/Abstract.hs @@ -4,10 +4,10 @@ module Data.Tiled.Abstract where import Universum -import qualified Data.Vector as V -import Data.Tiled (Layer (..), Object (..), Property (..), +import Data.Tiled (Layer (..), Object (..), Property (..), PropertyValue (..), Tile (..), Tiledmap (..), Tileset (..)) +import qualified Data.Vector as V class HasProperties a where getProperties :: a -> [Property] |