diff options
Diffstat (limited to '')
-rw-r--r-- | lib/CheckMap.hs | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/lib/CheckMap.hs b/lib/CheckMap.hs index 016ec0b..eaeac55 100644 --- a/lib/CheckMap.hs +++ b/lib/CheckMap.hs @@ -1,5 +1,6 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} @@ -7,24 +8,23 @@ -- | Module that contains the high-level checking functions module CheckMap (loadAndLintMap, MapResult(..)) where -import Data.Aeson (ToJSON) -import Data.Map (Map, fromList, toList) -import Data.Maybe (mapMaybe) -import Data.Text (Text) -import qualified Data.Text as T -import qualified Data.Vector as V -import GHC.Generics (Generic) -import System.FilePath.Posix (splitPath) +import Data.Aeson (ToJSON) +import Data.Map (Map, fromList, toList) +import Data.Maybe (mapMaybe) +import Data.Text (Text) +import qualified Data.Text as T +import qualified Data.Vector as V +import GHC.Generics (Generic) -import LintWriter (LintResult (..), LintWriter, askContext, - lintToDep, resultToDeps, resultToLints, - runLintWriter) -import Properties (checkLayerProperty, checkMap) -import Tiled2 (Layer (layerName, layerProperties), - Tiledmap (tiledmapLayers), loadTiledmap) -import Types (Dep, Level (..), Lint (..), hint) -import Util (PrettyPrint (prettyprint), prettyprint) +import LintWriter (LintResult (..), LintWriter, askContext, + filterLintLevel, lintToDep, resultToDeps, + resultToLints, runLintWriter) +import Properties (checkLayerProperty, checkMap) +import Tiled2 (Layer (layerName, layerProperties), + Tiledmap (tiledmapLayers), loadTiledmap) +import Types (Dep, Level (..), Lint (..), hint, lintLevel) +import Util (PrettyPrint (prettyprint), prettyprint) @@ -79,14 +79,18 @@ checkLayer = do mapM_ checkLayerProperty (layerProperties layer) -- human-readable lint output, e.g. for consoles -instance PrettyPrint MapResult where - prettyprint mapResult = T.concat $ prettyGeneral <> prettyLayer +instance PrettyPrint (Level, MapResult) where + prettyprint (level, mapResult) = if prettyLints == "" + then " all good!\n" else prettyLints where + prettyLints = T.concat $ prettyGeneral <> prettyLayer -- TODO: this can be simplified further prettyLayer :: [Text] - prettyLayer = map - (prettyprint . snd) + prettyLayer = mapMaybe + (\(_,l) -> Just $ prettyprint (level, l)) (maybe [] toList . mapresultLayer $ mapResult) prettyGeneral :: [Text] - prettyGeneral = flip (<>) "\n" . prettyprint <$> mapresultGeneral mapResult - + prettyGeneral = map + ((<> "\n") . prettyprint) + . filterLintLevel level + $ mapresultGeneral mapResult |