Files
2012-05-30 23:00:06 -04:00

35 lines
960 B
JavaScript

var path = require('path')
, racer = require('racer')
, View = require('./View')
, derby = module.exports = Object.create(racer)
, derbyPlugin = racer.util.isServer ?
__dirname + '/derby.server' : require('./derby.browser');
// Allow derby object to be targeted via plugin.decorate
racer._makePlugable('derby', derby);
// Shared methods for both server and browser
derby._libraries = {};
derby.createLibrary = createLibrary;
// Add appropriate server-side or browser-side methods
derby.use(derbyPlugin);
function createLibrary(filename, scripts, options) {
if (!options) options = {};
var root = path.dirname(filename)
, name = options.name || path.basename(root)
, view = new View;
// This is needed, since component names are all lowercased
for (scriptName in scripts) {
scripts[scriptName.toLowerCase()] = scripts[scriptName];
}
this._libraries[name] = {
root: root
, view: view
, scripts: scripts
};
}