Sha256: 9b9c9b3974bb700b53b5afe12d8f58368147e62ab9c2cc97ef107e57d91f3c47

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

#= require joosy/resources

Joosy.ResourceLoader =
  defineResource: (name, path, parent) ->
    class @[name] extends parent
      @entity inflection.underscore(name)
      @source path

  namespaceFromLevels: (levels) ->
    levels.map((x) ->
      res = x.replace(/^\//, '').split('/')
      if res.length > 1
        # resource, has second (mask) part
        res = inflection.singularize(res[0])
      else
        # scope
        res = res[0]
      inflection.camelize res
    ).join('.')

  loadResources: (routes) ->
    for route in routes
      levels   = route.match /\/[^\/]+(\/:[^\/]+)?/g
      continue unless levels instanceof Array
      rootPath = levels.pop()
      name     = inflection.camelize inflection.singularize(rootPath.replace(/^\//, ''))

      parent = if window[name] && Joosy.Module.hasAncestor(window[name], Joosy.Resources.REST)
        window[name]
      else if !window[name]
        @defineResource.call window, name, rootPath, Joosy.Resources.REST
      else
        Joosy.Resources.REST

      if (ns = @namespaceFromLevels(levels)) != ''
        Joosy.namespace ns, ->
          Joosy.ResourceLoader.defineResource.call @, name, route, parent

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
joosy-rails-1.0.0.rc4 app/assets/javascripts/joosy/resource_loader.coffee