Skip to content

Instantly share code, notes, and snippets.

@DougPuchalski
Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DougPuchalski/287377007e13ebb0de63 to your computer and use it in GitHub Desktop.
Save DougPuchalski/287377007e13ebb0de63 to your computer and use it in GitHub Desktop.
Ember.js: custom resolver
`import Ember from 'ember'`
`import Resolver from 'ember/resolver'`
Resolver.reopen
normalize: (fullName) ->
_name = @_super(fullName)
if _name.match(/\/-/)
_name = _name.replace('/-', '/_')
_name
moduleNameLookupPatterns: Ember.computed ->
defaults = @_super()
[
@podDasherizedResolver,
@podShortDasherizedResolver,
@topLevelDasherizedResolver,
@componentResolver,
@podExplicitTemplateResolver,
].concat(defaults)
# pods/posts/posts-controller
# pods/post/comments/post-comments-controller
podDasherizedResolver: (parsedName) ->
names = parsedName.fullNameWithoutType.split('/')
type = parsedName.type
podPrefix = @namespace.podModulePrefix || @namespace.modulePrefix
"#{podPrefix}/#{names.join('/')}/#{names.join('-')}-#{type}"
# services/do-some-task-service.coffee
topLevelDasherizedResolver: (parsedName) ->
names = parsedName.fullNameWithoutType.split('/')
type = parsedName.type
"#{@prefix(parsedName)}/#{type.pluralize()}/#{names.join('-')}-#{type}"
# pods/post/post-comments-controller
podShortDasherizedResolver: (parsedName) ->
names = parsedName.fullNameWithoutType.split('/')
type = parsedName.type
podPrefix = @namespace.podModulePrefix || @namespace.modulePrefix
"#{podPrefix}/#{names[0]}/#{names.join('-')}-#{type}"
componentResolver: (parsedName) ->
fullNameWithoutType = parsedName.fullNameWithoutType
fullNameWithoutPath = fullNameWithoutType.substr(fullNameWithoutType.indexOf('/') + 1)
if parsedName.type == 'component'
"#{@prefix(parsedName)}/components/#{fullNameWithoutType}/#{fullNameWithoutType}-component"
else if (parsedName.type == 'template')
"#{@prefix(parsedName)}/#{fullNameWithoutType}/#{fullNameWithoutPath}-template"
# Resolves: pods/posts/comments.hbs
podExplicitTemplateResolver: (parsedName) ->
if parsedName.type == 'template'
podPrefix = @namespace.podModulePrefix || @namespace.modulePrefix
fullNameWithoutType = parsedName.fullNameWithoutType
"#{podPrefix}/#{fullNameWithoutType}"
`export default Resolver`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment