Expose pattern and input string
This commit is contained in:
parent
ccf5771441
commit
4f4a7dfa5b
1 changed files with 8 additions and 6 deletions
10
src/nre.nim
10
src/nre.nim
|
|
@ -17,8 +17,10 @@ type
|
||||||
captureNameToId: Table[string, int]
|
captureNameToId: Table[string, int]
|
||||||
|
|
||||||
RegexMatch* = ref object
|
RegexMatch* = ref object
|
||||||
pattern: Regex
|
pattern*: Regex ## The regex doing the matching.
|
||||||
inputStr: string
|
## Not nil.
|
||||||
|
str*: string ## The string that was matched against.
|
||||||
|
## Not nil.
|
||||||
pcreMatchBounds: seq[Slice[cint]] ## First item is the bounds of the match
|
pcreMatchBounds: seq[Slice[cint]] ## First item is the bounds of the match
|
||||||
## Other items are the captures
|
## Other items are the captures
|
||||||
## `a` is inclusive start, `b` is exclusive end
|
## `a` is inclusive start, `b` is exclusive end
|
||||||
|
|
@ -83,7 +85,7 @@ proc `[]`*(self: Captures, i: int): string =
|
||||||
# capture count, plus the entire string
|
# capture count, plus the entire string
|
||||||
self.matchCache = newSeq[string](self.pattern.captureCount + 1)
|
self.matchCache = newSeq[string](self.pattern.captureCount + 1)
|
||||||
if self.matchCache[i + 1] == nil:
|
if self.matchCache[i + 1] == nil:
|
||||||
self.matchCache[i + 1] = self.inputStr[bounds.a .. bounds.b-1]
|
self.matchCache[i + 1] = self.str[bounds.a .. bounds.b-1]
|
||||||
return self.matchCache[i + 1]
|
return self.matchCache[i + 1]
|
||||||
else:
|
else:
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -255,7 +257,7 @@ proc exec*(self: Regex, str: string, start = 0): Option[RegexMatch] =
|
||||||
var result: RegexMatch
|
var result: RegexMatch
|
||||||
new(result)
|
new(result)
|
||||||
result.pattern = self
|
result.pattern = self
|
||||||
result.inputStr = str
|
result.str = str
|
||||||
# See PCRE man pages.
|
# See PCRE man pages.
|
||||||
# 2x capture count to make room for start-end pairs
|
# 2x capture count to make room for start-end pairs
|
||||||
# 1x capture count as slack space for PCRE
|
# 1x capture count as slack space for PCRE
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue