Skip to content

Instantly share code, notes, and snippets.

@mmun
Created June 30, 2015 16:59
Show Gist options
  • Save mmun/775fd606a50a6338ef4a to your computer and use it in GitHub Desktop.
Save mmun/775fd606a50a6338ef4a to your computer and use it in GitHub Desktop.
import Ember from "ember";
import ENV from "./config/environment";
import Router from "./router";
import Resolver from "./resolver";
export default {
create: function() {
window.Cm = createApp(); // Export app global
initGlobals(window.Cm);
console.info('Welcome to Crowdmark! ('+ ENV.railsEnvironment + ')');
}
};
function createApp() {
return Ember.Application.create({
Router: Router,
Resolver: Resolver
});
}
function initGlobals(App) {
function defaultHandler(type, name, value) {
var singularType = Ember.String.singularize(type);
var className = Ember.String.classify(`${name.replace(/\//g, '-')}-${singularType}`);
App[className] = value;
debug(`Loading ${type}: Cm.${className} from ${ENV.modulePrefix}/${type}/${name}`);
}
var moduleHandlers = {
initializers(type, name, value) {
Ember.Application.initializer(value);
debug(`Loading ${type}: ${name}`);
},
templates(type, name, value) {
Ember.TEMPLATES[name] = value;
debug(`Loading ${type}: ${name}`);
},
helpers(type, name, value) {
Ember.Handlebars.registerHelper(name, value);
debug(`Loading ${type}: ${name}`);
},
models(type, name, value) {
var className = Ember.String.classify(name);
App[className] = value;
debug(`Loading ${type}: Cm.${className} from ${ENV.modulePrefix}/${type}/${name}`);
},
services: defaultHandler,
routes: defaultHandler,
controllers: defaultHandler,
components: defaultHandler,
views: defaultHandler,
adapters: defaultHandler,
serializers: defaultHandler,
transforms: defaultHandler
};
var moduleMatcher = new RegExp(`^${ENV.modulePrefix}/([^/]*)/(.*)`);
for (var key in require.entries) {
var moduleMatch = moduleMatcher.exec(key);
if (moduleMatch) {
var type = moduleMatch[1];
var name = moduleMatch[2];
var callback = moduleHandlers[type];
if (callback) {
callback(type, name, require(key).default);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment