mikser
Version:
Real-time static site generator
53 lines (51 loc) • 1.6 kB
JavaScript
var Promise = require('bluebird');
var S = require('string');
var config = require('mikser-config');
var _ = require('lodash');
var $ = require('jquery');
$(document).ready(function() {
var mikser = {
resources: [],
isBrowser: true,
loadPlugins: function() {
mikser.plugins = {};
return Promise.map(_.uniq(mikser.config.browser), (pluginName) => {
let plugin = require(pluginName);
return Promise.resolve(plugin(mikser)).then((result) => {
if (result) {
mikser.plugins[S(pluginName).camelize().s] = result;
}
console.log('Plugin loaded:', pluginName);
});
});
return Promise.resolve();
},
loadResource: function(resource, resourceType){
if (mikser.resources.indexOf(resource) == -1) {
resourceType = resourceType || resource.split('.').pop();
if (resourceType=="js") {
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", resource);
}
else if (resourceType=="css") {
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", resource);
}
if (typeof fileref!="undefined") {
document.getElementsByTagName("head")[0].appendChild(fileref);
mikser.resources.push(resource);
}
}
},
options: $('body').data('mikser')
}
Promise.resolve(mikser)
.then(config)
.then((mikser) => {
return mikser.loadPlugins();
});
});