Shikensu.Path
Paths
type Path kind
Path type. This is used with the phantom 👻 types.
directoryPath : Path Directory
filePath : Path File
encapsulatedPath : Path Encapsulated
type Directory
👻 Directory
type File
👻 File
type Encapsulated
👻 Encapsulated
type Kind
= Directory
| File
Creation
directory :
Array String -> Path Directory
Create a directory path.
directory [ "Audio", "Playlists" ]
file :
Array String -> Path File
Create a file path.
file [ "Document", "invoice.pdf" ]
POSIX
fromPosix :
String -> Path Encapsulated
Convert a POSIX formatted string to a path.
This will return a Encapsulated
path. To get a path of the type Path Directory
or Path File
, use the functions in the Shikensu.Path.Encapsulated
module.
>>> import Shikensu.Path.Encapsulated
>>> "foo/bar/"
..> |> fromPosix
..> |> Shikensu.Path.Encapsulated.toDirectory
Just (directory [ "foo", "bar" ])
>>> "foo/bar"
..> |> fromPosix
..> |> Shikensu.Path.Encapsulated.toFile
Just (file [ "foo", "bar" ])
toPosix :
{ absolute : Bool } -> Path kind -> String
Convert a path to the POSIX format.
>>> toPosix { absolute = True } (directory [ "foo", "bar"])
"/foo/bar/"
>>> toPosix { absolute = False } (file [ "foo", "bar"])
"foo/bar"
Encapsulation
encapsulate :
Path kind -> Path Encapsulated
Encapsulate a path.
Functions
combine :
Path Directory -> Path kind -> Path kind
Combine a directory path and another path.
kind :
Path kind -> Kind
Get the path kind.
>>> kind (directory [])
Directory
>>> kind (file [])
File
Even if a path is encapsulated, you can still check the kind of path it is.
>>> kind (encapsulate <| directory [])
Directory
>>> kind (encapsulate <| file [])
File
length :
Path kind -> Int
Length.
map :
(Array String -> Array String) -> Path kind -> Path kind
Map.
unwrap :
Path kind -> Array String
Get the path parts.
>>> unwrap (directory [ "foo", "bar" ])
[ "foo", "bar" ]
>>> unwrap (file [ "foo", "bar" ])
[ "foo", "bar" ]