mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-06 21:17:48 +00:00
Merge branch 'master' of github.com:Araq/Nimrod
This commit is contained in:
114
.gitignore
vendored
114
.gitignore
vendored
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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:
|
||||
##
|
||||
|
||||
Reference in New Issue
Block a user