summaryrefslogtreecommitdiff
path: root/libraries/template-haskell/vendored-filepath/System/FilePath.hs
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/template-haskell/vendored-filepath/System/FilePath.hs')
-rw-r--r--libraries/template-haskell/vendored-filepath/System/FilePath.hs149
1 files changed, 149 insertions, 0 deletions
diff --git a/libraries/template-haskell/vendored-filepath/System/FilePath.hs b/libraries/template-haskell/vendored-filepath/System/FilePath.hs
new file mode 100644
index 0000000000..fdbbca8f7e
--- /dev/null
+++ b/libraries/template-haskell/vendored-filepath/System/FilePath.hs
@@ -0,0 +1,149 @@
+-- Vendored from filepath v1.4.2.2
+
+{-# LANGUAGE CPP #-}
+#if __GLASGOW_HASKELL__ >= 704
+{-# LANGUAGE Safe #-}
+#endif
+{- |
+Module : System.FilePath
+Copyright : (c) Neil Mitchell 2005-2014
+License : BSD3
+
+Maintainer : ndmitchell@gmail.com
+Stability : stable
+Portability : portable
+
+A library for 'FilePath' manipulations, using Posix or Windows filepaths
+depending on the platform.
+
+Both "System.FilePath.Posix" and "System.FilePath.Windows" provide the
+same interface.
+
+Given the example 'FilePath': @\/directory\/file.ext@
+
+We can use the following functions to extract pieces.
+
+* 'takeFileName' gives @\"file.ext\"@
+
+* 'takeDirectory' gives @\"\/directory\"@
+
+* 'takeExtension' gives @\".ext\"@
+
+* 'dropExtension' gives @\"\/directory\/file\"@
+
+* 'takeBaseName' gives @\"file\"@
+
+And we could have built an equivalent path with the following expressions:
+
+* @\"\/directory\" '</>' \"file.ext\"@.
+
+* @\"\/directory\/file" '<.>' \"ext\"@.
+
+* @\"\/directory\/file.txt" '-<.>' \"ext\"@.
+
+Each function in this module is documented with several examples,
+which are also used as tests.
+
+Here are a few examples of using the @filepath@ functions together:
+
+/Example 1:/ Find the possible locations of a Haskell module @Test@ imported from module @Main@:
+
+@['replaceFileName' path_to_main \"Test\" '<.>' ext | ext <- [\"hs\",\"lhs\"] ]@
+
+/Example 2:/ Download a file from @url@ and save it to disk:
+
+@do let file = 'makeValid' url
+ System.Directory.createDirectoryIfMissing True ('takeDirectory' file)@
+
+/Example 3:/ Compile a Haskell file, putting the @.hi@ file under @interface@:
+
+@'takeDirectory' file '</>' \"interface\" '</>' ('takeFileName' file '-<.>' \"hi\")@
+
+References:
+[1] <http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247.aspx Naming Files, Paths and Namespaces> (Microsoft MSDN)
+-}
+
+
+#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
+module System.FilePath(
+ -- * Separator predicates
+ FilePath,
+ pathSeparator, pathSeparators, isPathSeparator,
+ searchPathSeparator, isSearchPathSeparator,
+ extSeparator, isExtSeparator,
+
+ -- * @$PATH@ methods
+ splitSearchPath, getSearchPath,
+
+ -- * Extension functions
+ splitExtension,
+ takeExtension, replaceExtension, (-<.>), dropExtension, addExtension, hasExtension, (<.>),
+ splitExtensions, dropExtensions, takeExtensions, replaceExtensions, isExtensionOf,
+ stripExtension,
+
+ -- * Filename\/directory functions
+ splitFileName,
+ takeFileName, replaceFileName, dropFileName,
+ takeBaseName, replaceBaseName,
+ takeDirectory, replaceDirectory,
+ combine, (</>),
+ splitPath, joinPath, splitDirectories,
+
+ -- * Drive functions
+ splitDrive, joinDrive,
+ takeDrive, hasDrive, dropDrive, isDrive,
+
+ -- * Trailing slash functions
+ hasTrailingPathSeparator,
+ addTrailingPathSeparator,
+ dropTrailingPathSeparator,
+
+ -- * File name manipulations
+ normalise, equalFilePath,
+ makeRelative,
+ isRelative, isAbsolute,
+ isValid, makeValid
+) where
+import System.FilePath.Windows
+#else
+module System.FilePath(
+ -- * Separator predicates
+ FilePath,
+ pathSeparator, pathSeparators, isPathSeparator,
+ searchPathSeparator, isSearchPathSeparator,
+ extSeparator, isExtSeparator,
+
+ -- * @$PATH@ methods
+ splitSearchPath, getSearchPath,
+
+ -- * Extension functions
+ splitExtension,
+ takeExtension, replaceExtension, (-<.>), dropExtension, addExtension, hasExtension, (<.>),
+ splitExtensions, dropExtensions, takeExtensions, replaceExtensions, isExtensionOf,
+ stripExtension,
+
+ -- * Filename\/directory functions
+ splitFileName,
+ takeFileName, replaceFileName, dropFileName,
+ takeBaseName, replaceBaseName,
+ takeDirectory, replaceDirectory,
+ combine, (</>),
+ splitPath, joinPath, splitDirectories,
+
+ -- * Drive functions
+ splitDrive, joinDrive,
+ takeDrive, hasDrive, dropDrive, isDrive,
+
+ -- * Trailing slash functions
+ hasTrailingPathSeparator,
+ addTrailingPathSeparator,
+ dropTrailingPathSeparator,
+
+ -- * File name manipulations
+ normalise, equalFilePath,
+ makeRelative,
+ isRelative, isAbsolute,
+ isValid, makeValid
+) where
+import System.FilePath.Posix
+#endif