gitbook-markdown
Advanced tools
Comparing version 0.4.1 to 0.4.2
@@ -19,3 +19,4 @@ var engine = require('./annotate_engine'); | ||
text: /^[^\n]+/, | ||
math: /^ *(\${2,}) *([\s\S]+?)\s*\1 *(?:\n+|$)/, | ||
//rawStart: /^{%([\s]*)raw([\s]*)%}/, | ||
//rawEnd: /^{%([\s]*)endraw([\s]*)%}/ | ||
// These are lower level, ignore them | ||
@@ -29,5 +30,5 @@ //bullet: /(?:[*+-]|\d+\.)/, | ||
var ruleTypes = [ | ||
'newline', 'code', 'fences', 'footnote', 'math', 'heading', | ||
'nptable', 'lheading', 'hr', 'blockquote', 'list', | ||
'html', 'def', 'table', 'paragraph', 'text', | ||
'newline', 'code', 'fences', 'footnote', 'heading', | ||
'nptable', 'lheading', 'hr', 'blockquote', 'list', | ||
'html', 'def', 'table', 'paragraph', 'text', | ||
]; | ||
@@ -34,0 +35,0 @@ |
@@ -18,4 +18,5 @@ var engine = require('./annotate_engine'); | ||
del: /^~~(?=\S)([\s\S]*?\S)~~/, | ||
text: /^[\s\S]+?(?=[\\<!\[_*`$~]|https?:\/\/| {2,}\n|$)/, | ||
math: /^\$\$\s*([\s\S]*?[^\$])\s*\$\$(?!\$)/, | ||
text: /^[\s\S]+?(?=[\\<!\[_*`$~]|{%([\s]*)raw([\s]*)%}|{%([\s]*)endraw([\s]*)|https?:\/\/| {2,}\n|$)/, | ||
rawStart: /^{%([\s]*)raw([\s]*)%}/, | ||
rawEnd: /^{%([\s]*)endraw([\s]*)%}/ ///[\s\S]*{%([\s]*)endraw([\s]*)%}/ | ||
//_inside: /(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/, | ||
@@ -27,5 +28,5 @@ //_href: /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/ | ||
var ruleTypes = [ | ||
'escape', 'autolink', 'url', 'tag', 'link', 'reflink', | ||
'nolink', 'reffn', 'strong', 'em', 'code', 'br', | ||
'del', 'text', 'math' | ||
'escape', 'autolink', 'url', 'tag', 'link', 'reflink', | ||
'nolink', 'reffn', 'strong', 'em', 'code', 'br', | ||
'del', 'rawStart', 'rawEnd', 'text' | ||
]; | ||
@@ -32,0 +33,0 @@ |
@@ -18,30 +18,34 @@ var _ = require('lodash'); | ||
function escapeCodeElement(el) { | ||
if(el.type == 'code') { | ||
el.raw = escape(el.raw); | ||
} | ||
return el; | ||
} | ||
function preparePage(src) { | ||
var lexed = annotate.blocks(src); | ||
var levelRaw = 0; | ||
var escapeCodeElement = function(el) { | ||
if (el.type == 'code' && levelRaw == 0) { | ||
el.raw = escape(el.raw); | ||
} else if (el.type == 'rawStart') { | ||
levelRaw = levelRaw + 1; | ||
} else if (el.type == 'rawEnd') { | ||
levelRaw = 0; | ||
} | ||
return el; | ||
}; | ||
var escaped = lexed | ||
// Escape code blocks | ||
.map(escapeCodeElement) | ||
// Escape inline code blocks | ||
.map(function(el) { | ||
// Only escape paragraphs and headings | ||
if(!(el.type == 'paragraph' || el.type == 'heading')) { | ||
return el; | ||
} | ||
if(el.type == 'paragraph' || el.type == 'heading') { | ||
var line = annotate.inline(el.raw); | ||
// Escape inline code blocks | ||
var newInline = annotate.inline(el.raw).map(escapeCodeElement); | ||
// Escape inline code blocks | ||
line = line.map(escapeCodeElement); | ||
// Change raw source code | ||
el.raw = combine(newInline); | ||
// Change raw source code | ||
el.raw = combine(line); | ||
return el; | ||
return el; | ||
} else { | ||
return escapeCodeElement(el); | ||
} | ||
}); | ||
@@ -53,3 +57,5 @@ | ||
function parsePage(src) { | ||
var options = _.extend({}, kramed.defaults); | ||
var options = _.extend({}, kramed.defaults, { | ||
mathjax: false | ||
}); | ||
@@ -56,0 +62,0 @@ return { |
{ | ||
"name": "gitbook-markdown", | ||
"version": "0.4.1", | ||
"version": "0.4.2", | ||
"homepage": "https://www.gitbook.com", | ||
@@ -5,0 +5,0 @@ "description": "Parse markdown content for gitbook", |
@@ -48,2 +48,22 @@ var fs = require('fs'); | ||
}); | ||
it('should escape codeblocks with nunjucks tags in {% raw %} tags', function() { | ||
assert.equal( | ||
page.prepare('{% raw %}Hello {{ "Bonjour" }} ```test```{% endraw %}'), | ||
'{% raw %}Hello {{ "Bonjour" }} ```test```{% endraw %}' | ||
); | ||
assert.equal( | ||
page.prepare('{% raw %}Hello {{ "Bonjour" }} {% raw %}{% endraw %}```test```'), | ||
'{% raw %}Hello {{ "Bonjour" }} {% raw %}{% endraw %}{% raw %}```test```{% endraw %}' | ||
); | ||
assert.equal( | ||
page.prepare('```{% raw %}Hello {{ "Bonjour" }} {% raw %}```'), | ||
'{% raw %}```{% raw %}Hello {{ "Bonjour" }} {% raw %}```{% endraw %}' | ||
); | ||
}); | ||
it('should not process math', function() { | ||
assert.equal(page.prepare("Hello $world$"), "Hello $world$"); | ||
assert.equal(page.prepare("Hello $$world$$"), "Hello $$world$$"); | ||
}); | ||
}); |
24924
584