summary refs log tree commit diff stats
path: root/src/private/util.nim
diff options
context:
space:
mode:
authorFlaviu Tamas <tamasflaviu@gmail.com>2015-01-19 15:59:45 -0500
committerFlaviu Tamas <tamasflaviu@gmail.com>2015-01-19 16:04:21 -0500
commitf34a7dc1f5829713b0d076f5d182df6f4beb1761 (patch)
treec306afe24263aa0ab6c6cc77a05a98207818f634 /src/private/util.nim
parenta5693675fb36588b12033d3768d41b4c63d31c4b (diff)
downloadNim-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.nim15
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