use single backtick (#17141)

This commit is contained in:
flywind 2021-02-21 21:53:28 -06:00 • committed by GitHub
commit 4556901572
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 68 additions and 68 deletions

View file

@ -13,24 +13,24 @@
import unicode
proc editDistance*(a, b: string): int {.noSideEffect.} =
## Returns the **unicode-rune** edit distance between ``a`` and ``b``.
## Returns the **unicode-rune** edit distance between `a` and `b`.
##
## This uses the `Levenshtein`:idx: distance algorithm with only a linear
## memory overhead.
runnableExamples: static: doAssert editdistance("Kitten", "Bitten") == 1
if len(a) > len(b):
# make ``b`` the longer string
# make `b` the longer string
return editDistance(b, a)
# strip common prefix
var
iStart = 0 ## The character starting index of the first rune in both strings ``a`` and ``b``
iStart = 0 ## The character starting index of the first rune in both strings `a` and `b`
iNextA = 0
iNextB = 0
runeA, runeB: Rune
lenRunesA = 0 ## The number of relevant runes in string ``a``.
lenRunesB = 0 ## The number of relevant runes in string ``b``.
lenRunesA = 0 ## The number of relevant runes in string `a`.
lenRunesB = 0 ## The number of relevant runes in string `b`.
block commonPrefix:
# ``a`` is the shorter string
# `a` is the shorter string
while iStart < len(a):
iNextA = iStart
a.fastRuneAt(iNextA, runeA, doInc = true)
@ -44,9 +44,9 @@ proc editDistance*(a, b: string): int {.noSideEffect.} =
var
# we know that we are either at the start of the strings
# or that the current value of runeA is not equal to runeB
# => start search for common suffix after the current rune (``i_next_*``)
iEndA = iNextA ## The exclusive upper index bound of string ``a``.
iEndB = iNextB ## The exclusive upper index bound of string ``b``.
# => start search for common suffix after the current rune (`i_next_*`)
iEndA = iNextA ## The exclusive upper index bound of string `a`.
iEndB = iNextB ## The exclusive upper index bound of string `b`.
iCurrentA = iNextA
iCurrentB = iNextB
block commonSuffix:
@ -69,8 +69,8 @@ proc editDistance*(a, b: string): int {.noSideEffect.} =
addRunesB = 0
iCurrentA = iNextA
iCurrentB = iNextB
if iCurrentA >= len(a): # ``a`` exhausted
if iCurrentB < len(b): # ``b`` not exhausted
if iCurrentA >= len(a): # `a` exhausted
if iCurrentB < len(b): # `b` not exhausted
iEndA = iCurrentA
iEndB = iCurrentB
inc(lenRunesA, addRunesA)
@ -79,7 +79,7 @@ proc editDistance*(a, b: string): int {.noSideEffect.} =
b.fastRuneAt(iEndB, runeB)
inc(lenRunesB)
if iEndB >= len(b): break
elif iCurrentB >= len(b): # ``b`` exhausted and ``a`` not exhausted
elif iCurrentB >= len(b): # `b` exhausted and `a` not exhausted
iEndA = iCurrentA
iEndB = iCurrentB
inc(lenRunesA, addRunesA)

View file

@ -12,7 +12,7 @@
## **Since**: Version 1.4.
##
## One can test for the existance of this standard module
## via ``defined(nimHasEffectTraitsModule)``.
## via `defined(nimHasEffectTraitsModule)`.
import macros
@ -22,33 +22,33 @@ proc isGcSafeImpl(n: NimNode): bool = discard "see compiler/vmops.nim"
proc hasNoSideEffectsImpl(n: NimNode): bool = discard "see compiler/vmops.nim"
proc getRaisesList*(fn: NimNode): NimNode =
## Extracts the ``.raises`` list of the func/proc/etc ``fn``.
## ``fn`` has to be a resolved symbol of kind ``nnkSym``. This
## implies that the macro that calls this proc should accept ``typed``
## arguments and not ``untyped`` arguments.
## Extracts the `.raises` list of the func/proc/etc `fn`.
## `fn` has to be a resolved symbol of kind `nnkSym`. This
## implies that the macro that calls this proc should accept `typed`
## arguments and not `untyped` arguments.
expectKind fn, nnkSym
result = getRaisesListImpl(fn)
proc getTagsList*(fn: NimNode): NimNode =
## Extracts the ``.tags`` list of the func/proc/etc ``fn``.
## ``fn`` has to be a resolved symbol of kind ``nnkSym``. This
## implies that the macro that calls this proc should accept ``typed``
## arguments and not ``untyped`` arguments.
## Extracts the `.tags` list of the func/proc/etc `fn`.
## `fn` has to be a resolved symbol of kind `nnkSym`. This
## implies that the macro that calls this proc should accept `typed`
## arguments and not `untyped` arguments.
expectKind fn, nnkSym
result = getTagsListImpl(fn)
proc isGcSafe*(fn: NimNode): bool =
## Return true if the func/proc/etc ``fn`` is `gcsafe`.
## ``fn`` has to be a resolved symbol of kind ``nnkSym``. This
## implies that the macro that calls this proc should accept ``typed``
## arguments and not ``untyped`` arguments.
## Return true if the func/proc/etc `fn` is `gcsafe`.
## `fn` has to be a resolved symbol of kind `nnkSym`. This
## implies that the macro that calls this proc should accept `typed`
## arguments and not `untyped` arguments.
expectKind fn, nnkSym
result = isGcSafeImpl(fn)
proc hasNoSideEffects*(fn: NimNode): bool =
## Return true if the func/proc/etc ``fn`` has `noSideEffect`.
## ``fn`` has to be a resolved symbol of kind ``nnkSym``. This
## implies that the macro that calls this proc should accept ``typed``
## arguments and not ``untyped`` arguments.
## Return true if the func/proc/etc `fn` has `noSideEffect`.
## `fn` has to be a resolved symbol of kind `nnkSym`. This
## implies that the macro that calls this proc should accept `typed`
## arguments and not `untyped` arguments.
expectKind fn, nnkSym
result = hasNoSideEffectsImpl(fn)

View file

@ -1,5 +1,5 @@
## This module provides further logic operators like 'forall' and 'exists'
## They are only supported in ``.ensures`` etc pragmas.
## They are only supported in `.ensures` etc pragmas.
proc `->`*(a, b: bool): bool {.magic: "Implies".}
proc `<->`*(a, b: bool): bool {.magic: "Iff".}

View file

@ -60,7 +60,7 @@ func sumPairwise[T](x: openArray[T], i0, n: int): T =
result = sumPairwise(x, i0, n2) + sumPairwise(x, i0 + n2, n - n2)
func sumPairs*[T](x: openArray[T]): T =
## Pairwise (cascade) summation of ``x[i0:i0+n-1]``, with O(log n) error growth
## Pairwise (cascade) summation of `x[i0:i0+n-1]`, with O(log n) error growth
## (vs O(n) for a simple loop) with negligible performance cost if
## the base case is large enough.
##

View file

@ -11,7 +11,7 @@ when defined(nimdoc):
type
Impl = distinct int64
Time* = Impl ## \
## Wrapper for ``time_t``. On posix, this is an alias to ``posix.Time``.
## Wrapper for `time_t`. On posix, this is an alias to `posix.Time`.
elif defined(windows):
when defined(i386) and defined(gcc):
type Time* {.importc: "time_t", header: "<time.h>".} = distinct int32

View file

@ -7,7 +7,7 @@
# distribution, for details about the copyright.
#
## This module implements the ``with`` macro for easy
## This module implements the `with` macro for easy
## function chaining. See https://github.com/nim-lang/RFCs/issues/193
## and https://github.com/nim-lang/RFCs/issues/192 for details leading to this
## particular design.