Merge pull request #908 from GitbookIO/fix/asciidoc_blocks

Fix blocks in asciidoc
This commit is contained in:
Samy Pessé
2015-09-09 00:01:43 +02:00
2 changed files with 39 additions and 5 deletions
+5 -5
View File
@@ -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;
+34
View File
@@ -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>');
});
});
});
});