Linear time NFA findAll
Types
RegexMatches = object a, b: Submatches m: Matches c: Capts look: Lookaround
Procs
func fillMatchImpl(m: var RegexMatch; mi: MatchItemIdx; ms: RegexMatches; regex: Regex) {...}{.inline, raises: [], tags: [].}
func dummyMatch(ms: var RegexMatches; i: int) {...}{.inline, raises: [], tags: [].}
- hack to support split last value. we need to add the end boundary if it has not matched the end (no match implies this too)
func findSomeImpl(text: string; regex: Regex; ms: var RegexMatches; start: Natural = 0; flags: set[MatchFlag] = {}): int {...}{. raises: [], tags: [RootEffect].}
func findSomeOptImpl(text: string; regex: Regex; ms: var RegexMatches; start: Natural): int {...}{.raises: [], tags: [RootEffect].}
Iterators
iterator bounds(ms: RegexMatches): Slice[int] {...}{.inline, raises: [], tags: [].}
iterator items(ms: RegexMatches): MatchItemIdx {...}{.inline, raises: [], tags: [].}