Sha256: 0bdbcbb4208446ec9b11cd2c84614ab08a4bc2bb457afa5ec1a8dfea8ac5812b
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
Backbone.Router = (options) -> options or (options = {}) @routes = options.routes if options.routes @_bindRoutes() @initialize.apply this, arguments namedParam = /:([\w\d]+)/g splatParam = /\*([\w\d]+)/g escapeRegExp = /[-[\]{}()+?.,\\^$|#\s]/g _.extend Backbone.Router::, Backbone.Events, initialize: -> route: (route, name, callback) -> Backbone.history or (Backbone.history = new Backbone.History) route = @_routeToRegExp route unless _.isRegExp(route) Backbone.history.route route, _.bind((fragment) -> args = @_extractParameters(route, fragment) callback and callback.apply(this, args) @trigger.apply this, [ "route:" + name ].concat(args) , this) navigate: (fragment, triggerRoute) -> Backbone.history.navigate fragment, triggerRoute _bindRoutes: -> return unless @routes routes = [] for route of @routes routes.unshift [ route, @routes[route] ] i = 0 l = routes.length while i < l @route routes[i][0], routes[i][1], this[routes[i][1]] i++ _routeToRegExp: (route) -> route = route.replace escapeRegExp, "\\$&" route = route.replace namedParam , "([^/]*)" route = route.replace splatParam , "(.*?)" new RegExp("^" + route + "$") _extractParameters: (route, fragment) -> route.exec(fragment).slice 1
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
laces-0.1.0 | templates/app/assets/javascripts/lib/backbone/router.coffee |