aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-02-04 19:37:40 +0000
committerMichael Williamson <mike@zwobble.org>2015-02-04 19:37:40 +0000
commit6189b03ede982d4ee19e8972dc134f7f708aa8fc (patch)
treef56d4cfcb2bffa54f32a03eb5284ccd6eda466f2
parenta2745a179359419b255ff7de13839a8a1a31cc35 (diff)
Escape special markdown characters
-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");