summaryrefslogtreecommitdiffstats
path: root/lib/models/templateShortcut.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/models/templateShortcut.js')
-rw-r--r--lib/models/templateShortcut.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/lib/models/templateShortcut.js b/lib/models/templateShortcut.js
new file mode 100644
index 0000000..672c7ba
--- /dev/null
+++ b/lib/models/templateShortcut.js
@@ -0,0 +1,71 @@
+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) {
+ return new TemplateShortcut({
+ parsers: details.get('parsers'),
+ start: details.get('start'),
+ end: details.get('end'),
+ startTag: block.getName(),
+ endTag: block.getEndTag()
+ });
+};
+
+module.exports = TemplateShortcut;