@@ -18,7 +18,7 @@ import IRTS.System (getIdrisLibDir)
19import Control.Applicative ((<$>))
19import Control.Applicative ((<$>))
20import Control.Monad.State.Strict
20import Control.Monad.State.Strict
21−import Data.Char (isDigit, isLower)
21+import Data.Char (isDigit, isAlpha, toLower)
22import Data.List (isSuffixOf)
22import Data.List (isSuffixOf)
23import System.Directory
23import System.Directory
24import System.FilePath
24import System.FilePath
@@ -26,8 +26,15 @@ import System.FilePath
26data IFileType = IDR FilePath | LIDR FilePath | IBC FilePath IFileType
26data IFileType = IDR FilePath | LIDR FilePath | IBC FilePath IFileType
27 deriving (Show, Eq)
27 deriving (Show, Eq)
29−newtype PkgName = PkgName { unPkgName :: String }
29+newtype PkgName = PkgName String
30− deriving (Show, Eq)
30+
31+unPkgName :: PkgName -> String
32+unPkgName (PkgName s) = map toLower s
34+instance Show PkgName where
35+ show (PkgName pkg) = pkg
36+instance Eq PkgName where
37+ a == b = unPkgName a == unPkgName b
32unInitializedPkgName :: PkgName
39unInitializedPkgName :: PkgName
33unInitializedPkgName = PkgName ""
40unInitializedPkgName = PkgName ""
@@ -35,10 +42,10 @@ unInitializedPkgName = PkgName ""
35pkgName :: String -> Either String PkgName
42pkgName :: String -> Either String PkgName
36pkgName "" = Left "empty package name"
43pkgName "" = Left "empty package name"
37pkgName s@(f:l)
44pkgName s@(f:l)
38− | not $ isLower f =
45+ | not $ isAlpha f =
39− Left "package name need to start by a lower alpha"
46+ Left "package name need to start by a letter"
40− | not $ all (\c -> isLower c || isDigit c || c `elem` "-_") l =
47+ | not $ all (\c -> isAlpha c || isDigit c || c `elem` "-_") l =
41− Left "package name need to contain only lower alpha, digits, and -_"
48+ Left "package name need to contain only letter, digits, and -_"
42 | otherwise = Right $ PkgName s
49 | otherwise = Right $ PkgName s
44-- | Get the index file name for a package name
51-- | Get the index file name for a package name