diff options
| -rw-r--r-- | lib/writers/markdown-writer.js | 8 | ||||
| -rw-r--r-- | tests/writers/markdown-writer.tests.js | 6 |
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"); |
