diff options
author | Araq <rumpf_a@web.de> | 2015-11-10 15:56:17 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-11-10 15:56:17 +0100 |
commit | b6374f1f68d899e7eed65c553f3e8b71e688c61c (patch) | |
tree | 80e24603fa2a32b4a8e7b0526f3c57d6ab35f61b | |
parent | 7578d580e0167bcfbd77fe7fd1393cfa7a6f1ede (diff) | |
download | Nim-b6374f1f68d899e7eed65c553f3e8b71e688c61c.tar.gz |
fixes newly introduced oswalkdir module
-rw-r--r-- | lib/pure/oswalkdir.nim | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/pure/oswalkdir.nim b/lib/pure/oswalkdir.nim index a27b12a78..000fe25a3 100644 --- a/lib/pure/oswalkdir.nim +++ b/lib/pure/oswalkdir.nim @@ -1,4 +1,7 @@ +## 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 @@ -10,7 +13,15 @@ proc staticWalkDir(dir: string; relative: bool): seq[ tuple[kind: PathComponent, path: string]] = discard -iterator walkDir*(dir: string; relative=false): tuple[kind: PathComponent, path: string] {. - tags: [ReadDirEffect], compiletime.} = - for k, v in staticWalkDir(dir, relative)): +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) |