This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
api:filesystem [2015/02/01 00:33] solra_bizna [Filesystem API] Document filesystem.segments |
api:filesystem [2015/02/01 00:39] solra_bizna [Filesystem API] Document an important semantic of filesystem.segments that I forgot about |
||
---|---|---|---|
Line 10: | Line 10: | ||
Returns the canonical form of the specified path, i.e. a path containing no "indirections" such as `.` or `..`. For example, the paths `/tmp/../bin/ls.lua` and `/bin/./ls.lua` are equivalent, and their canonical form is `/bin/ls.lua`. | Returns the canonical form of the specified path, i.e. a path containing no "indirections" such as `.` or `..`. For example, the paths `/tmp/../bin/ls.lua` and `/bin/./ls.lua` are equivalent, and their canonical form is `/bin/ls.lua`. | ||
Note that this function truncates relative paths to their topmost "known" directory. For example, `../bin/ls.lua` becomes `bin/ls.lua`. It stays a relative path, however - mind the lack of a leading slash. | Note that this function truncates relative paths to their topmost "known" directory. For example, `../bin/ls.lua` becomes `bin/ls.lua`. It stays a relative path, however - mind the lack of a leading slash. | ||
+ | - `filesystem.segments(path: string): table` | ||
+ | Returns a table containing one entry for each //canonical// segment of the given path. | ||
+ | Examples: | ||
+ | * `filesystem.segments("foo/bar")` -> `{"foo","bar"}` | ||
+ | * `filesystem.segments("foo/bar/../baz")` -> `{"foo","baz"}` | ||
+ | |||
- `filesystem.concat(pathA: string, pathB: string[, ...]): string` | - `filesystem.concat(pathA: string, pathB: string[, ...]): string` | ||
Concatenates two or more paths. Note that all paths other than the first are treated as relative paths, even if they begin with a slash. The canonical form of the resulting concatenated path is returned, so `fs.concat("a", "..")` results in an empty string. | Concatenates two or more paths. Note that all paths other than the first are treated as relative paths, even if they begin with a slash. The canonical form of the resulting concatenated path is returned, so `fs.concat("a", "..")` results in an empty string. | ||
- | - `filesystem.segments(path: string): table` | ||
- | Returns a table containing one entry for each segment of the given path. | ||
- | e.g. `filesystem.segments("foo/bar")` -> `{"foo","bar"}` | ||
- `filesystem.path(path: string): string` | - `filesystem.path(path: string): string` | ||
Returns the path component of a path to a file, i.e. everything before the last slash in the canonical form of the specified path. | Returns the path component of a path to a file, i.e. everything before the last slash in the canonical form of the specified path. |