diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-06-02 15:30:16 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-06-02 15:30:16 +0200 |
commit | 99be6dce81dcd7146cfc2404dedb786716254471 (patch) | |
tree | 238098ac1c88bf3a94f6d61b466939c9a6a12e4d | |
parent | b4d0ea663481a386ec21e828d0d0209f8ff51f83 (diff) | |
parent | 4febf2784aeb75529f3bb6fd8a988aecadc0ef78 (diff) | |
download | Nim-99be6dce81dcd7146cfc2404dedb786716254471.tar.gz |
Merge pull request #4157 from flaviut/update-nre-docs
Generate NRE docs for website
-rw-r--r-- | doc/lib.txt | 4 | ||||
-rw-r--r-- | lib/impure/nre.nim | 81 | ||||
-rw-r--r-- | tools/nimweb.nim | 20 | ||||
-rw-r--r-- | web/website.ini | 2 |
4 files changed, 50 insertions, 57 deletions
diff --git a/doc/lib.txt b/doc/lib.txt index 24ba0243e..f749763a5 100644 --- a/doc/lib.txt +++ b/doc/lib.txt @@ -446,6 +446,10 @@ Regular expressions This module contains procedures and operators for handling regular expressions. The current implementation uses PCRE. +* `nre <nre.html>`_ + Another implementation of procedures for using regular expressions. Also uses + PCRE. + Database support ---------------- diff --git a/lib/impure/nre.nim b/lib/impure/nre.nim index b739e9eff..c636c5203 100644 --- a/lib/impure/nre.nim +++ b/lib/impure/nre.nim @@ -26,46 +26,35 @@ export options ## Licencing ## --------- ## -## PCRE has some additional terms that you must comply with if you use this module.:: +## PCRE has `some additional terms`_ that you must agree to in order to use +## this module. ## -## > Copyright (c) 1997-2001 University of Cambridge -## > -## > Permission is granted to anyone to use this software for any purpose on any -## > computer system, and to redistribute it freely, subject to the following -## > restrictions: -## > -## > 1. This software is distributed in the hope that it will be useful, -## > but WITHOUT ANY WARRANTY; without even the implied warranty of -## > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -## > -## > 2. The origin of this software must not be misrepresented, either by -## > explicit claim or by omission. In practice, this means that if you use -## > PCRE in software that you distribute to others, commercially or -## > otherwise, you must put a sentence like this -## > -## > Regular expression support is provided by the PCRE library package, -## > which is open source software, written by Philip Hazel, and copyright -## > by the University of Cambridge, England. -## > -## > somewhere reasonably visible in your documentation and in any relevant -## > files or online help data or similar. A reference to the ftp site for -## > the source, that is, to -## > -## > ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ -## > -## > should also be given in the documentation. However, this condition is not -## > intended to apply to whole chains of software. If package A includes PCRE, -## > it must acknowledge it, but if package B is software that includes package -## > A, the condition is not imposed on package B (unless it uses PCRE -## > independently). -## > -## > 3. Altered versions must be plainly marked as such, and must not be -## > misrepresented as being the original software. -## > -## > 4. If PCRE is embedded in any software that is released under the GNU -## > General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL), -## > then the terms of that licence shall supersede any condition above with -## > which it is incompatible. +## .. _`some additional terms`: http://pcre.sourceforge.net/license.txt +## +## Example +## ------- +## +## .. code-block:: nim +## +## import nre +## +## let vowels = re"[aeoui]" +## +## for match in "moigagoo".findIter(vowels): +## echo match.matchBounds +## # (a: 1, b: 1) +## # (a: 2, b: 2) +## # (a: 4, b: 4) +## # (a: 6, b: 6) +## # (a: 7, b: 7) +## +## import options # critical to use isSome() and get() +## let firstVowel = "foo".find(vowels) +## let hasVowel = firstVowel.isSome() +## if hasVowel: +## let matchBounds = firstVowel.get().captureBounds[-1] +## echo "first vowel @", matchBounds.get().a +## # first vowel @1 # Type definitions {{{ @@ -127,11 +116,11 @@ type ## - ``(*NO_STUDY)`` - turn off studying; study is enabled by default ## ## For more details on the leading option groups, see the `Option - ## Setting <http://man7.org/linux/man-pages/man3/pcresyntax.3.html#OPTION_SETTING>`__ + ## Setting <http://man7.org/linux/man-pages/man3/pcresyntax.3.html#OPTION_SETTING>`_ ## and the `Newline - ## Convention <http://man7.org/linux/man-pages/man3/pcresyntax.3.html#NEWLINE_CONVENTION>`__ + ## Convention <http://man7.org/linux/man-pages/man3/pcresyntax.3.html#NEWLINE_CONVENTION>`_ ## sections of the `PCRE syntax - ## manual <http://man7.org/linux/man-pages/man3/pcresyntax.3.html>`__. + ## manual <http://man7.org/linux/man-pages/man3/pcresyntax.3.html>`_. pattern*: string ## not nil pcreObj: ptr pcre.Pcre ## not nil pcreExtra: ptr pcre.ExtraData ## nil @@ -495,17 +484,17 @@ proc matchImpl(str: string, pattern: Regex, start, endpos: int, flags: int): Opt raise RegexInternalError(msg : "Unknown internal error: " & $execRet) proc match*(str: string, pattern: Regex, start = 0, endpos = int.high): Option[RegexMatch] = - ## Like ```find(...)`` <#proc-find>`__, but anchored to the start of the + ## Like ```find(...)`` <#proc-find>`_, but anchored to the start of the ## string. This means that ``"foo".match(re"f") == true``, but ## ``"foo".match(re"o") == false``. return str.matchImpl(pattern, start, endpos, pcre.ANCHORED) iterator findIter*(str: string, pattern: Regex, start = 0, endpos = int.high): RegexMatch = - ## Works the same as ```find(...)`` <#proc-find>`__, but finds every + ## Works the same as ```find(...)`` <#proc-find>`_, but finds every ## non-overlapping match. ``"2222".find(re"22")`` is ``"22", "22"``, not ## ``"22", "22", "22"``. ## - ## Arguments are the same as ```find(...)`` <#proc-find>`__ + ## Arguments are the same as ```find(...)`` <#proc-find>`_ ## ## Variants: ## @@ -593,7 +582,7 @@ proc split*(str: string, pattern: Regex, maxSplit = -1, start = 0): seq[string] ## strings in the output seq. ## ``"1.2.3".split(re"\.", maxsplit = 2) == @["1", "2.3"]`` ## - ## ``start`` behaves the same as in ```find(...)`` <#proc-find>`__. + ## ``start`` behaves the same as in ```find(...)`` <#proc-find>`_. result = @[] var lastIdx = start var splits = 0 diff --git a/tools/nimweb.nim b/tools/nimweb.nim index d94a75162..8b7cb381f 100644 --- a/tools/nimweb.nim +++ b/tools/nimweb.nim @@ -165,10 +165,10 @@ proc walkDirRecursively(s: var seq[string], root, ext: string) = proc addFiles(s: var seq[string], dir, ext: string, patterns: seq[string]) = for p in items(patterns): + if existsFile(dir / addFileExt(p, ext)): + s.add(dir / addFileExt(p, ext)) if existsDir(dir / p): walkDirRecursively(s, dir / p, ext) - else: - add(s, dir / addFileExt(p, ext)) proc parseIniFile(c: var TConfigData) = var @@ -276,18 +276,18 @@ proc buildDoc(c: var TConfigData, destPath: string) = commands = newSeq[string](len(c.doc) + len(c.srcdoc) + len(c.srcdoc2)) i = 0 for d in items(c.doc): - commands[i] = "nim rst2html $# --docSeeSrcUrl:$#/$#/$# -o:$# --index:on $#" % - [c.nimArgs, c.gitRepo, c.gitCommit, d.pathPart, + commands[i] = "nim rst2html $# --docSeeSrcUrl:$#/$# -o:$# --index:on $#" % + [c.nimArgs, c.gitRepo, c.gitCommit, destPath / changeFileExt(splitFile(d).name, "html"), d] i.inc for d in items(c.srcdoc): - commands[i] = "nim doc $# --docSeeSrcUrl:$#/$#/$# -o:$# --index:on $#" % - [c.nimArgs, c.gitRepo, c.gitCommit, d.pathPart, + commands[i] = "nim doc $# --docSeeSrcUrl:$#/$# -o:$# --index:on $#" % + [c.nimArgs, c.gitRepo, c.gitCommit, destPath / changeFileExt(splitFile(d).name, "html"), d] i.inc for d in items(c.srcdoc2): - commands[i] = "nim doc2 $# --docSeeSrcUrl:$#/$#/$# -o:$# --index:on $#" % - [c.nimArgs, c.gitRepo, c.gitCommit, d.pathPart, + commands[i] = "nim doc2 $# --docSeeSrcUrl:$#/$# -o:$# --index:on $#" % + [c.nimArgs, c.gitRepo, c.gitCommit, destPath / changeFileExt(splitFile(d).name, "html"), d] i.inc @@ -319,8 +319,8 @@ proc buildAddDoc(c: var TConfigData, destPath: string) = # build additional documentation (without the index): var commands = newSeq[string](c.webdoc.len) for i, doc in pairs(c.webdoc): - commands[i] = "nim doc2 $# --docSeeSrcUrl:$#/$#/$# -o:$# $#" % - [c.nimArgs, c.gitRepo, c.gitCommit, doc.pathPart, + commands[i] = "nim doc2 $# --docSeeSrcUrl:$#/$# -o:$# $#" % + [c.nimArgs, c.gitRepo, c.gitCommit, destPath / changeFileExt(splitFile(doc).name, "html"), doc] mexec(commands, c.numProcessors) diff --git a/web/website.ini b/web/website.ini index 35afd349e..58207a1c0 100644 --- a/web/website.ini +++ b/web/website.ini @@ -35,7 +35,7 @@ doc: "nimfix.txt;nimsuggest.txt;nep1.txt;nims.txt" pdf: "manual.txt;lib;tut1;tut2;nimc;niminst;gc" srcdoc2: "system.nim;system/nimscript;pure/ospaths" srcdoc2: "core/macros;pure/marshal;core/typeinfo" -srcdoc2: "impure/re;pure/typetraits" +srcdoc2: "impure/re;impure/nre;pure/typetraits" srcdoc2: "pure/concurrency/threadpool.nim;pure/concurrency/cpuinfo.nim" srcdoc: "system/threads.nim;system/channels.nim;js/dom" srcdoc2: "pure/os;pure/strutils;pure/math;pure/matchers;pure/algorithm" |