# std/pathnorm

Theme:

- Manual
- Standard library
- Index
- Compiler docs
- Fusion docs
- devel, stable

Search:
Source Edit

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

Unstable API.

# Imports

osseps, ntpath

# Types

    PathIter = object

  Source Edit

# Procs

    proc addNormalizePath(x: string; result: var string; state: var int;
                          dirSep = DirSep) {....raises: [], tags: [], forbids: [].}

  Low level proc. Undocumented. Source Edit

    proc hasNext(it: PathIter; x: string): bool {....raises: [], tags: [], forbids: [].}

  Source Edit

    proc next(it: var PathIter; x: string): (int, int) {....raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc normalizePath(path: string; dirSep = DirSep): string {....raises: [],
        tags: [], forbids: [].}

  Example:

      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