Skip to content
Snippets Groups Projects
Select Git revision
  • ebdf99c01356a66c8f40c8b6c9eda775d2c1852c
  • develop default protected
  • ical-export
  • feature/audit_log
  • fix/index
  • badge-redeem-404
  • 720-schedule_source
  • room-docu
  • chore/event-views
  • 511-schedule-foo-fixed
  • 607-schedule-versions
  • deploy/curl-verbose
  • fix/public-badge-access-rights
  • 445-schedule-redirects
  • 623-wiki-im-baustellenmodus-sollte-mal-als-wiki-admin-trotzdem-seiten-anlegen-bearbeiten-konnen
  • fix/registration_mail_subject
  • feature/conference-query-set
  • feature/568-habitatmanagement
  • feat/unit-integration-tests
  • camp23-prod
  • production
  • prod-2024-12-27_20-15
  • prod-2024-12-27_16-37
  • prod-2024-12-27_16-01
  • prod-2024-12-27_13-29
  • prod-2024-12-27_00-34
  • prod-2024-12-26_21-45
  • prod-2024-12-26_13-12
  • prod-2024-12-26_00-21
  • prod-2024-12-25_21-04
  • prod-2024-12-25_15-54
  • prod-2024-12-25_01-29
  • prod-2024-12-24_14-48
  • prod-2024-12-23_23-39
  • prod-2024-12-22_21-12
  • prod-2024-12-22_17-25
  • prod-2024-12-22_01-34
  • prod-2024-12-22_00-55
  • prod-2024-12-21_13-42
  • prod-2024-12-21_10-44
  • prod-2024-12-20_12-25
41 results

check_django.sh

Blame
  • Forked from hub / hub
    Source project has a limited visibility.
    TiledAbstract.hs 2.58 KiB
    {-# LANGUAGE OverloadedStrings #-}
    
    module TiledAbstract where
    
    import           Data.Maybe  (fromMaybe)
    import           Data.Proxy  (Proxy)
    import           Data.Text   (Text)
    import qualified Data.Vector as V
    import           Tiled       (Layer (..), Object (..), Property (..),
                                  PropertyValue (..), Tile (..), Tiledmap (..),
                                  Tileset (..), mkTiledId, GlobalId)
    import Data.Vector (Vector)
    import Util (showText)
    
    class HasProperties a where
      getProperties :: a -> [Property]
      adjustProperties :: ([Property] -> Maybe [Property]) -> a -> a
    
    instance HasProperties Layer where
      getProperties = fromMaybe mempty . layerProperties
      adjustProperties f layer = layer
        { layerProperties = f (getProperties layer) }
    
    instance HasProperties Tileset where
      getProperties = fromMaybe mempty . tilesetProperties
      adjustProperties f tileset = tileset
        { tilesetProperties = f (getProperties tileset) }
    
    instance HasProperties Tile where
      getProperties = V.toList . fromMaybe mempty . tileProperties
      adjustProperties f tile = tile
        { tileProperties = (fmap V.fromList . f) (getProperties tile) }
    
    instance HasProperties Object where
      getProperties = V.toList . fromMaybe mempty . objectProperties
      adjustProperties f obj = obj
        { objectProperties = (fmap V.fromList . f) (getProperties obj) }
    
    instance HasProperties Tiledmap where
      getProperties = fromMaybe mempty . tiledmapProperties
      adjustProperties f tiledmap = tiledmap
        { tiledmapProperties = f (getProperties tiledmap) }
    
    class HasData a where
      getData :: a -> Maybe (Vector GlobalId)
    instance HasData Layer where
      getData = layerData
    instance HasData Tile where
      getData _ = Nothing
    
    
    class HasTypeName a where
      typeName :: Proxy a -> Text
    instance HasTypeName Layer where
      typeName _ = "layer"
    instance HasTypeName Tileset where
      typeName _ = "tileset"
    instance HasTypeName Property where
      typeName _ = "property"
    
    
    class HasName a where
      getName :: a -> Text
    instance HasName Layer where
      getName = layerName
    instance HasName Tileset where
      getName = tilesetName
    instance HasName Property where
      getName (Property n _) = n
    instance HasName Tile where
      getName tile = "[tile with global id " <> showText (tileId tile) <> "]"
    
    
    class IsProperty a where
      asProperty :: a -> PropertyValue
    instance IsProperty PropertyValue where
      asProperty = id
      {-# INLINE asProperty #-}
    instance IsProperty Text where
      asProperty = StrProp
      {-# INLINE asProperty #-}
    
    
    layerIsEmpty :: HasData a => a -> Bool
    layerIsEmpty layer = case getData layer of
      Nothing -> True
      Just d  -> all ((==) $ mkTiledId 0) d