Fix filter_tmpl errors (#7763)

This commit is contained in:
Dmitry Atamanov 2018-05-04 08:39:05 +03:00 • committed by Andreas Rumpf
commit 27631b1112

View file

@ -45,7 +45,6 @@ proc scanPar(p: var TTmplParser, d: int) =
let hi = p.x.len - 1 let hi = p.x.len - 1
while i <= hi: while i <= hi:
case p.x[i] case p.x[i]
of '\0': break
of '(': inc(p.par) of '(': inc(p.par)
of ')': dec(p.par) of ')': dec(p.par)
of '[': inc(p.bracket) of '[': inc(p.bracket)
@ -64,16 +63,22 @@ const
proc parseLine(p: var TTmplParser) = proc parseLine(p: var TTmplParser) =
var j = 0 var j = 0
while p.x[j] == ' ': inc(j) let hi = p.x.len - 1
if hi == 0:
return
while j <= hi and p.x[j] == ' ': inc(j)
if p.x[0] == p.nimDirective and p.x[1] == '?': if p.x[0] == p.nimDirective and p.x[1] == '?':
newLine(p) newLine(p)
elif p.x[j] == p.nimDirective: elif p.x[j] == p.nimDirective:
newLine(p) newLine(p)
inc(j) inc(j)
while p.x[j] == ' ': inc(j) while j <= hi and p.x[j] == ' ': inc(j)
let d = j let d = j
var keyw = "" var keyw = ""
while p.x[j] in PatternChars: while j <= hi and p.x[j] in PatternChars:
add(keyw, p.x[j]) add(keyw, p.x[j])
inc(j) inc(j)
@ -127,10 +132,8 @@ proc parseLine(p: var TTmplParser) =
llStreamWrite(p.outp, "(\"") llStreamWrite(p.outp, "(\"")
inc(p.emitPar) inc(p.emitPar)
p.state = psTempl p.state = psTempl
while true: while j <= hi:
case p.x[j] case p.x[j]
of '\0':
break
of '\x01'..'\x1F', '\x80'..'\xFF': of '\x01'..'\x1F', '\x80'..'\xFF':
llStreamWrite(p.outp, "\\x") llStreamWrite(p.outp, "\\x")
llStreamWrite(p.outp, toHex(ord(p.x[j]), 2)) llStreamWrite(p.outp, toHex(ord(p.x[j]), 2))
@ -157,11 +160,8 @@ proc parseLine(p: var TTmplParser) =
llStreamWrite(p.outp, '(') llStreamWrite(p.outp, '(')
inc(j) inc(j)
var curly = 0 var curly = 0
while true: while j <= hi:
case p.x[j] case p.x[j]
of '\0':
localError(p.info, errXExpected, "}")
break
of '{': of '{':
inc(j) inc(j)
inc(curly) inc(curly)
@ -174,6 +174,9 @@ proc parseLine(p: var TTmplParser) =
else: else:
llStreamWrite(p.outp, p.x[j]) llStreamWrite(p.outp, p.x[j])
inc(j) inc(j)
if curly > 0:
localError(p.info, errXExpected, "}")
break
llStreamWrite(p.outp, ')') llStreamWrite(p.outp, ')')
llStreamWrite(p.outp, p.conc) llStreamWrite(p.outp, p.conc)
llStreamWrite(p.outp, '\"') llStreamWrite(p.outp, '\"')
@ -182,7 +185,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 p.x[j] in PatternChars: while j <= hi 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, ')')