OS-Path normalization. Used by os.nim but also generally useful for dealing with paths.

Unstable API.


PathIter = object
  i, prev: int
  notFirst: bool
  Source Edit


proc hasNext(it: PathIter; x: string): bool {...}{.raises: [], tags: [].}
  Source Edit
proc next(it: var PathIter; x: string): (int, int) {...}{.raises: [], tags: [].}
  Source Edit
proc addNormalizePath(x: string; result: var string; state: var int;
                      dirSep = DirSep) {...}{.raises: [], tags: [].}
Low level proc. Undocumented.   Source Edit
proc normalizePath(path: string; dirSep = DirSep): string {...}{.raises: [], tags: [].}


when defined(posix):
  doAssert normalizePath("./foo//bar/../baz") == "foo/baz"
  • Turns multiple slashes into single slashes.
  • Resolves '/foo/../bar' to '/bar'.
  • Removes './' from the path, but "foo/.." becomes ".".
  Source Edit