Improve support for linebreaks, tables and nested blockquotes in lists
This commit is contained in:
parent
2b37e4c199
commit
d89f561612
|
@ -92,9 +92,6 @@
|
|||
},
|
||||
},
|
||||
SanitizationFilter: {
|
||||
'br'(el, text) {
|
||||
return '<br>';
|
||||
},
|
||||
'dl'(el, text) {
|
||||
let lines = text.trim().split('\n');
|
||||
// Add two spaces to the front of subsequent list items lines,
|
||||
|
@ -127,6 +124,10 @@
|
|||
},
|
||||
},
|
||||
MarkdownFilter: {
|
||||
'br'(el, text) {
|
||||
// Two spaces at the end of a line are turned into a BR
|
||||
return ' ';
|
||||
},
|
||||
'code'(el, text) {
|
||||
let backtickCount = 1;
|
||||
const backtickMatch = text.match(/`+/);
|
||||
|
@ -155,12 +156,12 @@
|
|||
'li'(el, text) {
|
||||
const lines = text.trim().split('\n');
|
||||
const firstLine = `- ${lines.shift()}`;
|
||||
// Add two spaces to the front of subsequent list items lines,
|
||||
// Add four spaces to the front of subsequent list items lines,
|
||||
// or leave the line entirely blank.
|
||||
const nextLines = lines.map((s) => {
|
||||
if (s.trim().length === 0) return '';
|
||||
|
||||
return ` ${s}`;
|
||||
return ` ${s}`;
|
||||
});
|
||||
|
||||
return `${firstLine}\n${nextLines.join('\n')}`;
|
||||
|
@ -213,7 +214,7 @@
|
|||
},
|
||||
'thead'(el, text) {
|
||||
const cells = _.map(el.querySelectorAll('th'), (cell) => {
|
||||
let chars = CopyAsGFM.nodeToGFM(cell).trim().length;
|
||||
let chars = CopyAsGFM.nodeToGFM(cell).trim().length + 2;
|
||||
|
||||
let before = '';
|
||||
let after = '';
|
||||
|
@ -231,14 +232,14 @@
|
|||
break;
|
||||
}
|
||||
|
||||
chars = Math.max(chars, 0);
|
||||
chars = Math.max(chars, 3);
|
||||
|
||||
const middle = Array(chars + 1).join('-');
|
||||
|
||||
return before + middle + after;
|
||||
});
|
||||
|
||||
return `${text}| ${cells.join(' | ')} |`;
|
||||
return `${text}|${cells.join('|')}|`;
|
||||
},
|
||||
'tr'(el, text) {
|
||||
const cells = _.map(el.querySelectorAll('td, th'), cell => CopyAsGFM.nodeToGFM(cell).trim());
|
||||
|
|
|
@ -236,8 +236,6 @@ describe 'Copy as GFM', feature: true, js: true do
|
|||
it 'supports SanitizationFilter' do
|
||||
verify(
|
||||
<<-GFM.strip_heredoc
|
||||
BR: <br>
|
||||
|
||||
<sub>sub</sub>
|
||||
|
||||
<dl>
|
||||
|
@ -284,6 +282,8 @@ describe 'Copy as GFM', feature: true, js: true do
|
|||
|
||||
it 'supports MarkdownFilter' do
|
||||
verify(
|
||||
"Line with two spaces at the end \nto insert a linebreak",
|
||||
|
||||
'`code`',
|
||||
'`` code with ` ticks ``',
|
||||
|
||||
|
@ -308,7 +308,7 @@ describe 'Copy as GFM', feature: true, js: true do
|
|||
# multiline list item
|
||||
<<-GFM.strip_heredoc,
|
||||
- Multiline
|
||||
List item
|
||||
List item
|
||||
GFM
|
||||
|
||||
# nested lists
|
||||
|
@ -316,7 +316,14 @@ describe 'Copy as GFM', feature: true, js: true do
|
|||
- Nested
|
||||
|
||||
|
||||
- Lists
|
||||
- Lists
|
||||
GFM
|
||||
|
||||
# list with blockquote
|
||||
<<-GFM.strip_heredoc,
|
||||
- List
|
||||
|
||||
> Blockquote
|
||||
GFM
|
||||
|
||||
'1. Numbered list item',
|
||||
|
@ -324,7 +331,7 @@ describe 'Copy as GFM', feature: true, js: true do
|
|||
# multiline numbered list item
|
||||
<<-GFM.strip_heredoc,
|
||||
1. Multiline
|
||||
Numbered list item
|
||||
Numbered list item
|
||||
GFM
|
||||
|
||||
# nested numbered list
|
||||
|
@ -332,7 +339,7 @@ describe 'Copy as GFM', feature: true, js: true do
|
|||
1. Nested
|
||||
|
||||
|
||||
1. Numbered lists
|
||||
1. Numbered lists
|
||||
GFM
|
||||
|
||||
'# Heading',
|
||||
|
@ -355,10 +362,18 @@ describe 'Copy as GFM', feature: true, js: true do
|
|||
# table
|
||||
<<-GFM.strip_heredoc,
|
||||
| Centered | Right | Left |
|
||||
| :------: | ----: | ---- |
|
||||
|:--------:|------:|------|
|
||||
| Foo | Bar | **Baz** |
|
||||
| Foo | Bar | **Baz** |
|
||||
GFM
|
||||
|
||||
# table with empty heading
|
||||
<<-GFM.strip_heredoc,
|
||||
| | x | y |
|
||||
|---|---|---|
|
||||
| a | 1 | 0 |
|
||||
| b | 0 | 1 |
|
||||
GFM
|
||||
)
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue