module ServantSerf.Type.ModuleName where import qualified Data.List as List import qualified Data.Maybe as Maybe import qualified Distribution.ModuleName as Cabal import qualified Distribution.Text as Cabal import qualified System.FilePath as FilePath newtype ModuleName = ModuleName Cabal.ModuleName deriving (ModuleName -> ModuleName -> Bool (ModuleName -> ModuleName -> Bool) -> (ModuleName -> ModuleName -> Bool) -> Eq ModuleName forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: ModuleName -> ModuleName -> Bool == :: ModuleName -> ModuleName -> Bool $c/= :: ModuleName -> ModuleName -> Bool /= :: ModuleName -> ModuleName -> Bool Eq, Eq ModuleName Eq ModuleName => (ModuleName -> ModuleName -> Ordering) -> (ModuleName -> ModuleName -> Bool) -> (ModuleName -> ModuleName -> Bool) -> (ModuleName -> ModuleName -> Bool) -> (ModuleName -> ModuleName -> Bool) -> (ModuleName -> ModuleName -> ModuleName) -> (ModuleName -> ModuleName -> ModuleName) -> Ord ModuleName ModuleName -> ModuleName -> Bool ModuleName -> ModuleName -> Ordering ModuleName -> ModuleName -> ModuleName forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: ModuleName -> ModuleName -> Ordering compare :: ModuleName -> ModuleName -> Ordering $c< :: ModuleName -> ModuleName -> Bool < :: ModuleName -> ModuleName -> Bool $c<= :: ModuleName -> ModuleName -> Bool <= :: ModuleName -> ModuleName -> Bool $c> :: ModuleName -> ModuleName -> Bool > :: ModuleName -> ModuleName -> Bool $c>= :: ModuleName -> ModuleName -> Bool >= :: ModuleName -> ModuleName -> Bool $cmax :: ModuleName -> ModuleName -> ModuleName max :: ModuleName -> ModuleName -> ModuleName $cmin :: ModuleName -> ModuleName -> ModuleName min :: ModuleName -> ModuleName -> ModuleName Ord, Int -> ModuleName -> ShowS [ModuleName] -> ShowS ModuleName -> String (Int -> ModuleName -> ShowS) -> (ModuleName -> String) -> ([ModuleName] -> ShowS) -> Show ModuleName forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> ModuleName -> ShowS showsPrec :: Int -> ModuleName -> ShowS $cshow :: ModuleName -> String show :: ModuleName -> String $cshowList :: [ModuleName] -> ShowS showList :: [ModuleName] -> ShowS Show) toString :: ModuleName -> String toString :: ModuleName -> String toString (ModuleName ModuleName x) = ModuleName -> String forall a. Pretty a => a -> String Cabal.display ModuleName x fromString :: String -> Maybe ModuleName fromString :: String -> Maybe ModuleName fromString = (ModuleName -> ModuleName) -> Maybe ModuleName -> Maybe ModuleName forall a b. (a -> b) -> Maybe a -> Maybe b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap ModuleName -> ModuleName ModuleName (Maybe ModuleName -> Maybe ModuleName) -> (String -> Maybe ModuleName) -> String -> Maybe ModuleName forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Maybe ModuleName forall a. Parsec a => String -> Maybe a Cabal.simpleParse fromFilePath :: FilePath -> Maybe ModuleName fromFilePath :: String -> Maybe ModuleName fromFilePath = [ModuleName] -> Maybe ModuleName forall a. [a] -> Maybe a Maybe.listToMaybe ([ModuleName] -> Maybe ModuleName) -> (String -> [ModuleName]) -> String -> Maybe ModuleName forall b c a. (b -> c) -> (a -> b) -> a -> c . ([String] -> Maybe ModuleName) -> [[String]] -> [ModuleName] forall a b. (a -> Maybe b) -> [a] -> [b] Maybe.mapMaybe (String -> Maybe ModuleName fromString (String -> Maybe ModuleName) -> ([String] -> String) -> [String] -> Maybe ModuleName forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> [String] -> String forall a. [a] -> [[a]] -> [a] List.intercalate String ".") ([[String]] -> [ModuleName]) -> (String -> [[String]]) -> String -> [ModuleName] forall b c a. (b -> c) -> (a -> b) -> a -> c . [String] -> [[String]] forall a. [a] -> [[a]] List.tails ([String] -> [[String]]) -> (String -> [String]) -> String -> [[String]] forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> [String] FilePath.splitDirectories (String -> [String]) -> ShowS -> String -> [String] forall b c a. (b -> c) -> (a -> b) -> a -> c . ShowS FilePath.dropExtensions