diff options
author | Douwe Maan <douwe@selenight.nl> | 2017-05-18 20:27:46 -0500 |
---|---|---|
committer | Douwe Maan <douwe@selenight.nl> | 2017-05-24 14:39:43 -0500 |
commit | 78e7efaed0ed7092ed36495c91b33775fc932678 (patch) | |
tree | e1b38a6758e790669db6856a0c5b42a8a44dd556 /app/assets/javascripts/copy_as_gfm.js | |
parent | c013d23d6320487cf293891f7c6b213cab816980 (diff) | |
download | gitlab-ce-78e7efaed0ed7092ed36495c91b33775fc932678.tar.gz |
Copy as GFM even when parts of other elements are selected
Diffstat (limited to 'app/assets/javascripts/copy_as_gfm.js')
-rw-r--r-- | app/assets/javascripts/copy_as_gfm.js | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/app/assets/javascripts/copy_as_gfm.js b/app/assets/javascripts/copy_as_gfm.js index b479e854f7c..ba9d9a3e1f7 100644 --- a/app/assets/javascripts/copy_as_gfm.js +++ b/app/assets/javascripts/copy_as_gfm.js @@ -330,10 +330,26 @@ class CopyAsGFM { } static transformGFMSelection(documentFragment) { - // If the documentFragment contains more than just Markdown, don't copy as GFM. - if (documentFragment.querySelector('.md, .wiki')) return null; + const gfmEls = documentFragment.querySelectorAll('.md, .wiki'); + switch (gfmEls.length) { + case 0: { + return documentFragment; + } + case 1: { + return gfmEls[0]; + } + default: { + const allGfmEl = document.createElement('div'); + + for (let i = 0; i < gfmEls.length; i += 1) { + const lineEl = gfmEls[i]; + allGfmEl.appendChild(lineEl); + allGfmEl.appendChild(document.createTextNode('\n\n')); + } - return documentFragment; + return allGfmEl; + } + } } static transformCodeSelection(documentFragment) { |