Add tac utility
This commit is contained in:
parent
1b57bc6fa3
commit
33a314f900
3 changed files with 53 additions and 4 deletions
21
nl.nim
21
nl.nim
|
|
@ -1,11 +1,26 @@
|
|||
import cligen
|
||||
import common
|
||||
|
||||
proc main(files:seq[string], lineIncrement=1) =
|
||||
proc digits(num:int): int =
|
||||
result = 1
|
||||
var x = num
|
||||
while x div 10 >= 1:
|
||||
inc result
|
||||
x = x div 10
|
||||
|
||||
proc spaces(num:int): string =
|
||||
for i in 1..num:
|
||||
result &= " "
|
||||
|
||||
proc formatNumber(num:int, width:int): string =
|
||||
result = if digits(num) > width: $num
|
||||
else: spaces(width - digits(num)) & $num
|
||||
|
||||
proc main(files:seq[string], lineIncrement=1, numberSeparator="\t", numberWidth=6) =
|
||||
var lineNr = 0
|
||||
for file in files:
|
||||
var lineNr = 0
|
||||
for line in lines(file):
|
||||
lineNr += lineIncrement
|
||||
writeLine(stdout, $(lineNr) & line)
|
||||
writeLine(stdout, formatNumber(lineNr, numberWidth) & numberSeparator & line)
|
||||
|
||||
dispatch(main, version=("version", nimbaseVersion))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue