mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-12 05:48:57 +00:00
40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
var escapeStringRegexp = require('escape-string-regexp');
|
|
var listShortcuts = require('./listShortcuts');
|
|
|
|
/**
|
|
* Apply a shortcut of block to a template
|
|
* @param {String} content
|
|
* @param {Shortcut} shortcut
|
|
* @return {String}
|
|
*/
|
|
function applyShortcut(content, shortcut) {
|
|
var start = shortcut.getStart();
|
|
var end = shortcut.getEnd();
|
|
|
|
var tagStart = shortcut.getStartTag();
|
|
var tagEnd = shortcut.getEndTag();
|
|
|
|
var regex = new RegExp(
|
|
escapeStringRegexp(start) + '([\\s\\S]*?[^\\$])' + escapeStringRegexp(end),
|
|
'g'
|
|
);
|
|
return content.replace(regex, function(all, match) {
|
|
return '{% ' + tagStart + ' %}' + match + '{% ' + tagEnd + ' %}';
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Replace shortcuts from blocks in a string
|
|
*
|
|
* @param {List<TemplateBlock>} engine
|
|
* @param {String} filePath
|
|
* @param {String} content
|
|
* @return {String}
|
|
*/
|
|
function replaceShortcuts(blocks, filePath, content) {
|
|
var shortcuts = listShortcuts(blocks, filePath);
|
|
return shortcuts.reduce(applyShortcut, content);
|
|
}
|
|
|
|
module.exports = replaceShortcuts;
|