Skip to content
Snippets Groups Projects
Select Git revision
  • 4caded904c54d1cd85bf54239517e93650a404f5
  • main default protected
  • 75389691-a67c-422a-91e9-aa58bfb5-main-patch-32205
  • test-pipe
  • extended-scripts
  • structured-badges
  • guix-pipeline
  • cabal-pipeline
8 results

Properties.hs

Blame
  • Properties.hs 30.87 KiB
    {-# LANGUAGE DataKinds           #-}
    {-# LANGUAGE FlexibleContexts    #-}
    {-# LANGUAGE LambdaCase          #-}
    {-# LANGUAGE MultiWayIf          #-}
    {-# LANGUAGE NamedFieldPuns      #-}
    {-# LANGUAGE OverloadedStrings   #-}
    {-# LANGUAGE RecordWildCards     #-}
    {-# LANGUAGE ScopedTypeVariables #-}
    {-# LANGUAGE TupleSections       #-}
    {-# LANGUAGE TypeApplications    #-}
    {-# LANGUAGE TypeFamilies        #-}
    
    -- | Contains checks for custom ties of the map json
    module Properties (checkMap, checkTileset, checkLayer) where
    
    import           Universum           hiding (intercalate, isPrefixOf)
    
    import           Data.Text           (intercalate, isPrefixOf)
    import qualified Data.Text           as T
    import           Data.Tiled          (Layer (..), Object (..), Property (..),
                                          PropertyValue (..), Tile (..),
                                          Tiledmap (..), Tileset (..))
    import           Data.Tiled.Abstract (HasData (..), HasName (..),
                                          HasProperties (..), HasTypeName (..),
                                          IsProperty (..), layerIsEmpty)
    import qualified Data.Vector         as V
    import           Util                (mkProxy, naiveEscapeHTML, prettyprint)
    
    import           Badges              (Badge (Badge),
                                          BadgeArea (BadgePoint, BadgeRect),
                                          BadgeToken, parseToken)
    import           Data.List           ((\\))
    import qualified Data.Set            as S
    import           Data.Text.Metrics   (damerauLevenshtein)
    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, offersCWs, offersJitsi)
    import           Paths               (PathResult (..), RelPath (..),
                                          getExtension, isOldStyle, parsePath)
    import           Types               (Dep (Link, Local, LocalMap, MapLink))
    import           Uris                (SubstError (..), applySubsts)
    
    
    knownMapProperties :: Vector Text
    knownMapProperties = V.fromList
      [ "mapName", "mapDescription", "mapCopyright", "mapLink", "script"
      , "contentWarnings" ]
    
    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"
      , "playAudio", "audioLoop", "audioVolumne"
      , "openWebsite", "openWebsiteTrigger", "openWebsiteTriggerMessage", "openTag"
      , "exitUrl", "startLayer", "silent", "getBadge", "zone", "name", "doorVariable"
      , "bindVariable", "bellVariable", "code", "openTriggerMessage"
      , "closeTriggerMessage", "autoOpen", "autoClose", "bellButtonText", "bellPopup"