FIX: Empty inline BBCodes were broken (#18276)
Upgrading to Markdown.it v13 broke empty inline BBCodes. This works around the problem by adding an empty token before a closing token if the previous token was a BBCode token. It also removes the unused `jump` attribute which was removed in Markdown.it v12.3
This commit is contained in:
parent
a766bf8818
commit
f91426a7fa
|
@ -61,6 +61,10 @@ function tokenizeBBCode(state, silent, ruler) {
|
||||||
} else {
|
} else {
|
||||||
tagInfo.rule = rule;
|
tagInfo.rule = rule;
|
||||||
|
|
||||||
|
if (tagInfo.closing && state.tokens.at(-1)?.meta === "bbcode") {
|
||||||
|
state.push("text", "", 0);
|
||||||
|
}
|
||||||
|
|
||||||
let token = state.push("text", "", 0);
|
let token = state.push("text", "", 0);
|
||||||
token.content = state.src.slice(pos, pos + tagInfo.length);
|
token.content = state.src.slice(pos, pos + tagInfo.length);
|
||||||
token.meta = "bbcode";
|
token.meta = "bbcode";
|
||||||
|
@ -73,7 +77,6 @@ function tokenizeBBCode(state, silent, ruler) {
|
||||||
token: state.tokens.length - 1,
|
token: state.tokens.length - 1,
|
||||||
level: state.level,
|
level: state.level,
|
||||||
end: -1,
|
end: -1,
|
||||||
jump: 0,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
state.pos = pos + tagInfo.length;
|
state.pos = pos + tagInfo.length;
|
||||||
|
|
|
@ -1714,6 +1714,10 @@ HTML
|
||||||
expect(PrettyText.cook("a[i]b[/i]c")).to eq('<p>a<span class="bbcode-i">b</span>c</p>')
|
expect(PrettyText.cook("a[i]b[/i]c")).to eq('<p>a<span class="bbcode-i">b</span>c</p>')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "supports empty inline BBCode" do
|
||||||
|
expect(PrettyText.cook("a[b][/b]c")).to eq('<p>a<span class="bbcode-b"></span>c</p>')
|
||||||
|
end
|
||||||
|
|
||||||
it "can handle bbcode after a newline" do
|
it "can handle bbcode after a newline" do
|
||||||
# this is not 100% ideal cause we get an extra p here, but this is pretty rare
|
# this is not 100% ideal cause we get an extra p here, but this is pretty rare
|
||||||
expect(PrettyText.cook("a\n[code]code[/code]")).to eq("<p>a</p>\n<pre><code class=\"lang-auto\">code</code></pre>")
|
expect(PrettyText.cook("a\n[code]code[/code]")).to eq("<p>a</p>\n<pre><code class=\"lang-auto\">code</code></pre>")
|
||||||
|
|
Loading…
Reference in New Issue