summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/gitbook/src/models/__tests__/templateBlock.js25
-rw-r--r--packages/gitbook/src/templating/__tests__/replaceShortcuts.js6
2 files changed, 29 insertions, 2 deletions
diff --git a/packages/gitbook/src/models/__tests__/templateBlock.js b/packages/gitbook/src/models/__tests__/templateBlock.js
index 408b57e..5db8a80 100644
--- a/packages/gitbook/src/models/__tests__/templateBlock.js
+++ b/packages/gitbook/src/models/__tests__/templateBlock.js
@@ -30,7 +30,7 @@ describe('TemplateBlock', function() {
});
});
- it('must not fsil if return a string', function() {
+ it('must not fail if return a string', function() {
const templateBlock = TemplateBlock.create('sayhello', function(block) {
return 'Hello World';
});
@@ -191,5 +191,28 @@ describe('TemplateBlock', function() {
expect(res).toBe('<xblock name="yoda" props="{}"><p class="yoda">inverted this sentence should be</p></xblock>');
});
});
+
+ it('must handle multiple inline blocks', function() {
+ const templateBlock = new TemplateBlock({
+ name: 'math',
+ process(block) {
+ return '<math>' + block.children + '</math>';
+ }
+ });
+
+ // Create a fresh Nunjucks environment
+ const env = new nunjucks.Environment(null, { autoescape: false });
+
+ // Add template block to environement
+ const Ext = templateBlock.toNunjucksExt();
+ env.addExtension(templateBlock.getExtensionName(), new Ext());
+
+ // Render a template using the block after replacing shortcuts
+ const src = 'There should be two inline blocks as a result: {% math %}a = b{% endmath %} and {% math %}c = d{% endmath %}';
+ return Promise.nfcall(env.renderString.bind(env), src)
+ .then(function(res) {
+ expect(res).toBe('There should be two inline blocks as a result: <xblock name="math" props="{}"><math>a = b</math></xblock> and <xblock name="math" props="{}"><math>c = d</math></xblock>');
+ });
+ });
});
});
diff --git a/packages/gitbook/src/templating/__tests__/replaceShortcuts.js b/packages/gitbook/src/templating/__tests__/replaceShortcuts.js
index cfd18b5..1126f91 100644
--- a/packages/gitbook/src/templating/__tests__/replaceShortcuts.js
+++ b/packages/gitbook/src/templating/__tests__/replaceShortcuts.js
@@ -19,9 +19,13 @@ describe('replaceShortcuts', function() {
expect(content).toBe('Hello {% math %}a = b{% endmath %}');
});
+ it('should correctly replace multiple inline matches by block', function() {
+ const content = replaceShortcuts(blocks, 'test.md', 'Hello $$a = b$$ and $$c = d$$');
+ expect(content).toBe('Hello {% math %}a = b{% endmath %} and {% math %}c = d{% endmath %}');
+ });
+
it('should correctly replace block matches', function() {
const content = replaceShortcuts(blocks, 'test.md', 'Hello\n$$\na = b\n$$\n');
expect(content).toBe('Hello\n{% math %}\na = b\n{% endmath %}\n');
});
});
-