summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-markdown
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-03-08 10:22:15 +0100
committerSamy Pessé <samypesse@gmail.com>2016-12-22 15:00:37 +0100
commita7695cf02fcff28bcc7af530c42b858702e66165 (patch)
tree5f02f60195459aaa7f496204497b000dd2a3a801 /packages/gitbook-markdown
parent2516137d4e2b59b728f8562edb0e4c929aa6c5f8 (diff)
downloadgitbook-a7695cf02fcff28bcc7af530c42b858702e66165.zip
gitbook-a7695cf02fcff28bcc7af530c42b858702e66165.tar.gz
gitbook-a7695cf02fcff28bcc7af530c42b858702e66165.tar.bz2
Use markdown-renderer instead of regex
Diffstat (limited to 'packages/gitbook-markdown')
-rw-r--r--packages/gitbook-markdown/lib/page.js28
-rw-r--r--packages/gitbook-markdown/package.json1
-rw-r--r--packages/gitbook-markdown/test/page.js13
3 files changed, 20 insertions, 22 deletions
diff --git a/packages/gitbook-markdown/lib/page.js b/packages/gitbook-markdown/lib/page.js
index de0ed98..b7af03b 100644
--- a/packages/gitbook-markdown/lib/page.js
+++ b/packages/gitbook-markdown/lib/page.js
@@ -3,30 +3,26 @@ var kramed = require('kramed');
var hljs = require('highlight.js');
var lnormalize = require('./utils/lang').normalize;
+var mdRenderer = require('kramed-markdown-renderer');
var RAW_START = "{% raw %}";
var RAW_END = "{% endraw %}";
-var CODEBLOCKS = {
- md: /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/,
- fences: /(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm
-};
function preparePage(src) {
- // GFM Fences
- src = src.replace(CODEBLOCKS.fences, function(wholeMatch, m1, m2, m3, m4) {
- wholeMatch = wholeMatch.slice(m1.length);
- return m1+RAW_START+wholeMatch+RAW_END;
- });
+ var renderer = mdRenderer();
+
+ var escape = function(func, code, lang, escaped) {
+ return RAW_START+func(code, lang, escaped)+RAW_END;
+ };
- // Normal codeblocks
- src += "~0";
- src = src.replace(CODEBLOCKS.md, function(all, m1, m2) {
- all = all.slice(0, -m2.length);
- return RAW_START+all+RAW_END+m2;
+ renderer.code = _.wrap(renderer.code, escape);
+ renderer.codespan = _.wrap(renderer.codespan, escape);
+
+ var options = _.extend({}, kramed.defaults, {
+ renderer: renderer
});
- src = src.replace(/~0/, "");
- return src;
+ return kramed(src, options);
}
function parsePage(src) {
diff --git a/packages/gitbook-markdown/package.json b/packages/gitbook-markdown/package.json
index 6383024..d76386b 100644
--- a/packages/gitbook-markdown/package.json
+++ b/packages/gitbook-markdown/package.json
@@ -8,6 +8,7 @@
"lodash": "^3.2.0",
"kramed": "0.4.6",
"kramed-text-renderer": "0.2.1",
+ "kramed-markdown-renderer": "0.1.1",
"highlight.js": "8.4.0"
},
"devDependencies": {
diff --git a/packages/gitbook-markdown/test/page.js b/packages/gitbook-markdown/test/page.js
index 67c209d..3bc5cd2 100644
--- a/packages/gitbook-markdown/test/page.js
+++ b/packages/gitbook-markdown/test/page.js
@@ -21,20 +21,21 @@ describe('Page parsing', function() {
});
it('should escape codeblocks in preparation (1)', function() {
- assert.equal(page.prepare("Hello `world`"), "Hello {% raw %}`world`{% endraw %}");
- assert.equal(page.prepare("Hello `world test`"), "Hello {% raw %}`world test`{% endraw %}");
- assert.equal(page.prepare("Hello ```world test```"), "Hello {% raw %}```world test```{% endraw %}");
- assert.equal(page.prepare("Hello\n```js\nworld test\n```\n"), "Hello\n{% raw %}```js\nworld test\n```{% endraw %}\n");
+ assert.equal(page.prepare("Hello `world`"), "\nHello {% raw %}`world`{% endraw %}\n");
+ assert.equal(page.prepare("Hello `world test`"), "\nHello {% raw %}`world test`{% endraw %}\n");
+ assert.equal(page.prepare("Hello ```world test```"), "\nHello {% raw %}`world test`{% endraw %}\n");
+ assert.equal(page.prepare("Hello\n```js\nworld test\n```\n"), "\nHello\n{% raw %}\n```js\nworld test\n```\n{% endraw %}");
+ assert.equal(page.prepare("Hello\n```\ntest\n\tworld\n\ttest\n```"), "\nHello\n{% raw %}\n```\ntest\n world\n test\n```\n{% endraw %}");
});
it('should escape codeblocks in preparation (2)', function() {
assert.equal(
page.prepare("Hello\n\n\n\tworld\n\thello\n\n\ntest"),
- "Hello\n{% raw %}\n\n\tworld\n\thello\n\n\n{% endraw %}test"
+ "\nHello\n{% raw %}\n```\nworld\nhello\n```\n{% endraw %}\ntest\n"
);
assert.equal(
page.prepare("Hello\n\n\n\tworld\n\thello\n\n\n"),
- "Hello\n{% raw %}\n\n\tworld\n\thello\n\n\n{% endraw %}"
+ "\nHello\n{% raw %}\n```\nworld\nhello\n```\n{% endraw %}"
);
});
});