Update NRE documentation

This commit is contained in:
Flaviu Tamas 2016-05-13 16:43:43 -04:00
commit 4febf2784a

View file

@ -24,46 +24,35 @@ from unicode import runeLenAt
## Licencing ## 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 ## .. _`some additional terms`: http://pcre.sourceforge.net/license.txt
## > ##
## > Permission is granted to anyone to use this software for any purpose on any ## Example
## > computer system, and to redistribute it freely, subject to the following ## -------
## > restrictions: ##
## > ## .. code-block:: nim
## > 1. This software is distributed in the hope that it will be useful, ##
## > but WITHOUT ANY WARRANTY; without even the implied warranty of ## import nre
## > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ##
## > ## let vowels = re"[aeoui]"
## > 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 ## for match in "moigagoo".findIter(vowels):
## > PCRE in software that you distribute to others, commercially or ## echo match.matchBounds
## > otherwise, you must put a sentence like this ## # (a: 1, b: 1)
## > ## # (a: 2, b: 2)
## > Regular expression support is provided by the PCRE library package, ## # (a: 4, b: 4)
## > which is open source software, written by Philip Hazel, and copyright ## # (a: 6, b: 6)
## > by the University of Cambridge, England. ## # (a: 7, b: 7)
## > ##
## > somewhere reasonably visible in your documentation and in any relevant ## import options # critical to use isSome() and get()
## > files or online help data or similar. A reference to the ftp site for ## let firstVowel = "foo".find(vowels)
## > the source, that is, to ## let hasVowel = firstVowel.isSome()
## > ## if hasVowel:
## > ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ ## let matchBounds = firstVowel.get().captureBounds[-1]
## > ## echo "first vowel @", matchBounds.get().a
## > should also be given in the documentation. However, this condition is not ## # first vowel @1
## > 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.
# Type definitions {{{ # Type definitions {{{
@ -125,11 +114,11 @@ type
## - ``(*NO_STUDY)`` - turn off studying; study is enabled by default ## - ``(*NO_STUDY)`` - turn off studying; study is enabled by default
## ##
## For more details on the leading option groups, see the `Option ## 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 ## 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 ## 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 pattern*: string ## not nil
pcreObj: ptr pcre.Pcre ## not nil pcreObj: ptr pcre.Pcre ## not nil
pcreExtra: ptr pcre.ExtraData ## nil pcreExtra: ptr pcre.ExtraData ## nil
@ -493,17 +482,17 @@ proc matchImpl(str: string, pattern: Regex, start, endpos: int, flags: int): Opt
raise RegexInternalError(msg : "Unknown internal error: " & $execRet) raise RegexInternalError(msg : "Unknown internal error: " & $execRet)
proc match*(str: string, pattern: Regex, start = 0, endpos = int.high): Option[RegexMatch] = 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 ## string. This means that ``"foo".match(re"f") == true``, but
## ``"foo".match(re"o") == false``. ## ``"foo".match(re"o") == false``.
return str.matchImpl(pattern, start, endpos, pcre.ANCHORED) return str.matchImpl(pattern, start, endpos, pcre.ANCHORED)
iterator findIter*(str: string, pattern: Regex, start = 0, endpos = int.high): RegexMatch = 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 ## non-overlapping match. ``"2222".find(re"22")`` is ``"22", "22"``, not
## ``"22", "22", "22"``. ## ``"22", "22", "22"``.
## ##
## Arguments are the same as ```find(...)`` <#proc-find>`__ ## Arguments are the same as ```find(...)`` <#proc-find>`_
## ##
## Variants: ## Variants:
## ##
@ -581,7 +570,7 @@ proc split*(str: string, pattern: Regex, maxSplit = -1, start = 0): seq[string]
## strings in the output seq. ## strings in the output seq.
## ``"1.2.3".split(re"\.", maxsplit = 2) == @["1", "2.3"]`` ## ``"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 = @[] result = @[]
var lastIdx = start var lastIdx = start
var splits = 0 var splits = 0