Sha256: 8584ea417bc9a08edb354ece574b0003ed4cec6b70a03d1f54426ec018d175a5

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

#= require joosy/resources

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

2 entries across 2 versions & 1 rubygems

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