summary refs log blame commit diff stats
path: root/lib/pure/oswalkdir.nim
blob: 000fe25a39d2680fba08c2ef216cba9c8ca8a8fb (plain) (tree)
1
2
3
4
 


                                                                       










                                                                          

                                                                                          
                








                                                                   
## Compile-time only version for walkDir if you need it at compile-time
## for JavaScript.

type
  PathComponent* = enum   ## Enumeration specifying a path component.
    pcFile,               ## path refers to a file
    pcLinkToFile,         ## path refers to a symbolic link to a file
    pcDir,                ## path refers to a directory
    pcLinkToDir           ## path refers to a symbolic link to a directory

proc staticWalkDir(dir: string; relative: bool): seq[
                  tuple[kind: PathComponent, path: string]] =
  discard

iterator walkDir*(dir: string; relative=false): tuple[kind: PathComponent, path: string] =
  for k, v in items(staticWalkDir(dir, relative)):
    yield (k, v)

iterator walkDirRec*(dir: string, filter={pcFile, pcDir}): string =
  var stack = @[dir]
  while stack.len > 0:
    for k,p in walkDir(stack.pop()):
      if k in filter:
        case k
        of pcFile, pcLinkToFile: yield p
        of pcDir, pcLinkToDir: stack.add(p)