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 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ModuleName -> ModuleName -> Bool $c/= :: ModuleName -> ModuleName -> Bool == :: ModuleName -> ModuleName -> Bool $c== :: ModuleName -> ModuleName -> Bool Eq, Eq 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 min :: ModuleName -> ModuleName -> ModuleName $cmin :: ModuleName -> ModuleName -> ModuleName max :: ModuleName -> ModuleName -> ModuleName $cmax :: ModuleName -> ModuleName -> ModuleName >= :: ModuleName -> ModuleName -> Bool $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 compare :: ModuleName -> ModuleName -> Ordering $ccompare :: ModuleName -> ModuleName -> Ordering Ord, Int -> ModuleName -> ShowS [ModuleName] -> ShowS ModuleName -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ModuleName] -> ShowS $cshowList :: [ModuleName] -> ShowS show :: ModuleName -> String $cshow :: ModuleName -> String showsPrec :: Int -> ModuleName -> ShowS $cshowsPrec :: Int -> ModuleName -> ShowS Show) toString :: ModuleName -> String toString :: ModuleName -> String toString (ModuleName ModuleName x) = forall a. Pretty a => a -> String Cabal.display ModuleName x fromString :: String -> Maybe ModuleName fromString :: String -> Maybe ModuleName fromString = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap ModuleName -> ModuleName ModuleName forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Parsec a => String -> Maybe a Cabal.simpleParse fromFilePath :: FilePath -> Maybe ModuleName fromFilePath :: String -> Maybe ModuleName fromFilePath = forall a. [a] -> Maybe a Maybe.listToMaybe forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> Maybe b) -> [a] -> [b] Maybe.mapMaybe (String -> Maybe ModuleName fromString forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> [[a]] -> [a] List.intercalate String ".") forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> [[a]] List.tails forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> [String] FilePath.splitDirectories forall b c a. (b -> c) -> (a -> b) -> a -> c . ShowS FilePath.dropExtensions