FIX: supports user/group mentions and category hashtags when quoting posts

This commit is contained in:
Régis Hanol 2018-05-09 12:42:12 +02:00
parent 858ac6b61e
commit 3483c7bc58
2 changed files with 22 additions and 1 deletions

View File

@ -126,6 +126,14 @@ class Tag {
decorate(text) { decorate(text) {
const attr = this.element.attributes; const attr = this.element.attributes;
if (/^mention/.test(attr.class) && "@" === text[0]) {
return text;
}
if ("hashtag" === attr.class && "#" === text[0]) {
return text;
}
if (attr.href && text !== attr.href) { if (attr.href && text !== attr.href) {
text = text.replace(/\n{2,}/g, "\n"); text = text.replace(/\n{2,}/g, "\n");
return "[" + text + "](" + attr.href + ")"; return "[" + text + "](" + attr.href + ")";

View File

@ -104,7 +104,7 @@ QUnit.test("converts table tags", assert => {
<tbody> <tbody>
<tr><td>Lorem</td><td>ipsum</td></tr> <tr><td>Lorem</td><td>ipsum</td></tr>
<tr><td><b>dolor</b></td> <td><i>sit amet</i></td> </tr> <tr><td><b>dolor</b></td> <td><i>sit amet</i></td> </tr>
</tbody> </tbody>
</table> </table>
`; `;
@ -286,3 +286,16 @@ QUnit.test("converts list tag from word", assert => {
const markdown = `Sample\n\n* **Item 1**\n * *Item 2*\n * Item 3\n* Item 4\n\nList`; const markdown = `Sample\n\n* **Item 1**\n * *Item 2*\n * Item 3\n* Item 4\n\nList`;
assert.equal(toMarkdown(html), markdown); assert.equal(toMarkdown(html), markdown);
}); });
QUnit.test("keeps mention/hash class", assert => {
const html = `
<p>User mention: <a class="mention" href="/u/discourse">@discourse</a></p>
<p>Group mention: <a class="mention-group" href="/groups/discourse">@discourse-group</a></p>
<p>Category link: <a class="hashtag" href="/c/foo/1">#<span>foo</span></a></p>
<p>Sub-category link: <a class="hashtag" href="/c/foo/bar/2">#<span>foo:bar</span></a></p>
`;
const markdown = `User mention: @discourse\n\nGroup mention: @discourse-group\n\nCategory link: #foo\n\nSub-category link: #foo:bar`;
assert.equal(toMarkdown(html), markdown);
});