mirror of https://github.com/vector-im/riot-web
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 === ' ')
|
||||
) {
|
||||
text = '';
|
||||
continue;
|
||||
}
|
||||
|
||||
// Break up text nodes on spaces, so that we don't shoot past them without resetting
|
||||
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.
|
||||
if ((node.type === 'emph' || node.type === 'strong') && previousNode.type === 'text') {
|
||||
if (event.entering) {
|
||||
|
|
|
@ -157,5 +157,12 @@ describe("Markdown parser test", () => {
|
|||
const md = new Markdown(testString);
|
||||
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