diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-02-04 19:37:40 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-02-04 19:37:40 +0000 |
| commit | 6189b03ede982d4ee19e8972dc134f7f708aa8fc (patch) | |
| tree | f56d4cfcb2bffa54f32a03eb5284ccd6eda466f2 | |
| parent | a2745a179359419b255ff7de13839a8a1a31cc35 (diff) | |
Escape special markdown characters
| -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"); |
