[open-ils-commits] r9532 - trunk/Open-ILS/web/js/dojo/openils
svn at svn.open-ils.org
svn at svn.open-ils.org
Thu May 8 12:01:59 EDT 2008
Author: erickson
Date: 2008-05-08 12:01:57 -0400 (Thu, 08 May 2008)
New Revision: 9532
Added:
trunk/Open-ILS/web/js/dojo/openils/CGI.js
Log:
dojo-ized CGI parser
Added: trunk/Open-ILS/web/js/dojo/openils/CGI.js
===================================================================
--- trunk/Open-ILS/web/js/dojo/openils/CGI.js (rev 0)
+++ trunk/Open-ILS/web/js/dojo/openils/CGI.js 2008-05-08 16:01:57 UTC (rev 9532)
@@ -0,0 +1,99 @@
+/* ---------------------------------------------------------------------------
+ * Copyright (C) 2008 Georgia Public Library Service
+ * Bill Erickson <erickson at esilibrary.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * ---------------------------------------------------------------------------
+ */
+
+if(!dojo._hasResource["openils.CGI"]) {
+
+ dojo._hasResource["openils.CGI"] = true;
+ dojo.provide("openils.CGI");
+ dojo.declare('openils.CGI', null, {
+
+ constructor : function() {
+
+ this._keys = new Array();
+ this.data = new Object();
+
+ var string = location.search.replace(/^\?/,"");
+ this.server_name = location.href.replace(/^https?:\/\/([^\/]+).+$/,"$1");
+
+ var key = "";
+ var value = "";
+ var inkey = true;
+ var invalue = false;
+
+ for( var idx = 0; idx!= string.length; idx++ ) {
+
+ var c = string.charAt(idx);
+
+ if( c == "=" ) {
+ invalue = true;
+ inkey = false;
+ continue;
+ }
+
+ if(c == "&" || c == ";") {
+ inkey = 1;
+ invalue = 0;
+ if( ! this.data[key] ) this.data[key] = [];
+ this.data[key].push(decodeURIComponent(value));
+ this._keys.push(key);
+ key = ""; value = "";
+ continue;
+ }
+
+ if(inkey) key += c;
+ else if(invalue) value += c;
+ }
+
+ if( ! this.data[key] ) this.data[key] = [];
+ this.data[key].push(decodeURIComponent(value));
+ this._keys.push(key);
+ },
+
+ /* returns the value for the given param. If there is only one value for the
+ given param, it returns that value. Otherwise it returns an array of values
+ */
+ param : function(p) {
+ if(this.data[p] == null) return null;
+ if(this.data[p].length == 1)
+ return this.data[p][0];
+ return this.data[p];
+ },
+
+ /* returns an array of param names */
+ keys : function() {
+ return this._keys;
+ },
+
+ /* debugging method */
+ toString : function() {
+ var string = "";
+ var keys = this.keys();
+
+ for( var k in keys ) {
+ string += keys[k] + " : ";
+ var params = this.param(keys[k]);
+
+ for( var p in params ) {
+ string += params[p] + " ";
+ }
+ string += "\n";
+ }
+ return string;
+ }
+ });
+}
+
+
More information about the open-ils-commits
mailing list