summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xlib/pure/strutils.nim26
-rwxr-xr-xlib/system/systhread.nim20
-rwxr-xr-xrod/sigmatch.nim4
-rwxr-xr-xweb/news.txt1
4 files changed, 36 insertions, 15 deletions
diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim
index f5adf1abb..81ca75417 100755
--- a/lib/pure/strutils.nim
+++ b/lib/pure/strutils.nim
@@ -449,8 +449,20 @@ proc repeatChar*(count: int, c: Char = ' '): string {.noSideEffect,
   ## Returns a string of length `count` consisting only of

   ## the character `c`.

   result = newString(count)

-  for i in 0..count-1:

-    result[i] = c

+  for i in 0..count-1: result[i] = c

+

+proc align*(s: string, count: int): string {.

+  noSideEffect, rtl, extern: "nsuAlignString".} =

+  ## Aligns a string `s` with spaces, so that is of length `count`. Spaces are

+  ## added before `s` resulting in right alignment. If ``s.len >= count``, no

+  ## spaces are added and `s` is returned unchanged.

+  if s.len < count: 

+    result = newString(count)

+    var spaces = count - s.len

+    for i in 0..spaces-1: result[i] = ' '

+    for i in spaces..count-1: result[i] = s[i-spaces]

+  else:

+    result = s

 

 proc startsWith*(s, prefix: string): bool {.noSideEffect,

   rtl, extern: "nsuStartsWith".} =

@@ -739,7 +751,7 @@ proc validEmailAddress*(s: string): bool {.noSideEffect,
   rtl, extern: "nsuValidEmailAddress".} = 

   ## returns true if `s` seems to be a valid e-mail address. 

   ## The checking also uses a domain list.

-  ## Note: This will be moved into another module soon.

+  ## Note: This will be moved to another module soon.

   const

     chars = Letters + Digits + {'!','#','$','%','&',

       '\'','*','+','/','=','?','^','_','`','{','}','|','~','-','.'}

@@ -862,3 +874,11 @@ proc editDistance*(a, b: string): int {.noSideEffect,
   #dealloc(row)

 

 {.pop.}

+

+when isMainModule:

+  assert align("abc", 4) == " abc"

+  assert align("a", 0) == "a"

+  assert align("1232", 6) == "  1232"

+

+  

+  

diff --git a/lib/system/systhread.nim b/lib/system/systhread.nim
index 70447f288..a124fa92f 100755
--- a/lib/system/systhread.nim
+++ b/lib/system/systhread.nim
@@ -88,19 +88,19 @@ type
   TLock* = TSysLock
   TThreadFunc* = proc (closure: pointer) {.cdecl.}
   
-DWORD WINAPI SuspendThread(
-  __in  HANDLE hThread
-);
-DWORD WINAPI ResumeThread(
-  __in  HANDLE hThread
-);
-DWORD WINAPI ThreadProc(
-  __in  LPVOID lpParameter
-);
+#DWORD WINAPI SuspendThread(
+#  __in  HANDLE hThread
+#);
+#DWORD WINAPI ResumeThread(
+#  __in  HANDLE hThread
+#);
+#DWORD WINAPI ThreadProc(
+#  __in  LPVOID lpParameter
+#);
 
 proc createThread*(t: var TThread, fn: TThreadFunc, closure: pointer) = 
   when defined(windows):
-    
+    nil  
   else: 
     nil
     #pthread_create(
diff --git a/rod/sigmatch.nim b/rod/sigmatch.nim
index a33265f40..6cb1632e3 100755
--- a/rod/sigmatch.nim
+++ b/rod/sigmatch.nim
@@ -89,7 +89,7 @@ proc writeMatches(c: TCandidate) =
   Writeln(stdout, "generic matches: " & $(c.genericMatches))
 
 proc getNotFoundError(c: PContext, n: PNode): string = 
-  # Gives a detailed error message; this is seperated from semDirectCall,
+  # Gives a detailed error message; this is separated from semDirectCall,
   # as semDirectCall is already pretty slow (and we need this information only
   # in case of an error).
   result = msgKindToString(errTypeMismatch)
@@ -516,7 +516,7 @@ proc ParamTypesMatch(c: PContext, m: var TCandidate, f, a: PType,
     x.calleeSym = m.calleeSym
     y.calleeSym = m.calleeSym
     z.calleeSym = m.calleeSym
-    var best = - 1
+    var best = -1
     for i in countup(0, sonsLen(arg) - 1): 
       # iterators are not first class yet, so ignore them
       if arg.sons[i].sym.kind in {skProc, skMethod, skConverter}: 
diff --git a/web/news.txt b/web/news.txt
index 25e34dd59..cfe9c054b 100755
--- a/web/news.txt
+++ b/web/news.txt
@@ -23,6 +23,7 @@ Additions
 
 - Added ``re.findAll``, ``pegs.findAll``.
 - Added ``os.findExe``.
+- Added ``strutils.align``. 
 - Pegs support a *captured search loop operator* ``{@}``.
 - Pegs support new built-ins: ``\letter``, ``\upper``, ``\lower``,
   ``\title``, ``\white``.