From 5e657a4b343da2727494bc3622a03e06c03fdf79 Mon Sep 17 00:00:00 2001 From: Araq Date: Wed, 2 Feb 2011 00:24:28 +0100 Subject: nimgrep: support for multiple input files/dirs --- tools/nimgrep.nim | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'tools/nimgrep.nim') 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) -- cgit 1.4.1-2-gfad0