mirror of
https://github.com/sstent/node.git
synced 2026-01-27 15:41:43 +00:00
35 lines
960 B
JavaScript
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
|
|
};
|
|
}
|