Sha256: 28bf4610cb67ac5c87389e604ab29b06c1aa8f44c873c06c79b1f48d8694ad1b

Contents?: true

Size: 1.68 KB

Versions: 1

Compression:

Stored size: 1.68 KB

Contents

(($, window)->
  class Router
    @PART_REGEXP = /\(([^\(]+?)\)/
    @PARAM_REGEXP = /:([a-z0-9_]+)/i

    constructor: (@elements, @options)->
      @reinit(@elements)

    update_params: ->
      @params = Router.params(@elements)

    reinit: (elements)->
      @elements = elements
      @elements.data('lazy_router', this)
      @update_params()
      @elements.off('change.lazy_router').on 'change.lazy_router', =>
        @update_params()
        @options.onChange.call(@) if $.isFunction(@options.onChange)

    parse: (route)->
      Router.parse(route, @params)

    @params: (elements)->
      elements = $(elements) unless elements instanceof $
      params = {}
      _params = elements.serializeArray?()
      if _params?.length > 0
        for param in _params
          value = encodeURIComponent(param.value)
          params[param.name] = value if value?.length > 0
      params

    # f.serializeArray().filter(function(i){return i['name']=='skill'})[0]
    @parse: (route, object={})->
      parts = []
      while _part = @PART_REGEXP.exec(route)
        curr = _part[1]
        # console.log 'part', _part[1]
        while curr? && (_param = @PARAM_REGEXP.exec(curr))
          if object[_param[1]] != undefined
            # console.log 'replace', _param[0], object[_param[1]]
            curr = curr.replace(_param[0], object[_param[1]])
          else
            # console.log 'remove', _param[0], _param[1]
            curr = undefined
        route = route.replace(_part[0], curr || "")

      route

  init = (params={})->
    defaults = {
    }
    window.R = Router
    window.RR = new Router(this, $.extend(true, {}, defaults, params))
    this

  $.fn['lazy_router'] = init
)(jQuery, window)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
translation_cms-0.1.5 app/assets/javascripts/writers/lazy_router.js.coffee