diff options
author | Flaviu Tamas <tamasflaviu@gmail.com> | 2015-01-19 15:59:45 -0500 |
---|---|---|
committer | Flaviu Tamas <tamasflaviu@gmail.com> | 2015-01-19 16:04:21 -0500 |
commit | f34a7dc1f5829713b0d076f5d182df6f4beb1761 (patch) | |
tree | c306afe24263aa0ab6c6cc77a05a98207818f634 /src/private/util.nim | |
parent | a5693675fb36588b12033d3768d41b4c63d31c4b (diff) | |
download | Nim-f34a7dc1f5829713b0d076f5d182df6f4beb1761.tar.gz |
Make replace a template
Also required me to fix a name conflict with the format template
Diffstat (limited to 'src/private/util.nim')
-rw-r--r-- | src/private/util.nim | 15 |
1 files changed, 8 insertions, 7 deletions
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 |