| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
encodeUtf :: MonadThrow m => FilePath -> m OsPath Source
Partial unicode friendly encoding.
On windows this encodes as UTF16-LE (strictly), which is a pretty good guess. On unix this encodes as UTF8 (strictly), which is a good guess.
Throws an EncodingException if encoding fails. If the input does not contain surrogate chars, you can use unsafeEncodeUtf.
unsafeEncodeUtf :: HasCallStack => String -> OsString Source
Unsafe unicode friendly encoding.
Like encodeUtf, except it crashes when the input contains surrogate chars. For sanitized input, this can be useful.
| :: TextEncoding | unix text encoding |
| -> TextEncoding | windows text encoding (wide char) |
| -> FilePath | |
| -> Either EncodingException OsPath |
Encode a FilePath with the specified encoding.
Note: on windows, we expect a "wide char" encoding (e.g. UCS-2 or UTF-16). Anything that works with Word16 boundaries. Picking an incompatible encoding may crash filepath operations.
encodeFS :: FilePath -> IO OsPath Source
Like encodeUtf, except this mimics the behavior of the base library when doing filesystem operations, which is:
Looking up the locale requires IO. If you're not worried about calls to setFileSystemEncoding, then unsafePerformIO may be feasible (make sure to deeply evaluate the result to catch exceptions).
decodeUtf :: MonadThrow m => OsPath -> m FilePath Source
Partial unicode friendly decoding.
On windows this decodes as UTF16-LE (strictly), which is a pretty good guess. On unix this decodes as UTF8 (strictly), which is a good guess.
Throws a EncodingException if decoding fails.
| :: TextEncoding | unix text encoding |
| -> TextEncoding | windows text encoding |
| -> OsPath | |
| -> Either EncodingException FilePath |
Decode an OsPath with the specified encoding.
decodeFS :: OsPath -> IO FilePath Source
Like decodeUtf, except this mimics the behavior of the base library when doing filesystem operations, which is:
Looking up the locale requires IO. If you're not worried about calls to setFileSystemEncoding, then unsafePerformIO may be feasible (make sure to deeply evaluate the result to catch exceptions).
fromBytes :: MonadThrow m => ByteString -> m OsPath Source
Constructs an OsPath from a ByteString.
On windows, this ensures valid UCS-2LE, on unix it is passed unchanged/unchecked.
Throws EncodingException on invalid UCS-2LE on windows (although unlikely).
osp :: QuasiQuoter Source
QuasiQuote an OsPath. This accepts Unicode characters and encodes as UTF-8 on unix and UTF-16LE on windows. Runs isValid on the input. If used as a pattern, requires turning on the ViewPatterns extension.
unpack :: OsPath -> [OsChar] Source
Unpack an OsPath to a list of OsChar.
pack :: [OsChar] -> OsPath Source
Pack a list of OsChar to an OsPath.
Note that using this in conjunction with unsafeFromChar to convert from [Char] to OsPath is probably not what you want, because it will truncate unicode code points.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/filepath-1.5.4.0-4765/System-OsPath-Internal.html