sc-markdown-it-hashmention
Version:
Flowdock hashtag and mention parser for markdown-it
45 lines (36 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _parser = require('./parser');
var _parser2 = _interopRequireDefault(_parser);
var intRegex = /^\d+$/;
var taskAndProjectRegex = /^([a-z][a-z0-9-]*)_(\d+)$/;
function flowdockHashtag(tokens, idx) {
var tag = tokens[idx].content;
var markup = tokens[idx].markup;
var result = '<a ';
if (flowdockHashtag.options && (flowdockHashtag.options.href_channel || flowdockHashtag.options.href_task)) {
if (intRegex.test(tag) && tag !== '0' && flowdockHashtag.options.pid) {
result += 'class="task" data-tasknum="' + tag + '" data-taskpid="' + flowdockHashtag.options.pid + '"';
} else if (intRegex.test(tag) && tag !== '0') {
result += 'class="ticket" data-ticketnum="' + tag + '"';
} else if (taskAndProjectRegex.test(tag)) {
result += 'class="task" data-task="' + tag + '"';
} else {
result += 'class="tag" href="' + flowdockHashtag.options.href_channel + encodeURIComponent('#' + tag) + '"';
}
}
result += '>' + markup + tag + '</a>';
return result;
}
exports['default'] = function (md, options) {
var split = "#|#";
var hashtag = (0, _parser2['default'])(md, 'hashtag', new RegExp(split));
md.core.ruler.push('hashtag', hashtag);
flowdockHashtag.options = options && options.hashtags;
md.renderer.rules.hashtag = flowdockHashtag;
};
;
module.exports = exports['default'];