mirror of
https://github.com/zulip/zulip.git
synced 2025-11-12 09:58:06 +00:00
copy_and_paste.js: Remove excess newlines while pasting markdown html.
Fixes #8963
This commit is contained in:
committed by
Tim Abbott
parent
79e8bff8fa
commit
e86d5139bb
@@ -41,4 +41,12 @@ var copy_and_paste = zrequire('copy_and_paste');
|
|||||||
input = '<meta http-equiv="content-type" content="text/html; charset=utf-8"><i style="box-sizing: inherit; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 15px; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">This text is italic</i>';
|
input = '<meta http-equiv="content-type" content="text/html; charset=utf-8"><i style="box-sizing: inherit; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 15px; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">This text is italic</i>';
|
||||||
assert.equal(copy_and_paste.paste_handler_converter(input),
|
assert.equal(copy_and_paste.paste_handler_converter(input),
|
||||||
'*This text is italic*');
|
'*This text is italic*');
|
||||||
|
|
||||||
|
input = '<div class="preview-content"><div class="comment"><div class="comment-body markdown-body js-preview-body" style="min-height: 131px;"><p>Test List:</p><ul><li>Item 1</li><li>Item 2</li></ul></div></div></div>';
|
||||||
|
assert.equal(copy_and_paste.paste_handler_converter(input),
|
||||||
|
'Test List:\n* Item 1\n* Item 2');
|
||||||
|
|
||||||
|
input = '<div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90za3z66zs0z65zz65zq8z75zlaz81zcz66zj6g2mz78zz76zmz66z22z75zfcz69zz66z ace-ltr focused-line" dir="auto" id="editor-3-ace-line-41"><span>Test List:</span></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90za3z66zs0z65zz65zq8z75zlaz81zcz66zj6g2mz78zz76zmz66z22z75zfcz69zz66z line-list-type-bullet ace-ltr" dir="auto" id="editor-3-ace-line-42"><ul class="listtype-bullet listindent1 list-bullet1"><li><span class="ace-line-pocket-zws" data-faketext="" data-contentcollector-ignore-space-at="end"></span><span class="ace-line-pocket" data-faketext="" contenteditable="false"></span><span class="ace-line-pocket-zws" data-faketext="" data-contentcollector-ignore-space-at="start"></span><span>Item 1</span></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90za3z66zs0z65zz65zq8z75zlaz81zcz66zj6g2mz78zz76zmz66z22z75zfcz69zz66z line-list-type-bullet ace-ltr" dir="auto" id="editor-3-ace-line-43"><ul class="listtype-bullet listindent1 list-bullet1"><li><span class="ace-line-pocket-zws" data-faketext="" data-contentcollector-ignore-space-at="end"></span><span class="ace-line-pocket" data-faketext="" contenteditable="false"></span><span class="ace-line-pocket-zws" data-faketext="" data-contentcollector-ignore-space-at="start"></span><span>Item 2</span></li></ul></div>';
|
||||||
|
assert.equal(copy_and_paste.paste_handler_converter(input),
|
||||||
|
'Test List:\n* Item 1\n* Item 2');
|
||||||
}());
|
}());
|
||||||
|
|||||||
@@ -208,7 +208,11 @@ exports.paste_handler_converter = function (paste_html) {
|
|||||||
var div = document.createElement("div");
|
var div = document.createElement("div");
|
||||||
div.innerHTML = markdown_html;
|
div.innerHTML = markdown_html;
|
||||||
// Using textContent for modern browsers, innerText works for Internet Explorer
|
// Using textContent for modern browsers, innerText works for Internet Explorer
|
||||||
return div.textContent || div.innerText || "";
|
var markdown_text = div.textContent || div.innerText || "";
|
||||||
|
markdown_text = markdown_text.trim();
|
||||||
|
// Removes newlines before the start of a list and between list elements.
|
||||||
|
markdown_text = markdown_text.replace(/\n+([*+-])/g, '\n$1');
|
||||||
|
return markdown_text;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.paste_handler = function (event) {
|
exports.paste_handler = function (event) {
|
||||||
|
|||||||
Reference in New Issue
Block a user