diff options
-rwxr-xr-x | lib/pure/strutils.nim | 26 | ||||
-rwxr-xr-x | lib/system/systhread.nim | 20 | ||||
-rwxr-xr-x | rod/sigmatch.nim | 4 | ||||
-rwxr-xr-x | web/news.txt | 1 |
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``. |