Skip to content

Instantly share code, notes, and snippets.

@lukemelia
Created June 19, 2013 03:33
Show Gist options
  • Save lukemelia/5811513 to your computer and use it in GitHub Desktop.
Save lukemelia/5811513 to your computer and use it in GitHub Desktop.
Example of a custom Ember resolver for minispade
get = Ember.get
decamelize = Ember.String.decamelize
classify = Ember.String.classify
window.MinispadeResolver = Ember.DefaultResolver.extend
logFailedLookups: false
resolveTemplate: (parsedName)->
resolvedTemplate = @_super(parsedName)
unless resolvedTemplate
template_key = "#{decamelize(parsedName.fullNameWithoutType).replace(/\./, '_')}"
try
require "templates:#{template_key}"
catch e
if new RegExp("The module 'templates:#{template_key}' could not be found").test(e)
if @logFailedLookups
Ember.Logger.warn("Could not find templates:#{template_key}")
else
throw e
resolvedTemplate = Ember.TEMPLATES[template_key]
resolvedTemplate
parseName: (fullName)->
parsedName = @_super(fullName)
if parsedName.type == 'model'
parsedName.suffix = ''
else
parsedName.suffix = parsedName.type
parsedName
resolveOther: (parsedName)->
className = classify(parsedName.name) + classify(parsedName.suffix)
factory = get(parsedName.root, className)
unless factory
moduleName = "#{parsedName.type}s/#{decamelize(parsedName.name)}"
try
minispade.require(moduleName)
catch e
if new RegExp("The module '#{moduleName}' could not be found").test(e)
if @logFailedLookups
Ember.Logger.warn("Could not find #{parsedName.fullName}")
else
throw e
factory = get(parsedName.root, className)
factory
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment