mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-16 15:45:13 +00:00
74 lines
1.7 KiB
JavaScript
74 lines
1.7 KiB
JavaScript
var Immutable = require('immutable');
|
|
var is = require('is');
|
|
|
|
/*
|
|
A TemplateShortcut is defined in plugin's template blocks
|
|
to replace content with a templating block using delimiters.
|
|
*/
|
|
var TemplateShortcut = Immutable.Record({
|
|
// List of parser names accepting this shortcut
|
|
parsers: Immutable.Map(),
|
|
|
|
start: String(),
|
|
end: String(),
|
|
|
|
startTag: String(),
|
|
endTag: String()
|
|
}, 'TemplateShortcut');
|
|
|
|
TemplateShortcut.prototype.getStart = function() {
|
|
return this.get('start');
|
|
};
|
|
|
|
TemplateShortcut.prototype.getEnd = function() {
|
|
return this.get('end');
|
|
};
|
|
|
|
TemplateShortcut.prototype.getStartTag = function() {
|
|
return this.get('startTag');
|
|
};
|
|
|
|
TemplateShortcut.prototype.getEndTag = function() {
|
|
return this.get('endTag');
|
|
};
|
|
|
|
TemplateShortcut.prototype.getParsers = function() {
|
|
return this.get('parsers');
|
|
};
|
|
|
|
/**
|
|
Test if this shortcut accept a parser
|
|
|
|
@param {Parser|String} parser
|
|
@return {Boolean}
|
|
*/
|
|
TemplateShortcut.prototype.acceptParser = function(parser) {
|
|
if (!is.string(parser)) {
|
|
parser = parser.getName();
|
|
}
|
|
|
|
var parserNames = this.get('parsers');
|
|
return parserNames.includes(parser);
|
|
};
|
|
|
|
/**
|
|
Create a shortcut for a block
|
|
|
|
@param {TemplateBlock} block
|
|
@param {Map} details
|
|
@return {TemplateShortcut}
|
|
*/
|
|
TemplateShortcut.createForBlock = function(block, details) {
|
|
details = Immutable.fromJS(details);
|
|
|
|
return new TemplateShortcut({
|
|
parsers: details.get('parsers'),
|
|
start: details.get('start'),
|
|
end: details.get('end'),
|
|
startTag: block.getName(),
|
|
endTag: block.getEndTag()
|
|
});
|
|
};
|
|
|
|
module.exports = TemplateShortcut;
|