nodebb-plugin-ns-embed
Version:
Embed media and rich content in posts: youtube, vimeo, twitch etc. All embeds are based on the rules. You are encouraged to build your own rules to embed everything what is embeddable.
63 lines (49 loc) • 1.63 kB
JavaScript
/**
* Created by Nicolas on 10/25/15.
*/
(function (Rules) {
'use strict';
var database = require('./database'),
logger = require('./logger'),
nodebb = require('./nodebb');
var cache = nodebb.cache;
var rulesList = [];
Rules.invalidate = function (done) {
database.getRules(function (error, rules) {
if (error) {
return done(error);
}
logger.log('verbose', 'Updating rules...');
// Re-compile regular expressions
var i, len = rules.length, rule, ruleEntity;
rulesList.length = 0;
for (i = 0; i < len; ++i) {
rule = rules[i];
try {
ruleEntity = {
match : new RegExp(rule.regex, "g"),
replacement: rule.replacement
};
rulesList.push(ruleEntity);
} catch (e) {
console.error('Rule is skipped', e);
}
}
cache.reset();
logger.log('verbose', 'Updating rule list, total rules: %d', rulesList.length);
done();
});
};
Rules.parse = function (content, done) {
if (content) {
var i = 0, len = rulesList.length, rule;
for (i; i < len; ++i) {
rule = rulesList[i];
content = content.replace(rule.match, rule.replacement);
}
done(null, content);
} else {
done(null, content);
}
};
})(module.exports);