diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-05-04 19:01:31 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-05-04 19:01:31 +0200 |
commit | c4b54033cefe54f2c7fda92b8765ed500178ea74 (patch) | |
tree | 14b83ff6b7950f542dfff4dfa9c6c676209631bb /lib/models/templateShortcut.js | |
parent | 4d85d6eb6e12192146e8f2450f1bddada6e6f6d1 (diff) | |
download | gitbook-c4b54033cefe54f2c7fda92b8765ed500178ea74.zip gitbook-c4b54033cefe54f2c7fda92b8765ed500178ea74.tar.gz gitbook-c4b54033cefe54f2c7fda92b8765ed500178ea74.tar.bz2 |
Fix #1268: fix shortcuts of template block not being applied
Diffstat (limited to 'lib/models/templateShortcut.js')
-rw-r--r-- | lib/models/templateShortcut.js | 71 |
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; |