Created
June 30, 2015 16:59
-
-
Save mmun/775fd606a50a6338ef4a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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