summaryrefslogtreecommitdiff
path: root/lib/CheckMap.hs
diff options
context:
space:
mode:
authorstuebinm2021-09-20 01:26:27 +0200
committerstuebinm2021-09-20 01:26:27 +0200
commit968038c403e71b98a8f55a4d79e64beca8349ab3 (patch)
tree4a53190972b3f5a7c12a9a463856d7d4600fe75f /lib/CheckMap.hs
parent33d2b0c5da01c48c8106876665e646e1d2f560e9 (diff)
lint general map properties
Diffstat (limited to 'lib/CheckMap.hs')
-rw-r--r--lib/CheckMap.hs19
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/CheckMap.hs b/lib/CheckMap.hs
index 9908fdd..08932b4 100644
--- a/lib/CheckMap.hs
+++ b/lib/CheckMap.hs
@@ -17,10 +17,12 @@ import qualified Data.Vector as V
import GHC.Generics (Generic)
import LintWriter (LintResult (..), LintWriter,
- lintsToDeps)
-import Properties (checkProperty)
+ lintsToDeps, resultToLints,
+ runLintWriter)
+import Properties (checkLayerProperty,
+ checkMapProperty)
import Tiled2 (Layer (layerName, layerProperties),
- Tiledmap (tiledmapLayers),
+ Tiledmap (tiledmapLayers, tiledmapProperties),
loadTiledmap)
import Types (Dep, Level (..), Lint (..), hint,
lintLevel)
@@ -55,7 +57,7 @@ loadAndLintMap path = loadTiledmap path >>= pure . \case
runLinter :: Tiledmap -> MapResult ()
runLinter tiledmap = MapResult
{ mapresultLayer = Just layerMap
- , mapresultGeneral = [] -- no general lints for now
+ , mapresultGeneral = propertyLints -- no general lints for now
, mapresultDepends = concatMap (lintsToDeps . snd) layer
}
where
@@ -64,10 +66,15 @@ runLinter tiledmap = MapResult
layer = V.toList . V.map runCheck $ tiledmapLayers tiledmap
where runCheck l = (layerName l, LintResult $ runWriterT (checkLayer l))
+ -- lints collected from properties
+ propertyLints = runLintWriter
+ $ mapM_ (checkMapProperty tiledmap) (tiledmapProperties tiledmap)
+
+
-- | collect lints on a single map layer
checkLayer :: Layer -> LintWriter ()
checkLayer layer =
- mapM_ (checkProperty layer) (layerProperties layer)
+ mapM_ (checkLayerProperty layer) (layerProperties layer)
-- human-readable lint output, e.g. for consoles
instance PrettyPrint a => PrettyPrint (MapResult a) where
@@ -79,7 +86,7 @@ instance PrettyPrint a => PrettyPrint (MapResult a) where
(uncurry showResult)
(maybe [] toList . mapresultLayer $ mapResult)
prettyGeneral :: [Text]
- prettyGeneral = prettyprint <$> mapresultGeneral mapResult
+ prettyGeneral = flip (<>) "\n" . prettyprint <$> mapresultGeneral mapResult
-- TODO: possibly expand this to something more detailed?