diff --git a/README.md b/README.md
index bfb55f3..dc7ef37 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,12 @@ Usage
```javascript
var Remarkable = require('remarkable')();
-var md = new Remarkable(/* options */);
+var md = new Remarkable({
+ html: false,
+ xhtml: false,
+ breaks: true,
+ langprefix: 'language-'
+});
console.log(md.parse('# Remarkable rulezz!'));
//=>
# Remarkable rulezz!
@@ -47,13 +52,10 @@ var Remarkable = require('remarkable');
var md = new Remarkable();
md.set({
- gfm: true,
- tables: true,
- breaks: false,
- pedantic: false,
- sanitize: true,
- smartLists: true,
- smartypants: false
+ html: false,
+ xhtml: false,
+ breaks: true,
+ langprefix: 'language-'
});
```
diff --git a/lib/defaults.js b/lib/defaults.js
index ac6c61a..226635d 100644
--- a/lib/defaults.js
+++ b/lib/defaults.js
@@ -4,10 +4,8 @@
module.exports = {
- blocksep: '\n',
- innersep: '\n',
- softbreak: '\n',
html: false,
xhtml: false,
+ breaks: true,
langprefix: 'language-'
};
diff --git a/lib/lexer_inline/newline.js b/lib/lexer_inline/newline.js
index 57d1639..c20b571 100644
--- a/lib/lexer_inline/newline.js
+++ b/lib/lexer_inline/newline.js
@@ -9,30 +9,31 @@ module.exports = function escape(state) {
max = state.posMax;
// ' \n' -> hardbreak
- if (pmax >= 1 &&
- state.pending.charCodeAt(pmax) === 0x20 &&
- state.pending.charCodeAt(pmax - 1) === 0x20) {
- state.pending = state.pending.replace(/ +$/, '');
+ // Lookup in pending chars is bad practice! Don't copy to other rules!
+ // Pending string is stored in concat mode, indexed lookups will cause
+ // convertion to flat mode.
+ if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {
+ if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {
+ state.pending = state.pending.replace(/ +$/, '');
+ state.push({
+ type: 'hardbreak'
+ });
+ } else {
+ state.pending = state.pending.slice(0, -1);
+ state.push({
+ type: 'softbreak'
+ });
+ }
+
+ } else {
state.push({
- type: 'hardbreak'
+ type: 'softbreak'
});
-
- pos++;
- // skip spaces
- while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; }
-
- state.pos = pos;
- return true;
- }
-
- if (pmax > 0 && state.pending.charCodeAt(pmax) === 0x20) {
- state.pending = state.pending.replace(/ +$/, '');
}
- state.pending += '\n';
-
pos++;
- // skip spaces
+
+ // skip heading spaces for next line
while (pos < max && state.src.charCodeAt(pos) === 0x20) { pos++; }
state.pos = pos;
diff --git a/lib/renderer.js b/lib/renderer.js
index cf6c85b..904097a 100644
--- a/lib/renderer.js
+++ b/lib/renderer.js
@@ -154,7 +154,10 @@ rules.em_close = function(/*tokens, idx, options*/) {
rules.hardbreak = function (tokens, idx, options) {
- return (options.xhtml ? '
' : '
') + '\n';
+ return options.xhtml ? '
\n' : '
\n';
+};
+rules.softbreak = function (tokens, idx, options) {
+ return options.breaks ? (options.xhtml ? '
\n' : '
\n') : '\n';
};
diff --git a/test/remarkable.js b/test/remarkable.js
index 643df9e..3f562ad 100644
--- a/test/remarkable.js
+++ b/test/remarkable.js
@@ -11,6 +11,7 @@ var Remarked = require('../');
describe('Default', function () {
var md = new Remarked({
+ breaks: false,
langprefix: ''
});
diff --git a/test/remarked.js b/test/remarked.js
index 5f87648..d62f812 100644
--- a/test/remarked.js
+++ b/test/remarked.js
@@ -14,6 +14,7 @@ describe('remarked', function () {
// Set options, to give output more close to remarked
md.set({
+ breaks: false,
langprefix: 'lang-'
});
diff --git a/test/stmd.js b/test/stmd.js
index 4528fb6..c4c759d 100644
--- a/test/stmd.js
+++ b/test/stmd.js
@@ -13,6 +13,7 @@ describe('stmd', function () {
var md = new Remarked({
html: true,
xhtml: true,
+ breaks: false,
langprefix: 'language-'
});