From b6374f1f68d899e7eed65c553f3e8b71e688c61c Mon Sep 17 00:00:00 2001 From: Araq Date: Tue, 10 Nov 2015 15:56:17 +0100 Subject: [PATCH] fixes newly introduced oswalkdir module --- lib/pure/oswalkdir.nim | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/pure/oswalkdir.nim b/lib/pure/oswalkdir.nim index a27b12a78d..000fe25a39 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)