While looking into the backtick issue I gave the code a lookover and suspected something with the regex logic being wrong.
I found the logic for that to be pretty hard to grasp/follow. I have refactored the code to hopefully be easier to understand.
Instead of going through the elements one by one in a loop and inquiring which step we are at, just use the match results from the regex.
The regex now matches everything which means we can branch on the match data and learn if we are in markdown or a codeblock, handling that as appropriate. The state is entirely contained within one iteration.
I benchmarked this and performance is on par with the current implementation.
While looking into the backtick issue I gave the code a lookover and suspected something with the regex logic being wrong.
I found the logic for that to be pretty hard to grasp/follow. I have refactored the code to hopefully be easier to understand. Instead of going through the elements one by one in a loop and inquiring which step we are at, just use the match results from the regex.
The regex now matches everything which means we can branch on the match data and learn if we are in markdown or a codeblock, handling that as appropriate. The state is entirely contained within one iteration.
I benchmarked this and performance is on par with the current implementation.