From f34a7dc1f5829713b0d076f5d182df6f4beb1761 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 19 Jan 2015 15:59:45 -0500 Subject: Make replace a template Also required me to fix a name conflict with the format template --- src/private/util.nim | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/private/util.nim') diff --git a/src/private/util.nim b/src/private/util.nim index 5629e81e6..72be023b2 100644 --- a/src/private/util.nim +++ b/src/private/util.nim @@ -11,20 +11,20 @@ const StartIdent = Ident - {'0'..'9'} template formatStr*(howExpr, namegetter, idgetter: expr): expr = let how = howExpr - result = newStringOfCap(how.len) + var val = newStringOfCap(how.len) var i = 0 var lastNum = 1 while i < how.len: if how[i] != '$': - result.add(how[i]) + val.add(how[i]) i += 1 elif how[i + 1] == '$': - result.add('$') + val.add('$') i += 2 elif how[i + 1] == '#': var id {.inject.} = lastNum - result.add(idgetter) + val.add(idgetter) lastNum += 1 i += 2 elif how[i + 1] in {'0'..'9'}: @@ -33,7 +33,7 @@ template formatStr*(howExpr, namegetter, idgetter: expr): expr = while i < how.len and how[i] in {'0'..'9'}: id += (id * 10) + (ord(how[i]) - ord('0')) i += 1 - result.add(idgetter) + val.add(idgetter) lastNum = id + 1 elif how[i + 1] in StartIdent: i += 1 @@ -41,7 +41,7 @@ template formatStr*(howExpr, namegetter, idgetter: expr): expr = while i < how.len and how[i] in Ident: name.add(how[i]) i += 1 - result.add(namegetter) + val.add(namegetter) elif how[i + 1] == '{': i += 2 var name {.inject.} = "" @@ -49,6 +49,7 @@ template formatStr*(howExpr, namegetter, idgetter: expr): expr = name.add(how[i]) i += 1 i += 1 - result.add(namegetter) + val.add(namegetter) else: raise newException(Exception, "Syntax error in format string at " & $i) + val -- cgit 1.4.1-2-gfad0 '5c43fbc985ae75439369ae724b1db0a0121e9e9f'/>
path: root/tools/niminst/debcreation.nim
blob: 1f4a8630e141776ed4ff8fdd8b0735a8b68292f9 (plain) (tree)
1
2
3
4
5
6
7
8
9