diff options
-rw-r--r-- | tools/cmerge.nim | 4 | ||||
-rw-r--r-- | tools/nimgrep.nim | 90 | ||||
-rw-r--r-- | tools/nimweb.nim | 6 |
3 files changed, 50 insertions, 50 deletions
diff --git a/tools/cmerge.nim b/tools/cmerge.nim index d2e540481..13bf8b64c 100644 --- a/tools/cmerge.nim +++ b/tools/cmerge.nim @@ -19,9 +19,9 @@ proc process(dir, infile: string, outfile: File, ig <- (comment / \s+)* """: # follow the include file: if process(dir, matches[0], outfile, processed) == prAddIncludeDir: - writeln(outfile, line) + writeLine(outfile, line) else: - writeln(outfile, line) + writeLine(outfile, line) proc main(dir, outfile: string) = var o: File diff --git a/tools/nimgrep.nim b/tools/nimgrep.nim index 72e4adc07..221181f66 100644 --- a/tools/nimgrep.nim +++ b/tools/nimgrep.nim @@ -21,10 +21,10 @@ Options: --find, -f find the pattern (default) --replace, -r replace the pattern --peg pattern is a peg - --re pattern is a regular expression (default); extended + --re pattern is a regular expression (default); extended syntax for the regular expression is always turned on --recursive process directories recursively - --confirm confirm each occurrence/replacement; there is a chance + --confirm confirm each occurrence/replacement; there is a chance to abort any time without touching the file --stdin read pattern from stdin (to avoid the shell's confusing quoting rules) @@ -39,13 +39,13 @@ Options: """ type - TOption = enum + TOption = enum optFind, optReplace, optPeg, optRegex, optRecursive, optConfirm, optStdin, optWord, optIgnoreCase, optIgnoreStyle, optVerbose TOptions = set[TOption] - TConfirmEnum = enum + TConfirmEnum = enum ceAbort, ceYes, ceAll, ceNo, ceNone - + var filenames: seq[string] = @[] pattern = "" @@ -58,34 +58,34 @@ proc ask(msg: string): string = stdout.write(msg) result = stdin.readLine() -proc confirm: TConfirmEnum = +proc confirm: TConfirmEnum = while true: case normalize(ask(" [a]bort; [y]es, a[l]l, [n]o, non[e]: ")) - of "a", "abort": return ceAbort + of "a", "abort": return ceAbort of "y", "yes": return ceYes of "l", "all": return ceAll of "n", "no": return ceNo of "e", "none": return ceNone else: discard -proc countLines(s: string, first, last: int): int = +proc countLines(s: string, first, last: int): int = var i = first while i <= last: - if s[i] == '\13': + if s[i] == '\13': inc result if i < last and s[i+1] == '\10': inc(i) - elif s[i] == '\10': + elif s[i] == '\10': inc result inc i -proc beforePattern(s: string, first: int): int = +proc beforePattern(s: string, first: int): int = result = first-1 while result >= 0: if s[result] in NewLines: break dec(result) inc(result) -proc afterPattern(s: string, last: int): int = +proc afterPattern(s: string, last: int): int = result = last+1 while result < s.len: if s[result] in NewLines: break @@ -99,7 +99,7 @@ proc writeColored(s: string) = stdout.write(s) proc highlight(s, match, repl: string, t: tuple[first, last: int], - line: int, showRepl: bool) = + line: int, showRepl: bool) = const alignment = 6 stdout.write(line.`$`.align(alignment), ": ") var x = beforePattern(s, t.first) @@ -118,17 +118,17 @@ proc highlight(s, match, repl: string, t: tuple[first, last: int], proc processFile(filename: string) = var filenameShown = false template beforeHighlight = - if not filenameShown and optVerbose notin options: - stdout.writeln(filename) + if not filenameShown and optVerbose notin options: + stdout.writeLine(filename) filenameShown = true - + var buffer: string try: buffer = system.readFile(filename) - except IOError: + except IOError: echo "cannot open file: ", filename return - if optVerbose in options: stdout.writeln(filename) + if optVerbose in options: stdout.writeLine(filename) var pegp: TPeg var rep: Regex var result: string @@ -140,10 +140,10 @@ proc processFile(filename: string) = rep = re(pattern) else: pegp = peg(pattern) - + if optReplace in options: result = newStringOfCap(buffer.len) - + var line = 1 var i = 0 var matches: array[0..re.MaxSubpatterns-1, string] @@ -157,24 +157,24 @@ proc processFile(filename: string) = t = findBounds(buffer, rep, matches, i) if t.first <= 0: break inc(line, countLines(buffer, i, t.first-1)) - + var wholeMatch = buffer.substr(t.first, t.last) - + beforeHighlight() - if optReplace notin options: + if optReplace notin options: highlight(buffer, wholeMatch, "", t, line, showRepl=false) else: var r: string if optRegex notin options: r = replace(wholeMatch, pegp, replacement % matches) - else: + else: r = replace(wholeMatch, rep, replacement % matches) - if optConfirm in options: + if optConfirm in options: highlight(buffer, wholeMatch, r, t, line, showRepl=true) case confirm() of ceAbort: quit(0) - of ceYes: reallyReplace = true - of ceAll: + of ceYes: reallyReplace = true + of ceAll: reallyReplace = true options.excl(optConfirm) of ceNo: @@ -203,11 +203,11 @@ proc processFile(filename: string) = proc hasRightExt(filename: string, exts: seq[string]): bool = var y = splitFile(filename).ext.substr(1) # skip leading '.' - for x in items(exts): + for x in items(exts): if os.cmpPaths(x, y) == 0: return true -proc styleInsensitive(s: string): string = - template addx: stmt = +proc styleInsensitive(s: string): string = + template addx: stmt = result.add(s[i]) inc(i) result = "" @@ -215,7 +215,7 @@ proc styleInsensitive(s: string): string = var brackets = 0 while i < s.len: case s[i] - of 'A'..'Z', 'a'..'z', '0'..'9': + of 'A'..'Z', 'a'..'z', '0'..'9': addx() if brackets == 0: result.add("_?") of '_': @@ -234,29 +234,29 @@ proc styleInsensitive(s: string): string = while s[i] != '>' and s[i] != '\0': addx() of '\\': addx() - if s[i] in strutils.Digits: + if s[i] in strutils.Digits: while s[i] in strutils.Digits: addx() else: addx() else: addx() -proc walker(dir: string) = +proc walker(dir: string) = for kind, path in walkDir(dir): case kind - of pcFile: + of pcFile: if extensions.len == 0 or path.hasRightExt(extensions): processFile(path) - of pcDir: + of pcDir: if optRecursive in options: walker(path) else: discard if existsFile(dir): processFile(dir) -proc writeHelp() = +proc writeHelp() = stdout.write(Usage) quit(0) -proc writeVersion() = +proc writeVersion() = stdout.write(Version & "\n") quit(0) @@ -267,9 +267,9 @@ proc checkOptions(subset: TOptions, a, b: string) = for kind, key, val in getopt(): case kind of cmdArgument: - if options.contains(optStdin): + if options.contains(optStdin): filenames.add(key) - elif pattern.len == 0: + elif pattern.len == 0: pattern = key elif options.contains(optReplace) and replacement.len == 0: replacement = key @@ -306,7 +306,7 @@ checkOptions({optFind, optReplace}, "find", "replace") checkOptions({optPeg, optRegex}, "peg", "re") checkOptions({optIgnoreCase, optIgnoreStyle}, "ignore_case", "ignore_style") -if optStdin in options: +if optStdin in options: pattern = ask("pattern [ENTER to exit]: ") if isNil(pattern) or pattern.len == 0: quit(0) if optReplace in options: @@ -314,18 +314,18 @@ if optStdin in options: if pattern.len == 0: writeHelp() -else: - if filenames.len == 0: +else: + if filenames.len == 0: filenames.add(os.getCurrentDir()) - if optRegex notin options: + if optRegex notin options: if optWord in options: pattern = r"(^ / !\letter)(" & pattern & r") !\letter" - if optIgnoreStyle in options: + if optIgnoreStyle in options: pattern = "\\y " & pattern elif optIgnoreCase in options: pattern = "\\i " & pattern else: - if optIgnoreStyle in options: + if optIgnoreStyle in options: pattern = styleInsensitive(pattern) if optWord in options: pattern = r"\b (:?" & pattern & r") \b" diff --git a/tools/nimweb.nim b/tools/nimweb.nim index a7301195e..852b43092 100644 --- a/tools/nimweb.nim +++ b/tools/nimweb.nim @@ -126,10 +126,10 @@ proc parseCmdLine(c: var TConfigData) = break of cmdLongOption, cmdShortOption: case normalize(key) - of "help", "h": + of "help", "h": stdout.write(usage) quit(0) - of "version", "v": + of "version", "v": stdout.write(version & "\n") quit(0) of "o", "output": c.outdir = val @@ -431,7 +431,7 @@ proc buildWebsite(c: var TConfigData) = if not existsDir("web/upload"): createDir("web/upload") if open(f, outfile, fmWrite): - writeln(f, generateHTMLPage(c, file, content, rss)) + writeLine(f, generateHTMLPage(c, file, content, rss)) close(f) else: quit("[Error] cannot write file: " & outfile) |