Sha256: 9a9afe65749806b51faaf2e980bb8318260cb19205e99248224dc4196df5f949

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

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

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

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

      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.RC1 app/assets/javascripts/joosy/resource_loader.coffee