diff options
author | Araq <rumpf_a@web.de> | 2013-05-11 10:54:06 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-05-11 10:54:06 +0200 |
commit | f114e66088ee149f37aab5c71d0976f5e6ae9517 (patch) | |
tree | 96cf82a102e066d092f89c97975715963a7e39dd | |
parent | adedfc3a10ca6fb4b3c2f467b2d1f36da678c164 (diff) | |
parent | 40b411fb1c319a74daedce524c5d821b6bdc0e45 (diff) | |
download | Nim-f114e66088ee149f37aab5c71d0976f5e6ae9517.tar.gz |
Merge branch 'master' of github.com:Araq/Nimrod
-rw-r--r-- | .gitignore | 114 | ||||
-rw-r--r-- | lib/pure/strutils.nim | 91 | ||||
-rw-r--r-- | lib/system.nim | 17 | ||||
-rw-r--r-- | lib/system/threads.nim | 4 |
4 files changed, 176 insertions, 50 deletions
diff --git a/.gitignore b/.gitignore index 59b76e242..7bca71531 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,117 @@ examples/cross_calculator/android/libs/ examples/cross_calculator/android/local.properties examples/cross_calculator/android/obj/ examples/cross_calculator/android/tags + +# Generated files. +/compile.json +/compiler/c2nim/c2nim +/compiler/pas2nim/pas2nim +/compiler/service +/examples/allany +/examples/cairoex +/examples/cgiex +/examples/curlex +/examples/docstrings +/examples/filterex +/examples/fizzbuzz +/examples/gtk/ex1 +/examples/gtk/ex2 +/examples/gtk/ex3 +/examples/gtk/ex4 +/examples/gtk/ex5 +/examples/gtk/ex6 +/examples/gtk/ex7 +/examples/gtk/ex8 +/examples/gtk/ex9 +/examples/hallo +/examples/htmlrefs +/examples/htmltitle +/examples/httpserver2 +/examples/iupex1 +/examples/keyval +/examples/keyval2 +/examples/luaex +/examples/maximum +/examples/parsecfgex +/examples/pythonex +/examples/sdlex +/examples/statcsv +/examples/tclex +/examples/transff +/examples/tunit +/examples/wingui +/examples/x11ex +/lib/libnimrtl.dylib +/lib/libserver.dylib +/lib/pure/actors +/lib/pure/algorithm +/lib/pure/asyncio +/lib/pure/base64 +/lib/pure/browsers +/lib/pure/cgi +/lib/pure/collections/sequtils +/lib/pure/collections/tables +/lib/pure/colors +/lib/pure/complex +/lib/pure/cookies +/lib/pure/dynlib +/lib/pure/encodings +/lib/pure/endians +/lib/pure/events +/lib/pure/ftpclient +/lib/pure/gentabs +/lib/pure/hashes +/lib/pure/htmlgen +/lib/pure/htmlparser +/lib/pure/httpclient +/lib/pure/httpserver +/lib/pure/irc +/lib/pure/json +/lib/pure/lexbase +/lib/pure/lib/ +/lib/pure/marshal +/lib/pure/matchers +/lib/pure/math +/lib/pure/md5 +/lib/pure/memfiles +/lib/pure/mimetypes +/lib/pure/nimprof +/lib/pure/oids +/lib/pure/os +/lib/pure/osproc +/lib/pure/parsecfg +/lib/pure/parsecsv +/lib/pure/parseopt +/lib/pure/parsesql +/lib/pure/parseurl +/lib/pure/parseutils +/lib/pure/parsexml +/lib/pure/pegs +/lib/pure/redis +/lib/pure/romans +/lib/pure/ropes +/lib/pure/scgi +/lib/pure/smtp +/lib/pure/sockets +/lib/pure/streams +/lib/pure/strtabs +/lib/pure/strutils +/lib/pure/subexes +/lib/pure/terminal +/lib/pure/times +/lib/pure/typetraits +/lib/pure/unicode +/lib/pure/unittest +/lib/pure/uri +/lib/pure/xmldom +/lib/pure/xmldomparser +/lib/pure/xmlparser +/lib/pure/xmltree +/lib/system/sysio +/lib/weird +/lib/wrappers/gtk/gtk2 +/reject.json +/run.json +/testresults.html +/testresults.json +/tools/nimgrep diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim index b5f5a41eb..6f34b1996 100644 --- a/lib/pure/strutils.nim +++ b/lib/pure/strutils.nim @@ -165,45 +165,50 @@ proc toOctal*(c: char): string {.noSideEffect, rtl, extern: "nsuToOctal".} = result[i] = Chr(val mod 8 + ord('0')) val = val div 8 -iterator split*(s: string, seps: set[char] = Whitespace): string = - ## Splits the string `s` into substrings. - ## - ## Substrings are separated by a substring containing only `seps`. - ## Examples: - ## - ## .. code-block:: nimrod - ## for word in split(" this is an example "): - ## writeln(stdout, word) - ## - ## Results in: - ## - ## .. code-block:: nimrod - ## "this" - ## "is" - ## "an" - ## "example" - ## - ## for word in split(";;this;is;an;;example;;;", {';'}): - ## writeln(stdout, word) - ## - ## produces the same output. The code: - ## - ## .. code-block:: nimrod - ## let date = "2012-11-20T22:08:08.398990" - ## let separators = {' ', '-', ':', 'T'} - ## for number in split(date, separators): - ## writeln(stdout, number) - ## - ## Results in: - ## - ## .. code-block:: nimrod - ## "2012" - ## "11" - ## "20" - ## "22" - ## "08" - ## "08.398990" - ## +iterator split*(s: string, seps: set[char] = Whitespace): string = + ## Splits the string `s` into substrings using a group of separators. + ## + ## Substrings are separated by a substring containing only `seps`. Note + ## that whole sequences of characters found in ``seps`` will be counted as + ## a single split point and leading/trailing separators will be ignored. + ## The following example: + ## + ## .. code-block:: nimrod + ## for word in split(" this is an example "): + ## writeln(stdout, word) + ## + ## ...generates this output: + ## + ## .. code-block:: + ## "this" + ## "is" + ## "an" + ## "example" + ## + ## And the following code: + ## + ## .. code-block:: nimrod + ## for word in split(";;this;is;an;;example;;;", {';'}): + ## writeln(stdout, word) + ## + ## ...produces the same output as the first example. The code: + ## + ## .. code-block:: nimrod + ## let date = "2012-11-20T22:08:08.398990" + ## let separators = {' ', '-', ':', 'T'} + ## for number in split(date, separators): + ## writeln(stdout, number) + ## + ## ...results in: + ## + ## .. code-block:: + ## "2012" + ## "11" + ## "20" + ## "22" + ## "08" + ## "08.398990" + ## var last = 0 assert(not ('\0' in seps)) while last < len(s): @@ -214,10 +219,12 @@ iterator split*(s: string, seps: set[char] = Whitespace): string = yield substr(s, first, last-1) iterator split*(s: string, sep: char): string = - ## Splits the string `s` into substrings. + ## Splits the string `s` into substrings using a single separator. ## ## Substrings are separated by the character `sep`. - ## Example: + ## Unlike the version of the iterator which accepts a set of separator + ## characters, this proc will not coalesce groups of the + ## separator, returning a string for each found character. The code: ## ## .. code-block:: nimrod ## for word in split(";;this;is;an;;example;;;", ';'): @@ -225,7 +232,7 @@ iterator split*(s: string, sep: char): string = ## ## Results in: ## - ## .. code-block:: nimrod + ## .. code-block:: ## "" ## "" ## "this" diff --git a/lib/system.nim b/lib/system.nim index 5dafd6e13..4cdc212b9 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -909,12 +909,17 @@ var programResult* {.exportc: "nim_program_result".}: int proc quit*(errorcode: int = QuitSuccess) {. magic: "Exit", importc: "exit", noDecl, noReturn.} - ## stops the program immediately; before stopping the program the - ## "quit procedures" are called in the opposite order they were added - ## with ``addQuitProc``. ``quit`` never returns and ignores any - ## exception that may have been raised by the quit procedures. - ## It does *not* call the garbage collector to free all the memory, - ## unless a quit procedure calls ``GC_collect``. + ## Stops the program immediately with an exit code. + ## + ## Before stopping the program the "quit procedures" are called in the + ## opposite order they were added with ``addQuitProc``. ``quit`` never + ## returns and ignores any exception that may have been raised by the quit + ## procedures. It does *not* call the garbage collector to free all the + ## memory, unless a quit procedure calls ``GC_collect``. + ## + ## The proc ``quit(QuitSuccess)`` is called implicitly when your nimrod + ## program finishes without incident. A raised unhandled exception is + ## equivalent to calling ``quit(QuitFailure)``. template sysAssert(cond: bool, msg: string) = when defined(useSysAssert): diff --git a/lib/system/threads.nim b/lib/system/threads.nim index aba3bb275..7d74de92d 100644 --- a/lib/system/threads.nim +++ b/lib/system/threads.nim @@ -14,8 +14,8 @@ ## Nimrod's memory model for threads is quite different from other common ## programming languages (C, Pascal): Each thread has its own ## (garbage collected) heap and sharing of memory is restricted. This helps -## to prevent race conditions and improves efficiency. See the manual for -## details of this memory model. +## to prevent race conditions and improves efficiency. See `the manual for +## details of this memory model <manual.html#threads>`_. ## ## Example: ## |