From 68af04a4da6ba4ec61d1469337ce53457526d861 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Thu, 23 Sep 2021 04:34:02 +0200 Subject: prettier pretty printing and stuff also, configurable log level, which only required relaxing the type system once! --- lib/CheckMap.hs | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) (limited to 'lib/CheckMap.hs') 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 -- cgit v1.2.3