nimbase/nl.nim
joachimschmidt557 33a314f900 Add tac utility
2019-03-29 11:15:36 +01:00

26 lines
713 B
Nim

import cligen
import common
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:
for line in lines(file):
lineNr += lineIncrement
writeLine(stdout, formatNumber(lineNr, numberWidth) & numberSeparator & line)
dispatch(main, version=("version", nimbaseVersion))