feature(simpleLineBreaks): parse linebreaks as <br />

This option enables linebreaks to always be treated as `<br />` tags
without needing to add spaces in front of the line, the same way GitHub does.

Closes #206
This commit is contained in:
Estevao Soares dos Santos 2016-11-30 18:04:17 +00:00
parent 7c05093a06
commit 0942b5e87d
13 changed files with 37 additions and 5 deletions

View File

@ -262,6 +262,20 @@ var defaultOptions = showdown.getDefaultOptions();
* **disableForced4SpacesIndentedSublists**: (boolean) [default false] Disables the requirement of indenting sublists by 4 spaces for them to be nested,
effectively reverting to the old behavior where 2 or 3 spaces were enough. (since v1.5.0)
* **simpleLineBreaks**: (boolean) [default false] Parses line breaks as <br> like GitHub does, without needing 2 spaces at the end of the line (since v1.5.1)
```md
a line
wrapped in two
```
turns into:
```html
<p>a line<br>
wrapped in two</p>
```
## Flavors

BIN
dist/showdown.js vendored

Binary file not shown.

BIN
dist/showdown.js.map vendored

Binary file not shown.

BIN
dist/showdown.min.js vendored

Binary file not shown.

Binary file not shown.

View File

@ -80,6 +80,11 @@ function getDefaultOpts(simple) {
defaultValue: false,
description: 'Disables the requirement of indenting nested sublists by 4 spaces',
type: 'boolean'
},
simpleLineBreaks: {
defaultValue: false,
description: 'Parses simple line breaks as <br> (GFM Style)',
type: 'boolean'
}
};
if (simple === false) {

View File

@ -18,7 +18,8 @@ var showdown = {},
tablesHeaderId: true,
ghCodeBlocks: true,
tasklists: true,
disableForced4SpacesIndentedSublists: true
disableForced4SpacesIndentedSublists: true,
simpleLineBreaks: true
},
vanilla: getDefaultOpts(true)
};

View File

@ -23,8 +23,14 @@ showdown.subParser('spanGamut', function (text, options, globals) {
text = showdown.subParser('italicsAndBold')(text, options, globals);
text = showdown.subParser('strikethrough')(text, options, globals);
// Do hard breaks:
text = text.replace(/ +\n/g, ' <br />\n');
// Do hard breaks
// GFM style hard breaks
if (options.simpleLineBreaks) {
text = text.replace(/\n/g, '<br />\n');
} else {
text = text.replace(/ +\n/g, '<br />\n');
}
text = globals.converter._dispatch('spanGamut.after', text, options, globals);
return text;

View File

@ -0,0 +1,2 @@
<p>a simple<br />
wrapped line</p>

View File

@ -0,0 +1,2 @@
a simple
wrapped line

View File

@ -1,2 +1,2 @@
<p>A first sentence <br />
<p>A first sentence<br />
and a line break.</p>

View File

@ -1,2 +1,2 @@
<p>A first sentence <br />
<p>A first sentence<br />
and a line break.</p>

View File

@ -35,6 +35,8 @@ describe('makeHtml() features testsuite', function () {
converter = new showdown.Converter({simplifiedAutoLink: true});
} else if (testsuite[i].name === 'disableForced4SpacesIndentedSublists') {
converter = new showdown.Converter({disableForced4SpacesIndentedSublists: true});
} else if (testsuite[i].name === '#206.treat-single-line-breaks-as-br') {
converter = new showdown.Converter({simpleLineBreaks: true});
} else {
converter = new showdown.Converter();
}