mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
nimgrep version 1
This commit is contained in:
@@ -11,7 +11,7 @@ import
|
||||
os, strutils, parseopt, pegs, re, terminal
|
||||
|
||||
const
|
||||
Version = "0.9"
|
||||
Version = "1.0"
|
||||
Usage = "nimgrep - Nim Grep Utility Version " & Version & """
|
||||
|
||||
(c) 2012 Andreas Rumpf
|
||||
@@ -56,6 +56,7 @@ var
|
||||
|
||||
proc ask(msg: string): string =
|
||||
stdout.write(msg)
|
||||
stdout.flushFile()
|
||||
result = stdin.readLine()
|
||||
|
||||
proc confirm: TConfirmEnum =
|
||||
@@ -108,18 +109,21 @@ proc highlight(s, match, repl: string, t: tuple[first, last: int],
|
||||
writeColored(match)
|
||||
for i in t.last+1 .. y: stdout.write(s[i])
|
||||
stdout.write("\n")
|
||||
stdout.flushFile()
|
||||
if showRepl:
|
||||
stdout.write(spaces(alignment-1), "-> ")
|
||||
for i in x .. t.first-1: stdout.write(s[i])
|
||||
writeColored(repl)
|
||||
for i in t.last+1 .. y: stdout.write(s[i])
|
||||
stdout.write("\n")
|
||||
stdout.flushFile()
|
||||
|
||||
proc processFile(filename: string) =
|
||||
var filenameShown = false
|
||||
template beforeHighlight =
|
||||
if not filenameShown and optVerbose notin options:
|
||||
stdout.writeLine(filename)
|
||||
stdout.flushFile()
|
||||
filenameShown = true
|
||||
|
||||
var buffer: string
|
||||
@@ -128,7 +132,9 @@ proc processFile(filename: string) =
|
||||
except IOError:
|
||||
echo "cannot open file: ", filename
|
||||
return
|
||||
if optVerbose in options: stdout.writeLine(filename)
|
||||
if optVerbose in options:
|
||||
stdout.writeLine(filename)
|
||||
stdout.flushFile()
|
||||
var pegp: TPeg
|
||||
var rep: Regex
|
||||
var result: string
|
||||
@@ -254,10 +260,12 @@ proc walker(dir: string) =
|
||||
|
||||
proc writeHelp() =
|
||||
stdout.write(Usage)
|
||||
stdout.flushFile()
|
||||
quit(0)
|
||||
|
||||
proc writeVersion() =
|
||||
stdout.write(Version & "\n")
|
||||
stdout.flushFile()
|
||||
quit(0)
|
||||
|
||||
proc checkOptions(subset: TOptions, a, b: string) =
|
||||
@@ -291,7 +299,7 @@ for kind, key, val in getopt():
|
||||
of "word", "w": incl(options, optWord)
|
||||
of "ignorecase", "i": incl(options, optIgnoreCase)
|
||||
of "ignorestyle", "y": incl(options, optIgnoreStyle)
|
||||
of "ext": extensions = val.split('|')
|
||||
of "ext": extensions.add val.split('|')
|
||||
of "nocolor": useWriteStyled = false
|
||||
of "verbose": incl(options, optVerbose)
|
||||
of "help", "h": writeHelp()
|
||||
|
||||
Reference in New Issue
Block a user