From c61f8b2ac2ecf5ff96401e1a913d41a6d5a4a343 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Sat, 4 Dec 2021 03:01:37 +0100 Subject: refuse doubled names --- lib/Tiled2.hs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'lib/Tiled2.hs') diff --git a/lib/Tiled2.hs b/lib/Tiled2.hs index 7e8f773..44f2db7 100644 --- a/lib/Tiled2.hs +++ b/lib/Tiled2.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} @@ -24,6 +25,7 @@ import qualified Data.ByteString.Lazy as LB import Data.Char (toLower) import Data.Map (Map) import Data.Maybe (fromMaybe) +import Data.Proxy (Proxy) import Data.String (IsString (fromString)) import Data.Text (Text) import qualified Data.Text as T @@ -395,12 +397,23 @@ instance HasProperties Tiledmap where adjustProperties f tiledmap = tiledmap { tiledmapProperties = f (getProperties tiledmap) } +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 class IsProperty a where asProperty :: a -> PropertyValue -- cgit v1.2.3