-
Notifications
You must be signed in to change notification settings - Fork 884
Commit 1caf028
Optimize raw HTML post-processor (#1510)
Don't precompute placeholder replacements in raw HTML post-processor. Fixes #1507.
Previously, the raw HTML post-processor would precompute all possible replacements for placeholders in a string, based on the HTML stash. It would then apply a regular expression substitution using these replacements. Finally, if the text changed, it would recurse, and do all that again. This was inefficient because placeholders were re-computed each time it recursed, and because only a few replacements would be used anyway.
This change moves the recursion into the regular expression substitution, so that:
1. the regular expression does minimal work on the text (contrary to re-scanning text already scanned in previous frames);
2. but more importantly, replacements aren't computed ahead of time anymore (and even less *several times*), and only fetched from the HTML stash as placeholders are found in the text.
The substitution function relies on the regular expression groups ordering: we make sure to match `<p>PLACEHOLDER</p>` first, before `PLACEHOLDER`. The presence of a wrapping `p` tag indicates whether to wrap again the substitution result, or not (also depending on whether the substituted HTML is a block-level tag).1 parent f6cfc5c commit 1caf028
2 files changed
+15
-26
lines changedLines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
15 | 15 |
| |
16 | 16 |
| |
17 | 17 |
| |
18 | + | ||
18 | 19 |
| |
19 | 20 |
| |
20 | 21 |
| |
|
Lines changed: 14 additions & 26 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
28 | 28 |
| |
29 | 29 |
| |
30 | 30 |
| |
31 | - | ||
32 | 31 |
| |
33 | 32 |
| |
34 | 33 |
| |
| |||
73 | 72 |
| |
74 | 73 |
| |
75 | 74 |
| |
76 | - | ||
77 | - | ||
78 | - | ||
79 | - | ||
80 | - | ||
81 | - | ||
82 | - | ||
83 | - | ||
84 | 75 |
| |
85 | - | ||
86 | - | ||
87 | - | ||
88 | - | ||
89 | - | ||
90 | - | ||
91 | - | ||
92 | - | ||
93 | - | ||
94 | - | ||
95 | - | ||
76 | + | ||
77 | + | ||
78 | + | ||
79 | + | ||
80 | + | ||
81 | + | ||
82 | + | ||
83 | + | ||
84 | + | ||
85 | + | ||
86 | + | ||
87 | + | ||
88 | + | ||
96 | 89 |
| |
97 | 90 |
| |
98 | - | ||
91 | + | ||
99 | 92 |
| |
100 | 93 |
| |
101 | 94 |
| |
102 | - | ||
103 | - | ||
104 | - | ||
105 | - | ||
106 | - | ||
107 | 95 |
| |
108 | 96 |
| |
109 | 97 |
| |
|
0 commit comments