diff options
-rw-r--r-- | lib/template.js | 10 | ||||
-rw-r--r-- | test/plugins.js | 34 |
2 files changed, 39 insertions, 5 deletions
diff --git a/lib/template.js b/lib/template.js index bc3e53e..8014405 100644 --- a/lib/template.js +++ b/lib/template.js @@ -103,16 +103,16 @@ TemplateEngine.prototype.processBlock = function(blk) { return blk.body; } - // Return it as a macro - return "%+%"+blk.id+"%+%"; + // Return it as a position marker + return "@%@"+blk.id+"@%@"; }; -// Replace blocks by body after processing -// This is done to avoid that markdown processer parse the block content +// Replace position markers of blocks by body after processing +// This is done to avoid that markdown/asciidoc processer parse the block content TemplateEngine.prototype.replaceBlocks = function(content) { var that = this; - return content.replace(/\%\+\%([\s\S]+?)\%\+\%/g, function(match, key) { + return content.replace(/\@\%\@([\s\S]+?)\@\%\@/g, function(match, key) { var blk = that.blocks[key]; if (!blk) return match; diff --git a/test/plugins.js b/test/plugins.js index e3d0c49..d10e0b5 100644 --- a/test/plugins.js +++ b/test/plugins.js @@ -3,6 +3,7 @@ var should = require('should'); var path = require('path'); var Plugin = require('../lib/plugin'); +var parsers = require("gitbook-parsers"); var PLUGINS_ROOT = path.resolve(__dirname, 'plugins'); describe('Plugins', function () { @@ -200,5 +201,38 @@ describe('Plugins', function () { }); }); }); + + describe('Blocks without parsing', function() { + var plugin; + + before(function() { + plugin = new Plugin(book, "blocks"); + plugin.load("./blocks", PLUGINS_ROOT); + + return book.plugins.load(plugin); + }); + + var testTpl = function(markup, str, args, options) { + var filetype = parsers.get(markup); + + return book.template.renderString(str, args, options) + .then(filetype.page).get('sections').get(0).get('content') + .then(book.template.postProcess) + }; + + it('should correctly process unparsable for markdown', function() { + return testTpl('.md', '{% test %}**hello**{% endtest %}') + .then(function(content) { + content.should.equal("<p>test**hello**test</p>\n"); + }); + }); + + it('should correctly process unparsable for asciidoc', function() { + return testTpl('.adoc', '{% test %}**hello**{% endtest %}') + .then(function(content) { + content.should.equal('<div class="paragraph">\n<p>test**hello**test</p>\n</div>'); + }); + }); + }); }); |