Fix formatting not being applied after links (#7990)
parent
85260ad643
commit
1f4e286db9
|
@ -153,10 +153,27 @@ export default class Markdown {
|
||||||
(node.type === 'text' && node.literal === ' ')
|
(node.type === 'text' && node.literal === ' ')
|
||||||
) {
|
) {
|
||||||
text = '';
|
text = '';
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Break up text nodes on spaces, so that we don't shoot past them without resetting
|
||||||
if (node.type === 'text') {
|
if (node.type === 'text') {
|
||||||
text += node.literal;
|
const [thisPart, ...nextParts] = node.literal.split(/( )/);
|
||||||
|
node.literal = thisPart;
|
||||||
|
text += thisPart;
|
||||||
|
|
||||||
|
// Add the remaining parts as siblings
|
||||||
|
nextParts.reverse().forEach(part => {
|
||||||
|
if (part) {
|
||||||
|
const nextNode = new commonmark.Node('text');
|
||||||
|
nextNode.literal = part;
|
||||||
|
node.insertAfter(nextNode);
|
||||||
|
// Make the iterator aware of the newly inserted node
|
||||||
|
walker.resumeAt(nextNode, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// We should not do this if previous node was not a textnode, as we can't combine it then.
|
// We should not do this if previous node was not a textnode, as we can't combine it then.
|
||||||
if ((node.type === 'emph' || node.type === 'strong') && previousNode.type === 'text') {
|
if ((node.type === 'emph' || node.type === 'strong') && previousNode.type === 'text') {
|
||||||
if (event.entering) {
|
if (event.entering) {
|
||||||
|
|
|
@ -157,5 +157,12 @@ describe("Markdown parser test", () => {
|
||||||
const md = new Markdown(testString);
|
const md = new Markdown(testString);
|
||||||
expect(md.toHTML()).toEqual(expectedResult);
|
expect(md.toHTML()).toEqual(expectedResult);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('resumes applying formatting to the rest of a message after a link', () => {
|
||||||
|
const testString = 'http://google.com/_thing_ *does* __not__ exist';
|
||||||
|
const expectedResult = 'http://google.com/_thing_ <em>does</em> <strong>not</strong> exist';
|
||||||
|
const md = new Markdown(testString);
|
||||||
|
expect(md.toHTML()).toEqual(expectedResult);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue