diff options
author | Araq <rumpf_a@web.de> | 2011-02-02 00:24:28 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2011-02-02 00:24:28 +0100 |
commit | 5e657a4b343da2727494bc3622a03e06c03fdf79 (patch) | |
tree | b2fb2fdcf6c878c9c791a5e7bdd7d95dfe989207 /tools/nimgrep.nim | |
parent | 437eb2c37ec9b3829301e27ea6bce7d70ad5eb02 (diff) | |
download | Nim-5e657a4b343da2727494bc3622a03e06c03fdf79.tar.gz |
nimgrep: support for multiple input files/dirs
Diffstat (limited to 'tools/nimgrep.nim')
-rwxr-xr-x | tools/nimgrep.nim | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/tools/nimgrep.nim b/tools/nimgrep.nim index 8ee1b8a76..0418e18ce 100755 --- a/tools/nimgrep.nim +++ b/tools/nimgrep.nim @@ -16,7 +16,7 @@ const (c) 2011 Andreas Rumpf Usage: - nimgrep [options] [pattern] [files/directory] + nimgrep [options] [pattern] (file/directory)* Options: --find, -f find the pattern (default) --replace, -r replace the pattern @@ -44,7 +44,7 @@ type ceAbort, ceYes, ceAll, ceNo, ceNone var - filename = "" + filenames: seq[string] = @[] pattern = "" replacement = "" options: TOptions @@ -107,6 +107,7 @@ proc highlight(s, match, repl: string, t: tuple[first, last: int], proc processFile(filename: string) = var buffer = system.readFile(filename) if isNil(buffer): quit("cannot open file: " & filename) + stdout.writeln(filename) var pegp: TPeg var rep: TRegex var result: string @@ -204,13 +205,13 @@ for kind, key, val in getopt(): case kind of cmdArgument: if options.contains(optStdIn): - filename = key + filenames.add(key) elif pattern.len == 0: pattern = key elif options.contains(optReplace) and replacement.len == 0: replacement = key else: - filename = key + filenames.add(key) of cmdLongOption, cmdShortOption: case normalize(key) of "find", "f": incl(options, optFind) @@ -242,7 +243,7 @@ if optStdin in options: if pattern.len == 0: writeHelp() else: - if filename.len == 0: filename = os.getCurrentDir() + if filenames.len == 0: filenames.add(os.getCurrentDir()) if optRegex notin options: if optIgnoreStyle in options: pattern = "\\y " & pattern @@ -255,5 +256,6 @@ else: quit "ignorestyle not supported for regular expressions" if optWord in options: pattern = r"\b (:?" & pattern & r") \b" - walker(filename) + for f in items(filenames): + walker(f) |