Skip to content

Instantly share code, notes, and snippets.

@Raynos
Created January 6, 2012 15:23
Show Gist options
  • Select an option

  • Save Raynos/1571036 to your computer and use it in GitHub Desktop.

Select an option

Save Raynos/1571036 to your computer and use it in GitHub Desktop.
EDA Y U CODE BLOAT
module.exports = {
attach: function attach() {
this.mediator.on("server.express", this.setVariables);
this.mediator.on("server.express", this.addMiddleware);
},
detach: function detach() {
this.mediator.removeListener('server.express', this.setVariables);
this.mediator.removeListener('server.express', this.addMiddleware);
},
destroy: function destroy() {
this.unsetVariables();
this.removeMiddleware(this.app);
},
setVariables: function setVariables(app) {
this.app = app;
app.set('views', path.join(__dirname, "..", "views"));
app.set("view engine", "jade");
},
unsetVariables: function unsetVariables(app) {
var app = this.app;
app.set('views', undefined);
app.set('view engine', undefined);
},
addMiddleware: constructMiddlewareFunction('add'),
addMiddlewareToApp: function addMiddlewareToApp(middleware, env) {
var app = this.app;
app.configure(env, addToApp.bind(this));
function addToApp() {
app.use(middleware);
this.mediator.emit('configure.middleware', middleware, env)
}
},
removeMiddleware: constructMiddlewareFunction('remove'),
removeMiddlewareFromApp: function removeMiddlewareFromApp(middleware, env) {
var app = this.app;
app.configure(env, removeFromApp.bind(this));
function removeFromApp() {
app.stack.some(removeFromStackIfMiddleware, this);
function removeFromStackIfMiddleware(tuple, index) {
if (tuple.handle === middleware) {
app.stack.splice(index, 1);
this.mediator.emit(
'configure.middleware-removed', middleware, env);
return true;
}
}
}
},
middlewares: extend([
express.favicon(),
express.logger('dev'),
express.static(path.join(__dirname, "..", "public")),
express.bodyParser(),
express.methodOverride(),
express.cookieParser('your secret here'),
express.session(),
stylus.middleware({
src: path.join(__dirname, "..", "public")
})
], {
dev: [
express.errorHandler()
]
})
};
function constructMiddlewareFunction(name) {
var method;
if (name === 'add') {
method = 'addMiddlewareToApp';
} else if (name === 'remove') {
method = 'removeMiddlewareFromApp';
}
return xMiddleware;
function xMiddleware(app) {
var middlewares = this.middlewares,
dev = middlewares.dev,
i, len;
for (i = 0, len = middlewares.length; i < len; i++) {
this[method](middlewares[i], 'all');
}
this[method](app.router, 'all');
for (i = 0, len = dev.length; i < len; i++) {
this[method](dev[i], 'development');
}
}
}
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.static(__dirname + '/public'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(require('stylus').middleware({ src: __dirname + '/public' }));
app.use(app.router);
});
app.configure('development', function(){
app.use(express.errorHandler());
});
module.exports = extend(Object.create(require("framework/express/configure.js")), {
middlewares: extend([
express.favicon(),
express.logger('dev'),
express.static(path.join(__dirname, "..", "public")),
express.bodyParser(),
express.methodOverride(),
express.cookieParser('your secret here'),
express.session(),
stylus.middleware({
src: path.join(__dirname, "..", "public")
})
], {
dev: [
express.errorHandler()
]
}),
setVariables: function setVariables(app) {
this.app = app;
app.set('views', path.join(__dirname, "..", "views"));
app.set("view engine", "jade");
},
unsetVariables: function unsetVariables(app) {
var app = this.app;
app.set('views', undefined);
app.set('view engine', undefined);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment