mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-27 19:06:31 +00:00
bugfix: semfold supports merging of '&'
This commit is contained in:
@@ -44,8 +44,21 @@ proc validEmailAddress*(s: string): bool {.noSideEffect,
|
||||
"aero", "jobs", "museum": return true
|
||||
return false
|
||||
|
||||
proc parseInt*(s: string, value: var int, validRange: TSlice[int]) {.
|
||||
noSideEffect, rtl, extern: "nmatchParseInt".} =
|
||||
## parses `s` into an integer in the range `validRange`. If successful,
|
||||
## `value` is modified to contain the result. Otherwise no exception is
|
||||
## raised and `value` is not touched; this way a reasonable default value
|
||||
## won't be overwritten.
|
||||
var x = value
|
||||
try:
|
||||
x = parseInt(s)
|
||||
except EOverflow:
|
||||
nil
|
||||
if x in validRange: value = x
|
||||
|
||||
when isMainModule:
|
||||
assert "wuseldusel@codehome.com".validEmailAddress
|
||||
doAssert "wuseldusel@codehome.com".validEmailAddress
|
||||
|
||||
{.pop.}
|
||||
|
||||
|
||||
@@ -196,7 +196,11 @@ proc parseBiggestInt*(s: string, number: var biggestInt, start = 0): int {.
|
||||
## parses an integer starting at `start` and stores the value into `number`.
|
||||
## Result is the number of processed chars or 0 if there is no integer.
|
||||
## `EOverflow` is raised if an overflow occurs.
|
||||
result = rawParseInt(s, number, start)
|
||||
var res: biggestInt = number
|
||||
# use 'res' for exception safety (don't write to 'number' in case of an
|
||||
# overflow exception:
|
||||
result = rawParseInt(s, res, start)
|
||||
number = res
|
||||
|
||||
proc parseInt*(s: string, number: var int, start = 0): int {.
|
||||
rtl, extern: "npuParseInt", noSideEffect.} =
|
||||
|
||||
Reference in New Issue
Block a user