PathSearcher runs the regex on each line, not on the text as a whole. So something like [a-z]+\n[0-9]+ will not be matched.
This was a design decision for efficiency. We only need to have each line, not the whole file. Right now the file reader only reads 10k at a time, and searches on the lines returned.
I'm not sure how to handle multiline regexs efficiently. How to make it handle a 100MB file? I'm opening this for discussion. As I build out the PathReplacer, it will have the same limitation.
One approach could be to:
- set buffer = ''
- read 10k chunk, append it onto buffer
- run the regex buffer
- if match: buffer = buffer.slice(match.end)
- goto 2
But on files with no match, it will read the entire file into memory.