Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- toAbstractFilePath :: String -> AbstractFilePath
- toAbstractFilePathIO :: String -> IO AbstractFilePath
- fromAbstractFilePath :: MonadThrow m => AbstractFilePath -> m String
- fromAbstractFilePathEnc :: AbstractFilePath -> TextEncoding -> Either UnicodeException String
- fromAbstractFilePathIO :: AbstractFilePath -> IO String
- bsToAFP :: MonadThrow m => ByteString -> m AbstractFilePath
- mkAbstractFilePath :: ByteString -> Q Exp
- afp :: QuasiQuoter
- unpackAFP :: AbstractFilePath -> [OsChar]
- packAFP :: [OsChar] -> AbstractFilePath
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.
mkAbstractFilePath :: ByteString -> Q Exp Source #
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.
unpackAFP :: AbstractFilePath -> [OsChar] Source #
packAFP :: [OsChar] -> AbstractFilePath Source #