filepath-2.0.0.0: Library for manipulating FilePaths in a cross platform way.
Safe HaskellNone
LanguageHaskell2010

System.AbstractFilePath.Internal

Synopsis

Documentation

toAbstractFilePath :: String -> AbstractFilePath Source #

Total Unicode-friendly encoding.

On windows this encodes as UTF16, which is expected. On unix this encodes as UTF8, which is a good guess.

toAbstractFilePathIO :: String -> IO AbstractFilePath Source #

Like toAbstractFilePath, except on unix this uses the current locale for encoding instead of always UTF8.

Looking up the locale requires IO. If you're not worried about calls to setFileSystemEncoding, then unsafePerformIO may be feasible.

fromAbstractFilePath :: MonadThrow m => AbstractFilePath -> m String Source #

Partial unicode friendly decoding.

On windows this decodes as UTF16 (which is the expected filename encoding). On unix this decodes as UTF8 (which is a good guess). Note that filenames on unix are encoding agnostic char arrays.

Throws a UnicodeException if decoding fails.

Note that filenames of different encodings may have the same String representation, although they're not the same byte-wise.

fromAbstractFilePathEnc :: AbstractFilePath -> TextEncoding -> Either UnicodeException String Source #

Like fromAbstractFilePath, except on unix this uses the provided TextEncoding for decoding.

On windows, the TextEncoding parameter is ignored.

fromAbstractFilePathIO :: AbstractFilePath -> IO String Source #

Like fromAbstractFilePath, except on unix this uses the current locale for decoding instead of always UTF8.

Looking up the locale requires IO. If you're not worried about calls to setFileSystemEncoding, then unsafePerformIO may be feasible.

Throws UnicodeException if decoding fails.

bsToAFP :: MonadThrow m => ByteString -> m AbstractFilePath Source #

Constructs an AbstractFilePath from a ByteString.

On windows, this ensures valid UTF16, on unix it is passed unchanged/unchecked.

Throws UnicodeException on invalid UTF16 on windows.

afp :: QuasiQuoter Source #

QuasiQuote an AbstractFilePath. This accepts Unicode characters and encodes as UTF-8 on unix and UTF-16 on windows. Runs filepathIsValid on the input.