aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/writers/markdown-writer.js8
-rw-r--r--tests/writers/markdown-writer.tests.js6
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/writers/markdown-writer.js b/lib/writers/markdown-writer.js
index 77bae94..9bafc98 100644
--- a/lib/writers/markdown-writer.js
+++ b/lib/writers/markdown-writer.js
@@ -151,7 +151,7 @@ function markdownWriter() {
}
function text(value) {
- fragments.push(value);
+ fragments.push(escapeMarkdown(value));
}
function append(html) {
@@ -174,3 +174,9 @@ function markdownWriter() {
}
exports.writer = markdownWriter;
+
+function escapeMarkdown(value) {
+ return value
+ .replace(/\\/g, '\\\\')
+ .replace(/([\`\*_\{\}\[\]\(\)\#\+\-\.\!])/g, '\\$1');
+}
diff --git a/tests/writers/markdown-writer.tests.js b/tests/writers/markdown-writer.tests.js
index e13046a..7912acf 100644
--- a/tests/writers/markdown-writer.tests.js
+++ b/tests/writers/markdown-writer.tests.js
@@ -4,6 +4,12 @@ var test = require("../testing").test;
var mdWriter = require("../../lib/writers/markdown-writer");
describe('markdown-writer', function() {
+ test('special markdown characters are escaped', function() {
+ var writer = mdWriter.writer();
+ writer.text("\\*");
+ return assert.equal(writer.asString(), "\\\\\\*");
+ });
+
test('can generate a paragraph', function() {
var writer = mdWriter.writer();
writer.open("p");