Select Git revision
Forked from
hub / hub
Source project has a limited visibility.
Properties.hs 30.85 KiB
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE TypeApplications #-}
-- | Contains checks for custom ties of the map json
module Properties (checkMap, checkTileset, checkLayer) where
import Control.Monad (forM, forM_, unless, when)
import Data.Text (Text, intercalate, isPrefixOf, isInfixOf)
import qualified Data.Text as T
import qualified Data.Vector as V
import Tiled (Layer (..), Object (..), Property (..),
PropertyValue (..), Tile (..),
Tiledmap (..), Tileset (..))
import TiledAbstract (HasName (..), HasProperties (..),
HasTypeName (..), IsProperty (..))
import Util (layerIsEmpty, mkProxy, naiveEscapeHTML,
prettyprint, showText)
import Badges (Badge (Badge),
BadgeArea (BadgePoint, BadgeRect),
BadgeToken, parseToken)
import Data.Data (Proxy (Proxy))
import Data.Functor ((<&>))
import Data.List ((\\))
import Data.Maybe (fromMaybe, isJust)
import Data.Set (Set)
import qualified Data.Set as S
import Data.Text.Metrics (damerauLevenshtein)
import Data.Vector (Vector)
import GHC.TypeLits (KnownSymbol)
import LayerData (Collision, layerOverlaps)
import LintConfig (LintConfig (..))
import LintWriter (LintWriter, adjust, askContext,
askFileDepth, complain, dependsOn, forbid,
lintConfig, offersBadge, offersEntrypoint,
suggest, warn, zoom)
import Paths (PathResult (..), RelPath (..), getExtension,
isOldStyle, parsePath)
import Types (Dep (Link, Local, LocalMap, MapLink))
import Uris (SubstError (..), applySubsts, parseUri, extractDomain)
knownMapProperties :: Vector Text
knownMapProperties = V.fromList
[ "mapName", "mapDescription", "mapCopyright", "mapLink", "script" ]
knownTilesetProperties :: Vector Text
knownTilesetProperties = V.fromList
[ "tilesetCopyright", "collides"]
knownObjectProperties :: Vector Text
knownObjectProperties = V.fromList
[ "name", "url", "getBadge", "soundRadius", "default", "persist", "openLayer"
, "closeLayer", "door", "bell", "openSound", "closeSound", "bellSound"
, "allowapi"]
knownTileLayerProperites :: Vector Text
knownTileLayerProperites = V.fromList
[ "jitsiRoom", "jitsiTrigger", "jitsiTriggerMessage", "jitsiWidth", "bbbRoom"
, "bbbTrigger", "bbbTriggerMessage", "playAudio", "audioLoop", "audioVolumne"
, "openWebsite", "openWebsiteTrigger", "openWebsiteTriggerMessage", "openTag"
, "exitUrl", "startLayer", "silent", "getBadge", "zone", "name", "doorVariable"