File: connected-users-websocket/node_modules/express/node_modules/connect/node_modules/qs/test/browser/qs.js

Recommend this page to a friend!
  Classes of Igor Escobar   Terminal Crossword   connected-users-websocket/node_modules/express/node_modules/connect/node_modules/qs/test/browser/qs.js   Download  
File: connected-users-websocket/node_modules/express/node_modules/connect/node_modules/qs/test/browser/qs.js
Role: Example script
Content type: text/plain
Description: Example script
Class: Terminal Crossword
Generate a crosswords board on a text console
Author: By
Last change:
Date: 2 years ago
Size: 7,231 bytes
 

Contents

Class file image Download
/** * Require the given path. * * @param {String} path * @return {Object} exports * @api public */ function require(p, parent){ var path = require.resolve(p) , mod = require.modules[path]; if (!mod) throw new Error('failed to require "' + p + '" in ' + parent); if (!mod.exports) { mod.exports = {}; mod.client = true; mod.call(mod.exports, mod, mod.exports, require.relative(path)); } return mod.exports; } /** * Registered modules. */ require.modules = {}; /** * Resolve `path`. * * @param {String} path * @return {Object} module * @api public */ require.resolve = function(path){ var orig = path , reg = path + '.js' , index = path + '/index.js'; return require.modules[reg] && reg || require.modules[index] && index || orig; }; /** * Register module at `path` with callback `fn`. * * @param {String} path * @param {Function} fn * @api public */ require.register = function(path, fn){ require.modules[path] = fn; }; /** * Defines and executes anonymous module immediately, while preserving relative * paths. * * @param {String} path * @param {Function} require ref * @api public */ require.exec = function (path, fn) { fn.call(window, require.relative(path)); }; /** * Return a require function relative to the `parent` path. * * @param {String} parent * @return {Function} * @api private */ require.relative = function(parent) { return function(p){ if ('.' != p[0]) return require(p); var path = parent.split('/') , segs = p.split('/'); path.pop(); for (var i = 0; i < segs.length; i++) { var seg = segs[i]; if ('..' == seg) path.pop(); else if ('.' != seg) path.push(seg); } return require(path.join('/'), parent); }; }; // component qs: querystring require.register("querystring", function(module, exports, require){ ;(function(){ /** * Object#toString() ref for stringify(). */ var toString = Object.prototype.toString; /** * Cache non-integer test regexp. */ var isint = /^[0-9]+$/; function promote(parent, key) { if (parent[key].length == 0) return parent[key] = {}; var t = {}; for (var i in parent[key]) t[i] = parent[key][i]; parent[key] = t; return t; } function parse(parts, parent, key, val) { var part = parts.shift(); // end if (!part) { if (Array.isArray(parent[key])) { parent[key].push(val); } else if ('object' == typeof parent[key]) { parent[key] = val; } else if ('undefined' == typeof parent[key]) { parent[key] = val; } else { parent[key] = [parent[key], val]; } // array } else { var obj = parent[key] = parent[key] || []; if (']' == part) { if (Array.isArray(obj)) { if ('' != val) obj.push(val); } else if ('object' == typeof obj) { obj[Object.keys(obj).length] = val; } else { obj = parent[key] = [parent[key], val]; } // prop } else if (~part.indexOf(']')) { part = part.substr(0, part.length - 1); if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); parse(parts, obj, part, val); // key } else { if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); parse(parts, obj, part, val); } } } /** * Merge parent key/val pair. */ function merge(parent, key, val){ if (~key.indexOf(']')) { var parts = key.split('[') , len = parts.length , last = len - 1; parse(parts, parent, 'base', val); // optimize } else { if (!isint.test(key) && Array.isArray(parent.base)) { var t = {}; for (var k in parent.base) t[k] = parent.base[k]; parent.base = t; } set(parent.base, key, val); } return parent; } /** * Parse the given obj. */ function parseObject(obj){ var ret = { base: {} }; Object.keys(obj).forEach(function(name){ merge(ret, name, obj[name]); }); return ret.base; } /** * Parse the given str. */ function parseString(str){ return String(str) .split('&') .reduce(function(ret, pair){ try{ pair = decodeURIComponent(pair.replace(/\+/g, ' ')); } catch(e) { // ignore } var eql = pair.indexOf('=') , brace = lastBraceInKey(pair) , key = pair.substr(0, brace || eql) , val = pair.substr(brace || eql, pair.length) , val = val.substr(val.indexOf('=') + 1, val.length); // ?foo if ('' == key) key = pair, val = ''; return merge(ret, key, val); }, { base: {} }).base; } /** * Parse the given query `str` or `obj`, returning an object. * * @param {String} str | {Object} obj * @return {Object} * @api public */ exports.parse = function(str){ if (null == str || '' == str) return {}; return 'object' == typeof str ? parseObject(str) : parseString(str); }; /** * Turn the given `obj` into a query string * * @param {Object} obj * @return {String} * @api public */ var stringify = exports.stringify = function(obj, prefix) { if (Array.isArray(obj)) { return stringifyArray(obj, prefix); } else if ('[object Object]' == toString.call(obj)) { return stringifyObject(obj, prefix); } else if ('string' == typeof obj) { return stringifyString(obj, prefix); } else { return prefix + '=' + obj; } }; /** * Stringify the given `str`. * * @param {String} str * @param {String} prefix * @return {String} * @api private */ function stringifyString(str, prefix) { if (!prefix) throw new TypeError('stringify expects an object'); return prefix + '=' + encodeURIComponent(str); } /** * Stringify the given `arr`. * * @param {Array} arr * @param {String} prefix * @return {String} * @api private */ function stringifyArray(arr, prefix) { var ret = []; if (!prefix) throw new TypeError('stringify expects an object'); for (var i = 0; i < arr.length; i++) { ret.push(stringify(arr[i], prefix + '['+i+']')); } return ret.join('&'); } /** * Stringify the given `obj`. * * @param {Object} obj * @param {String} prefix * @return {String} * @api private */ function stringifyObject(obj, prefix) { var ret = [] , keys = Object.keys(obj) , key; for (var i = 0, len = keys.length; i < len; ++i) { key = keys[i]; ret.push(stringify(obj[key], prefix ? prefix + '[' + encodeURIComponent(key) + ']' : encodeURIComponent(key))); } return ret.join('&'); } /** * Set `obj`'s `key` to `val` respecting * the weird and wonderful syntax of a qs, * where "foo=bar&foo=baz" becomes an array. * * @param {Object} obj * @param {String} key * @param {String} val * @api private */ function set(obj, key, val) { var v = obj[key]; if (undefined === v) { obj[key] = val; } else if (Array.isArray(v)) { v.push(val); } else { obj[key] = [v, val]; } } /** * Locate last brace in `str` within the key. * * @param {String} str * @return {Number} * @api private */ function lastBraceInKey(str) { var len = str.length , brace , c; for (var i = 0; i < len; ++i) { c = str[i]; if (']' == c) brace = false; if ('[' == c) brace = true; if ('=' == c && !brace) return i; } } })(); });