Ticket #293 (new enhancement)

Opened 8 months ago

Last modified 2 months ago

extendURL

Reported by: troelskn@gmail.com Assigned to: somebody
Priority: normal Milestone: MochiKit 1.5
Component: component1 Version:
Severity: normal Keywords: url async
Cc:

Description

I have used the following snippet a couple of times and figured that it might candidate to being rolled into the main distribution. Not sure if it should go in Base or Async.

extendURL = function(url, parameters) {
  var parts = url.split(/\?/);
  var base = parts[0];
  var args = MochiKit.Base.update(
    MochiKit.Base.isUndefinedOrNull(parts[1]) ? {} : MochiKit.Base.parseQueryString(parts[1]),
    MochiKit.Base.isUndefinedOrNull(parameters) ? {} : parameters);
  var sanitised = {};
  for (key in args) {
    if (!MochiKit.Base.isUndefinedOrNull(args[key])) {
      sanitised[key] = args[key];
    }
  }
  if (keys(sanitised).length == 0) {
    return base;
  }
  return base + "?" + MochiKit.Base.queryString(sanitised);
}

test:

console.log(extendURL("http://example.com/")); // -> http://example.com/
console.log(extendURL("http://example.com/?foo=bar")); // -> http://example.com/?foo=bar
console.log(extendURL("http://example.com/?foo=bar", {foo: 42})); // -> http://example.com/?foo=42
console.log(extendURL("http://example.com/?foo=bar", {hux: "flux", ding: "dong"})); // -> http://example.com/?foo=bar&hux=flux&ding=dong

Change History

10/04/08 12:05:14 changed by cederberg@gmail.com

  • milestone changed from MochiKit 1.4 to MochiKit 1.5.

Moving to milestone 1.5 for later consideration.