fixes filter bug for empty lines

This commit is contained in:
data-man 2018-05-22 18:56:27 +03:00
commit 4da0135ace

View file

@ -42,8 +42,7 @@ proc newLine(p: var TTmplParser) =
proc scanPar(p: var TTmplParser, d: int) = proc scanPar(p: var TTmplParser, d: int) =
var i = d var i = d
let hi = p.x.len - 1 while i < p.x.len:
while i <= hi:
case p.x[i] case p.x[i]
of '(': inc(p.par) of '(': inc(p.par)
of ')': dec(p.par) of ')': dec(p.par)
@ -63,22 +62,19 @@ const
proc parseLine(p: var TTmplParser) = proc parseLine(p: var TTmplParser) =
var j = 0 var j = 0
let hi = p.x.len - 1 let len = p.x.len
if hi < 0: while j < len and p.x[j] == ' ': inc(j)
return
while j <= hi and p.x[j] == ' ': inc(j) if len >= 2 and p.x[0] == p.nimDirective and p.x[1] == '?':
if p.x.len >= 2 and p.x[0] == p.nimDirective and p.x[1] == '?':
newLine(p) newLine(p)
elif j < p.x.len and p.x[j] == p.nimDirective: elif j < len and p.x[j] == p.nimDirective:
newLine(p) newLine(p)
inc(j) inc(j)
while j <= hi and p.x[j] == ' ': inc(j) while j < len and p.x[j] == ' ': inc(j)
let d = j let d = j
var keyw = "" var keyw = ""
while j <= hi and p.x[j] in PatternChars: while j < len and p.x[j] in PatternChars:
add(keyw, p.x[j]) add(keyw, p.x[j])
inc(j) inc(j)
@ -132,7 +128,7 @@ proc parseLine(p: var TTmplParser) =
llStreamWrite(p.outp, "(\"") llStreamWrite(p.outp, "(\"")
inc(p.emitPar) inc(p.emitPar)
p.state = psTempl p.state = psTempl
while j <= hi: while j < len:
case p.x[j] case p.x[j]
of '\x01'..'\x1F', '\x80'..'\xFF': of '\x01'..'\x1F', '\x80'..'\xFF':
llStreamWrite(p.outp, "\\x") llStreamWrite(p.outp, "\\x")
@ -160,7 +156,7 @@ proc parseLine(p: var TTmplParser) =
llStreamWrite(p.outp, '(') llStreamWrite(p.outp, '(')
inc(j) inc(j)
var curly = 0 var curly = 0
while j <= hi: while j < len:
case p.x[j] case p.x[j]
of '{': of '{':
inc(j) inc(j)
@ -185,7 +181,7 @@ proc parseLine(p: var TTmplParser) =
llStreamWrite(p.outp, p.conc) llStreamWrite(p.outp, p.conc)
llStreamWrite(p.outp, p.toStr) llStreamWrite(p.outp, p.toStr)
llStreamWrite(p.outp, '(') llStreamWrite(p.outp, '(')
while j <= hi and p.x[j] in PatternChars: while j < len and p.x[j] in PatternChars:
llStreamWrite(p.outp, p.x[j]) llStreamWrite(p.outp, p.x[j])
inc(j) inc(j)
llStreamWrite(p.outp, ')') llStreamWrite(p.outp, ')')