From 596096823872aaa491e1a208f70da820322a766f Mon Sep 17 00:00:00 2001
From: stuebinm <stuebinm@disroot.org>
Date: Mon, 28 Feb 2022 00:39:54 +0100
Subject: [PATCH] separate tiled modules out into own package

---
 lib/CheckDir.hs                               |  2 +-
 lib/CheckMap.hs                               |  2 +-
 lib/LayerData.hs                              |  2 +-
 lib/LintWriter.hs                             |  2 +-
 lib/Properties.hs                             | 11 ++++----
 lib/Util.hs                                   |  2 +-
 package.yaml                                  | 10 ++++++++
 {lib => tiled/Data}/Tiled.hs                  |  3 ++-
 .../Data/Tiled/Abstract.hs                    |  4 +--
 walint.cabal                                  | 25 ++++++++++++++++---
 10 files changed, 46 insertions(+), 17 deletions(-)
 rename {lib => tiled/Data}/Tiled.hs (99%)
 rename lib/TiledAbstract.hs => tiled/Data/Tiled/Abstract.hs (96%)

diff --git a/lib/CheckDir.hs b/lib/CheckDir.hs
index a19a412..300cf00 100644
--- a/lib/CheckDir.hs
+++ b/lib/CheckDir.hs
@@ -41,7 +41,7 @@ import           System.FilePath        (splitPath, (</>))
 import qualified System.FilePath        as FP
 import           System.FilePath.Posix  (takeDirectory)
 import           Text.Dot               (showDot)
-import           Tiled                  (Tiledmap)
+import           Data.Tiled                  (Tiledmap)
 import           Types                  (Dep (Local, LocalMap), Hint (Hint),
                                          Level (..), hintLevel)
 import           Util                   (PrettyPrint (prettyprint), ellipsis)
diff --git a/lib/CheckMap.hs b/lib/CheckMap.hs
index 23267a8..9dc3a4c 100644
--- a/lib/CheckMap.hs
+++ b/lib/CheckMap.hs
@@ -32,7 +32,7 @@ import           LintWriter       (LintResult, invertLintResult,
                                    runLintWriter)
 import           Properties       (checkLayer, checkMap, checkTileset)
 import           System.FilePath  (takeFileName)
-import           Tiled            (Layer (layerLayers, layerName),
+import           Data.Tiled            (Layer (layerLayers, layerName),
                                    LoadResult (..),
                                    Tiledmap (tiledmapLayers, tiledmapTilesets),
                                    loadTiledmap)
diff --git a/lib/LayerData.hs b/lib/LayerData.hs
index 6956c92..46d6449 100644
--- a/lib/LayerData.hs
+++ b/lib/LayerData.hs
@@ -8,7 +8,7 @@ import           Control.Monad.Zip (mzipWith)
 import           Data.Set          (insert)
 import           Data.Vector       (maximum, uncons)
 import qualified Text.Show         as TS
-import           Tiled             (GlobalId (unGlobalId), Layer (..))
+import           Data.Tiled             (GlobalId (unGlobalId), Layer (..))
 import           Util              (PrettyPrint (..))
 
 -- | A collision between two layers of the given names.
diff --git a/lib/LintWriter.hs b/lib/LintWriter.hs
index d0c6c4e..b55b16e 100644
--- a/lib/LintWriter.hs
+++ b/lib/LintWriter.hs
@@ -48,7 +48,7 @@ import           Universum
 import           Badges        (Badge)
 import           Data.Map      (fromListWith)
 import           LintConfig    (LintConfig')
-import           TiledAbstract (HasName (getName))
+import           Data.Tiled.Abstract (HasName (getName))
 import           Types         (Dep, Hint, Level (..), Lint (..), hint,
                                 lintsToHints)
 
diff --git a/lib/Properties.hs b/lib/Properties.hs
index eb31403..846430b 100644
--- a/lib/Properties.hs
+++ b/lib/Properties.hs
@@ -18,14 +18,13 @@ import           Universum         hiding (intercalate, isPrefixOf)
 import           Data.Text         (intercalate, isInfixOf, isPrefixOf)
 import qualified Data.Text         as T
 import qualified Data.Vector       as V
-import           Tiled             (Layer (..), Object (..), Property (..),
+import           Data.Tiled             (Layer (..), Object (..), Property (..),
                                     PropertyValue (..), Tile (..),
                                     Tiledmap (..), Tileset (..))
-import           TiledAbstract     (HasData (..), HasName (..),
-                                    HasProperties (..), HasTypeName (..),
-                                    IsProperty (..), layerIsEmpty)
-import           Util              (mkProxy, naiveEscapeHTML, prettyprint,
-                                    showText)
+import           Data.Tiled.Abstract     (HasName (..), HasProperties (..),
+                                    HasTypeName (..), IsProperty (..), HasData (..))
+import           Util              (layerIsEmpty, mkProxy, naiveEscapeHTML,
+                                    prettyprint)
 
 import           Badges            (Badge (Badge),
                                     BadgeArea (BadgePoint, BadgeRect),
diff --git a/lib/Util.hs b/lib/Util.hs
index 1ffbbe5..d5e9e98 100644
--- a/lib/Util.hs
+++ b/lib/Util.hs
@@ -17,7 +17,7 @@ import           Universum
 import           Data.Aeson as Aeson
 import qualified Data.Set   as S
 import qualified Data.Text  as T
-import           Tiled      (Layer (layerData), PropertyValue (..),
+import           Data.Tiled      (Layer (layerData), PropertyValue (..),
                              Tileset (tilesetName), layerName, mkTiledId)
 
 -- | helper function to create proxies
diff --git a/package.yaml b/package.yaml
index f9498d6..53ef4c2 100644
--- a/package.yaml
+++ b/package.yaml
@@ -15,10 +15,20 @@ dependencies:
   - bytestring
   - text
 
+internal-libraries:
+  tiled:
+    source-dirs: 'tiled'
+    dependencies:
+      - vector
+    exposed-modules:
+      - Data.Tiled
+      - Data.Tiled.Abstract
+
 library:
   source-dirs: 'lib'
   dependencies:
     - containers
+    - tiled
     - text
     - vector
     - transformers
diff --git a/lib/Tiled.hs b/tiled/Data/Tiled.hs
similarity index 99%
rename from lib/Tiled.hs
rename to tiled/Data/Tiled.hs
index 3162dfd..046a080 100644
--- a/lib/Tiled.hs
+++ b/tiled/Data/Tiled.hs
@@ -15,7 +15,7 @@
 -- cover some of the types and records that are available in the format. For
 -- those you should read the TMX documentation at
 -- http://doc.mapeditor.org/en/latest/reference/tmx-map-format/
-module Tiled where
+module Data.Tiled where
 
 import           Universum
 
@@ -383,6 +383,7 @@ instance ToJSON Tiledmap where
   toJSON = genericToJSON (aesonOptions 8)
 
 data LoadResult = Loaded Tiledmap | IOErr String | DecodeErr String
+  deriving Show
 
 -- | Load a Tiled map from the given 'FilePath'.
 loadTiledmap :: FilePath -> IO LoadResult
diff --git a/lib/TiledAbstract.hs b/tiled/Data/Tiled/Abstract.hs
similarity index 96%
rename from lib/TiledAbstract.hs
rename to tiled/Data/Tiled/Abstract.hs
index f55e75e..5a5b7c0 100644
--- a/lib/TiledAbstract.hs
+++ b/tiled/Data/Tiled/Abstract.hs
@@ -1,11 +1,11 @@
 {-# LANGUAGE OverloadedStrings #-}
 
-module TiledAbstract where
+module Data.Tiled.Abstract where
 
 import           Universum
 
 import qualified Data.Vector as V
-import           Tiled       (GlobalId, Layer (..), Object (..), Property (..),
+import           Data.Tiled  (GlobalId, Layer (..), Object (..), Property (..),
                               PropertyValue (..), Tile (..), Tiledmap (..),
                               Tileset (..), mkTiledId)
 import           Util        (showText)
diff --git a/walint.cabal b/walint.cabal
index 94d79f5..cd79a59 100644
--- a/walint.cabal
+++ b/walint.cabal
@@ -1,4 +1,4 @@
-cabal-version: 1.12
+cabal-version: 2.0
 
 -- This file has been generated from package.yaml by hpack version 0.34.5.
 --
@@ -28,8 +28,6 @@ library
       LintWriter
       Paths
       Properties
-      Tiled
-      TiledAbstract
       Uris
       Paths_walint
   hs-source-dirs:
@@ -53,12 +51,33 @@ library
     , regex-tdfa
     , text
     , text-metrics
+    , tiled
     , transformers
     , universum
     , uri-encode
     , vector
   default-language: Haskell2010
 
+library tiled
+  exposed-modules:
+      Data.Tiled
+      Data.Tiled.Abstract
+  other-modules:
+      Paths_walint
+  hs-source-dirs:
+      tiled
+  default-extensions:
+      NoImplicitPrelude
+  ghc-options: -Wall -Wno-name-shadowing -Wno-unticked-promoted-constructors
+  build-depends:
+      aeson
+    , base
+    , bytestring
+    , text
+    , universum
+    , vector
+  default-language: Haskell2010
+
 executable walint
   main-is: Main.hs
   other-modules:
-- 
GitLab