Move decode/encodeModule to Oracles.ModuleFiles.
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Thu, 5 May 2016 03:56:09 +0000 (04:56 +0100)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Thu, 5 May 2016 03:56:09 +0000 (04:56 +0100)
src/Base.hs
src/Oracles/ModuleFiles.hs
src/Rules/Selftest.hs

index a26fea1..1fcbae7 100644 (file)
@@ -22,8 +22,7 @@ module Base (
 
     -- * Miscellaneous utilities
     minusOrd, intersectOrd, lookupAll, replaceEq, quote, replaceSeparators,
-    decodeModule, encodeModule, unifyPath, (-/-), versionToInt,
-    matchVersionedFilePath
+    unifyPath, (-/-), versionToInt, matchVersionedFilePath
     ) where
 
 import Control.Applicative
@@ -84,21 +83,6 @@ versionToInt s = major * 1000 + minor * 10 + patch
   where
     [major, minor, patch] = map read . words $ replaceEq '.' ' ' s
 
--- | Given a module name extract the directory and file name, e.g.:
---
--- > decodeModule "Data.Functor.Identity" == ("Data/Functor/", "Identity")
--- > decodeModule "Prelude"               == ("./", "Prelude")
-decodeModule :: String -> (FilePath, String)
-decodeModule = splitFileName . replaceEq '.' '/'
-
--- | Given the directory and file name find the corresponding module name, e.g.:
---
--- > encodeModule "Data/Functor/" "Identity.hs" == "Data.Functor.Identity"
--- > encodeModule "./" "Prelude"                == "Prelude"
--- > uncurry encodeModule (decodeModule name)   == name
-encodeModule :: FilePath -> String -> String
-encodeModule dir file = replaceEq '/' '.' $ dir -/- takeBaseName file
-
 -- | Normalise a path and convert all path separators to @/@, even on Windows.
 unifyPath :: FilePath -> FilePath
 unifyPath = toStandard . normaliseEx
index 70cf983..652eb9a 100644 (file)
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving #-}
 module Oracles.ModuleFiles (
-    findGenerator, haskellSources, moduleFilesOracle
+    decodeModule, encodeModule, findGenerator, haskellSources, moduleFilesOracle
     ) where
 
 import qualified Data.HashMap.Strict as Map
@@ -26,6 +26,21 @@ determineBuilder file = case takeExtension file of
     ".hsc" -> Just Hsc2Hs
     _      -> Nothing
 
+-- | Given a module name extract the directory and file name, e.g.:
+--
+-- > decodeModule "Data.Functor.Identity" == ("Data/Functor/", "Identity")
+-- > decodeModule "Prelude"               == ("./", "Prelude")
+decodeModule :: String -> (FilePath, String)
+decodeModule = splitFileName . replaceEq '.' '/'
+
+-- | Given the directory and file name find the corresponding module name, e.g.:
+--
+-- > encodeModule "Data/Functor/" "Identity.hs" == "Data.Functor.Identity"
+-- > encodeModule "./" "Prelude"                == "Prelude"
+-- > uncurry encodeModule (decodeModule name)   == name
+encodeModule :: FilePath -> String -> String
+encodeModule dir file = replaceEq '/' '.' $ dir -/- takeBaseName file
+
 -- | Find the generator for a given 'Context' and a source file. For example:
 -- findGenerator (Context Stage1 compiler vanilla)
 --               ".build/stage1/compiler/build/Lexer.hs"
index f549b0f..8037682 100644 (file)
@@ -6,6 +6,7 @@ import Development.Shake
 import Test.QuickCheck
 
 import Base
+import Oracles.ModuleFiles (decodeModule, encodeModule)
 import Settings.Builders.Ar (chunksOfSize)
 import Way