Don't linkify code blocks (#7859)
* Don't linkify code blocks Signed-off-by: Robin Townsend <robin@robin.town> * Put the linkify ignoreTags option in the right place Signed-off-by: Robin Townsend <robin@robin.town> * Add code to list of ignored linkification tags as well Signed-off-by: Robin Townsend <robin@robin.town> * Test that code blocks skip linkification Signed-off-by: Robin Townsend <robin@robin.town> * Move test to the right spot Signed-off-by: Robin Townsend <robin@robin.town> * Use a snapshot instead for test Signed-off-by: Robin Townsend <robin@robin.town>pull/28788/head^2
parent
7477a2df7d
commit
1c70696b10
|
@ -225,6 +225,8 @@ export const options = {
|
||||||
rel: 'noreferrer noopener',
|
rel: 'noreferrer noopener',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
ignoreTags: ['pre', 'code'],
|
||||||
|
|
||||||
className: 'linkified',
|
className: 'linkified',
|
||||||
|
|
||||||
target: function(href: string, type: Type | string): string {
|
target: function(href: string, type: Type | string): string {
|
||||||
|
|
|
@ -216,6 +216,26 @@ describe("<TextualBody />", () => {
|
||||||
'</span></span></span>');
|
'</span></span></span>');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("linkification is not applied to code blocks", () => {
|
||||||
|
const ev = mkEvent({
|
||||||
|
type: "m.room.message",
|
||||||
|
room: "room_id",
|
||||||
|
user: "sender",
|
||||||
|
content: {
|
||||||
|
body: "Visit `https://matrix.org/`\n```\nhttps://matrix.org/\n```",
|
||||||
|
msgtype: "m.text",
|
||||||
|
format: "org.matrix.custom.html",
|
||||||
|
formatted_body: "<p>Visit <code>https://matrix.org/</code></p>\n<pre>https://matrix.org/\n</pre>\n",
|
||||||
|
},
|
||||||
|
event: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const wrapper = getComponent({ mxEvent: ev }, matrixClient);
|
||||||
|
expect(wrapper.text()).toBe("Visit https://matrix.org/\n1https://matrix.org/\n\n");
|
||||||
|
const content = wrapper.find(".mx_EventTile_body");
|
||||||
|
expect(content.html()).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
// If pills were rendered within a Portal/same shadow DOM then it'd be easier to test
|
// If pills were rendered within a Portal/same shadow DOM then it'd be easier to test
|
||||||
it("pills get injected correctly into the DOM", () => {
|
it("pills get injected correctly into the DOM", () => {
|
||||||
const ev = mkEvent({
|
const ev = mkEvent({
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`<TextualBody /> renders formatted m.text correctly linkification is not applied to code blocks 1`] = `
|
||||||
|
"<span class=\\"mx_EventTile_body markdown-body\\" dir=\\"auto\\"><p>Visit <code>https://matrix.org/</code></p>
|
||||||
|
<div class=\\"mx_EventTile_pre_container\\"><pre class=\\"mx_EventTile_collapsedCodeBlock\\"><span class=\\"mx_EventTile_lineNumbers\\"><span>1</span></span><code>https://matrix.org/
|
||||||
|
</code><span></span></pre><span class=\\"mx_EventTile_button mx_EventTile_copyButton \\"></span></div>
|
||||||
|
</span>"
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`<TextualBody /> renders formatted m.text correctly pills do not appear in code blocks 1`] = `
|
exports[`<TextualBody /> renders formatted m.text correctly pills do not appear in code blocks 1`] = `
|
||||||
"<span class=\\"mx_EventTile_body markdown-body\\" dir=\\"auto\\"><p><code>@room</code></p>
|
"<span class=\\"mx_EventTile_body markdown-body\\" dir=\\"auto\\"><p><code>@room</code></p>
|
||||||
<div class=\\"mx_EventTile_pre_container\\"><pre class=\\"mx_EventTile_collapsedCodeBlock\\"><span class=\\"mx_EventTile_lineNumbers\\"><span>1</span></span><code>@room
|
<div class=\\"mx_EventTile_pre_container\\"><pre class=\\"mx_EventTile_collapsedCodeBlock\\"><span class=\\"mx_EventTile_lineNumbers\\"><span>1</span></span><code>@room
|
||||||
|
|
Loading…
Reference in New Issue