summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-11-10 15:56:17 +0100
committerAraq <rumpf_a@web.de>2015-11-10 15:56:17 +0100
commitb6374f1f68d899e7eed65c553f3e8b71e688c61c (patch)
tree80e24603fa2a32b4a8e7b0526f3c57d6ab35f61b
parent7578d580e0167bcfbd77fe7fd1393cfa7a6f1ede (diff)
downloadNim-b6374f1f68d899e7eed65c553f3e8b71e688c61c.tar.gz
fixes newly introduced oswalkdir module
-rw-r--r--lib/pure/oswalkdir.nim17
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)