ranger-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sneet...@apache.org
Subject [05/51] [partial] ARGUS-2 : Uploading eclipse support files and additional lib/js files
Date Thu, 14 Aug 2014 22:08:44 GMT
http://git-wip-us.apache.org/repos/asf/incubator-argus/blob/185f7c50/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/hbs.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/hbs.js
b/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/hbs.js
new file mode 100644
index 0000000..b207ad1
--- /dev/null
+++ b/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/hbs.js
@@ -0,0 +1,458 @@
+/**
+ * @license handlebars hbs 0.4.0 - Alex Sexton, but Handlebars has it's own licensing junk
+ *
+ * Available via the MIT or new BSD license.
+ * see: http://github.com/jrburke/require-cs for details on the plugin this was based off
of
+ */
+
+/* Yes, deliciously evil. */
+/*jslint evil: true, strict: false, plusplus: false, regexp: false */
+/*global require: false, XMLHttpRequest: false, ActiveXObject: false,
+define: false, process: false, window: false */
+define([
+//>>excludeStart('excludeHbs', pragmas.excludeHbs)
+'handlebars', 'underscore', 'i18nprecompile', 'json2'
+//>>excludeEnd('excludeHbs')
+], function (
+//>>excludeStart('excludeHbs', pragmas.excludeHbs)
+ Handlebars, _, precompile, JSON
+//>>excludeEnd('excludeHbs')
+) {
+//>>excludeStart('excludeHbs', pragmas.excludeHbs)
+  var fs, getXhr,
+        progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
+        fetchText = function () {
+            throw new Error('Environment unsupported.');
+        },
+        buildMap = [],
+        filecode = "w+",
+        templateExtension = "hbs",
+        customNameExtension = "@hbs",
+        devStyleDirectory = "/styles/",
+        buildStyleDirectory = "/demo-build/styles/",
+        helperDirectory = "template/helpers/",
+        i18nDirectory = "template/i18n/",
+        buildCSSFileName = "screen.build.css";
+
+    if (typeof window !== "undefined" && window.navigator && window.document
&& !window.navigator.userAgent.match(/Node.js/)) {
+        // Browser action
+        getXhr = function () {
+            //Would love to dump the ActiveX crap in here. Need IE 6 to die first.
+            var xhr, i, progId;
+            if (typeof XMLHttpRequest !== "undefined") {
+                return new XMLHttpRequest();
+            } else {
+                for (i = 0; i < 3; i++) {
+                    progId = progIds[i];
+                    try {
+                        xhr = new ActiveXObject(progId);
+                    } catch (e) {}
+
+                    if (xhr) {
+                        progIds = [progId];  // so faster next time
+                        break;
+                    }
+                }
+            }
+
+            if (!xhr) {
+                throw new Error("getXhr(): XMLHttpRequest not available");
+            }
+
+            return xhr;
+        };
+
+        fetchText = function (url, callback) {
+            var xhr = getXhr();
+            xhr.open('GET', url, true);
+            xhr.onreadystatechange = function (evt) {
+                //Do not explicitly handle errors, those should be
+                //visible via console output in the browser.
+                if (xhr.readyState === 4) {
+                    callback(xhr.responseText);
+                }
+            };
+            xhr.send(null);
+        };
+
+    } else if (typeof process !== "undefined" &&
+               process.versions &&
+               !!process.versions.node) {
+        //Using special require.nodeRequire, something added by r.js.
+        fs = require.nodeRequire('fs');
+        fetchText = function ( path, callback ) {
+            var body = fs.readFileSync(path, 'utf8') || "";
+            // we need to remove BOM stuff from the file content
+            body = body.replace(/^\uFEFF/, '');
+            callback(body);
+        };
+    } else if (typeof java !== "undefined" && typeof java.io !== "undefined") {
+        fetchText = function(path, callback) {
+            var f = new java.io.File(path);
+            var is = new java.io.FileReader(f);
+            var reader = new java.io.BufferedReader(is);
+            var line;
+            var text = "";
+            while ((line = reader.readLine()) !== null) {
+                text += new String(line) + "\n";
+            }
+            reader.close();
+            callback(text);
+        };
+    }
+
+    var cache = {};
+    var fetchOrGetCached = function ( path, callback ){
+      if ( cache[path] ){
+        callback(cache[path]);
+      }
+      else {
+        fetchText(path, function(data){
+          cache[path] = data;
+          callback.call(this, data);
+        });
+      }
+    };
+    var styleList = [], styleMap = {};
+//>>excludeEnd('excludeHbs')
+
+      return {
+
+        get: function () {
+            return Handlebars;
+        },
+
+        write: function (pluginName, name, write) {
+
+            if ( (name + customNameExtension ) in buildMap) {
+                var text = buildMap[name + customNameExtension];
+                write.asModule(pluginName + "!" + name, text);
+            }
+        },
+
+        version: '0.4.0',
+
+        load: function (name, parentRequire, load, config) {
+          //>>excludeStart('excludeHbs', pragmas.excludeHbs)
+
+            var compiledName = name + customNameExtension,
+                disableI18n = (config.hbs && config.hbs.disableI18n),
+                partialDeps = [];
+
+            function recursiveNodeSearch( statements, res ) {
+              _(statements).forEach(function ( statement ) {
+                if ( statement && statement.type && statement.type === 'partial'
) {
+                    res.push(statement.id.string);
+                }
+                if ( statement && statement.program && statement.program.statements
) {
+                  recursiveNodeSearch( statement.program.statements, res );
+                }
+                if ( statement && statement.program && statement.program.inverse
&& statement.program.inverse.statements ) {
+                  recursiveNodeSearch( statement.program.inverse.statements, res );
+                }
+              });
+              return res;
+            }
+
+            // TODO :: use the parser to do this!
+            function findPartialDeps( nodes ) {
+              var res   = [];
+              if ( nodes && nodes.statements ) {
+                res = recursiveNodeSearch( nodes.statements, [] );
+              }
+              return _(res).unique();
+            }
+
+            // See if the first item is a comment that's json
+            function getMetaData( nodes ) {
+              var statement, res, test;
+              if ( nodes && nodes.statements ) {
+                statement = nodes.statements[0];
+                if ( statement && statement.type === "comment" ) {
+                  try {
+                    res = ( statement.comment ).replace(new RegExp('^[\\s]+|[\\s]+$', 'g'),
'');
+                    test = JSON.parse(res);
+                    return res;
+                  }
+                  catch (e) {
+                    return "{}";
+                  }
+                }
+              }
+              return "{}";
+            }
+            function composeParts ( parts ) {
+              if ( !parts ) {
+                return [];
+              }
+              var res = [parts[0]],
+                  cur = parts[0],
+                  i;
+
+              for (i = 1; i < parts.length; ++i) {
+                if ( parts.hasOwnProperty(i) ) {
+                  cur += "." + parts[i];
+                  res.push( cur );
+                }
+              }
+              return res;
+            }
+
+            function recursiveVarSearch( statements, res, prefix, helpersres ) {
+              prefix = prefix ? prefix+"." : "";
+
+              var  newprefix = "", flag = false;
+
+              // loop through each statement
+              _(statements).forEach(function ( statement ) {
+                var parts, part, sideways;
+
+                // if it's a mustache block
+                if ( statement && statement.type && statement.type === 'mustache'
) {
+
+                  // If it has params, the first part is a helper or something
+                  if ( !statement.params || ! statement.params.length ) {
+                    parts = composeParts( statement.id.parts );
+                    for( part in parts ) {
+                      if ( parts[ part ] ) {
+                        newprefix = parts[ part ] || newprefix;
+                        res.push( prefix + parts[ part ] );
+                      }
+                    }
+                    res.push(prefix + statement.id.string);
+                  }
+
+                  var paramsWithoutParts = ['this', '.', '..', './..', '../..', '../../..'];
+
+                  // grab the params
+                  if ( statement.params ) {
+                    _(statement.params).forEach(function(param) {
+                      if ( _(paramsWithoutParts).contains(param.original) ) {
+                        helpersres.push(statement.id.string);
+                      }
+
+                      parts = composeParts( param.parts );
+
+                      for(var part in parts ) {
+                        if ( parts[ part ] ) {
+                          newprefix = parts[part] || newprefix;
+                          helpersres.push(statement.id.string);
+                          res.push( prefix + parts[ part ] );
+                        }
+                      }
+                    });
+                  }
+                }
+
+                // If it's a meta block
+                if ( statement && statement.mustache  ) {
+                  recursiveVarSearch( [statement.mustache], res, prefix + newprefix, helpersres
);
+                }
+
+                // if it's a whole new program
+                if ( statement && statement.program && statement.program.statements
) {
+                  sideways = recursiveVarSearch([statement.mustache],[], "", helpersres)[0]
|| "";
+                  if ( statement.program.inverse && statement.program.inverse.statements
) {
+                    recursiveVarSearch( statement.program.inverse.statements, res, prefix
+ newprefix + (sideways ? (prefix+newprefix) ? "."+sideways : sideways : ""), helpersres);
+                  }
+                  recursiveVarSearch( statement.program.statements, res, prefix + newprefix
+ (sideways ? (prefix+newprefix) ? "."+sideways : sideways : ""), helpersres);
+                }
+              });
+              return res;
+            }
+
+            // This finds the Helper dependencies since it's soooo similar
+            function getExternalDeps( nodes ) {
+              var res   = [];
+              var helpersres = [];
+
+              if ( nodes && nodes.statements ) {
+                res = recursiveVarSearch( nodes.statements, [], undefined, helpersres );
+              }
+
+              var defaultHelpers = ["helperMissing", "blockHelperMissing", "each", "if",
"unless", "with"];
+
+              return {
+                vars : _(res).chain().unique().map(function(e){
+                  if ( e === "" ) {
+                    return '.';
+                  }
+                  if ( e.length && e[e.length-1] === '.' ) {
+                    return e.substr(0,e.length-1) + '[]';
+                  }
+                  return e;
+                }).value(),
+                helpers : _(helpersres).chain().unique().map(function(e){
+                  if ( _(defaultHelpers).contains(e) ) {
+                    return undefined;
+                  }
+                  return e;
+                }).compact().value()
+              };
+            }
+
+            function fetchAndRegister(langMap){
+              fetchText(path, function (text) {
+                  // for some reason it doesn't include hbs _first_ when i don't add it here...
+                  var nodes = Handlebars.parse(text),
+                      deps = findPartialDeps( nodes ),
+                      meta = getMetaData( nodes ),
+                      extDeps = getExternalDeps( nodes ),
+                      vars = extDeps.vars,
+                      helps = extDeps.helpers || [],
+                      depStr = deps.join("', 'hbs!").replace(/_/g, '/'),
+                      helpDepStr = config.hbs && config.hbs.disableHelpers ?
+                      "" : (function (){
+                        var i, paths = [],
+                            pathGetter = config.hbs && config.hbs.helperPathCallback
+                              ? config.hbs.helperPathCallback
+                              : function (name){return (config.hbs && config.hbs.helperDirectory
? config.hbs.helperDirectory : helperDirectory) + name;};
+
+                        for ( i = 0; i < helps.length; i++ ) {
+                          paths[i] = "'" + pathGetter(helps[i]) + "'"
+                        }
+                        return paths;
+                      })().join(','),
+                      debugOutputStart = "",
+                      debugOutputEnd   = "",
+                      debugProperties = "",
+                      metaObj, head, linkElem;
+
+                  if ( depStr ) {
+                    depStr = ",'hbs!" + depStr + "'";
+                  }
+                  if ( helpDepStr ) {
+                    helpDepStr = "," + helpDepStr;
+                  }
+
+                  if ( meta !== "{}" ) {
+                    try {
+                      metaObj = JSON.parse(meta);
+                      if ( metaObj && metaObj.styles ) {
+                        styleList = _.union(styleList, metaObj.styles);
+
+                        // In dev mode in the browser
+                        if ( require.isBrowser && ! config.isBuild ) {
+                          head = document.head || document.getElementsByTagName('head')[0];
+                          _(metaObj.styles).forEach(function (style) {
+                            if ( !styleMap[style] ) {
+                              linkElem = document.createElement('link');
+                              linkElem.href = config.baseUrl + devStyleDirectory + style
+ '.css';
+                              linkElem.media = 'all';
+                              linkElem.rel = 'stylesheet';
+                              linkElem.type = 'text/css';
+                              head.appendChild(linkElem);
+                              styleMap[style] = linkElem;
+                            }
+                          });
+                        }
+                        else if ( config.isBuild ) {
+                          (function(){
+                            var fs  = require.nodeRequire('fs'),
+                                str = _(metaObj.styles).map(function (style) {
+                                  if (!styleMap[style]) {
+                                    styleMap[style] = true;
+                                    return "@import url("+style+".css);\n";
+                                  }
+                                  return "";
+                                }).join("\n");
+
+                            // I write out my import statements to a file in order to help
me build stuff.
+                            // Then I use a tool to inline my import statements afterwards.
(you can run r.js on it too)
+                            fs.open(__dirname + buildStyleDirectory + buildCSSFileName, filecode,
'0666', function( e, id ) {
+                              fs.writeSync(id, str, null, encoding='utf8');
+                              fs.close(id);
+                            });
+                            filecode = "a";
+                          })();
+                        }
+                      }
+                    }
+                    catch(e){
+                      console.log('error injecting styles');
+                    }
+                  }
+
+                  if ( ! config.isBuild && ! config.serverRender ) {
+                    debugOutputStart = "<!-- START - " + name + " -->";
+                    debugOutputEnd = "<!-- END - " + name + " -->";
+                    debugProperties = "t.meta = " + meta + ";\n" +
+                                      "t.helpers = " + JSON.stringify(helps) + ";\n" +
+                                      "t.deps = " + JSON.stringify(deps) + ";\n" +
+                                      "t.vars = " + JSON.stringify(vars) + ";\n";
+                  }
+
+                  var mapping = disableI18n? false : _.extend( langMap, config.localeMapping
),
+                      prec = precompile( text, mapping, { originalKeyFallback: (config.hbs
|| {}).originalKeyFallback });
+
+                  text = "/* START_TEMPLATE */\n" +
+                         "define(['hbs','handlebars'"+depStr+helpDepStr+"], function( hbs,
Handlebars ){ \n" +
+                           "var t = Handlebars.template(" + prec + ");\n" +
+                           "Handlebars.registerPartial('" + name.replace( /\//g , '_') +
"', t);\n" +
+                           debugProperties +
+                           "return t;\n" +
+                         "});\n" +
+                         "/* END_TEMPLATE */\n";
+
+                  //Hold on to the transformed text if a build.
+                  if (config.isBuild) {
+                      buildMap[compiledName] = text;
+                  }
+
+                  //IE with conditional comments on cannot handle the
+                  //sourceURL trick, so skip it if enabled.
+                  /*@if (@_jscript) @else @*/
+                  if (!config.isBuild) {
+                      text += "\r\n//@ sourceURL=" + path;
+                  }
+                  /*@end@*/
+
+                  for ( var i in deps ) {
+                    if ( deps.hasOwnProperty(i) ) {
+                      deps[ i ] = 'hbs!' + deps[ i ].replace(/_/g, '/');
+                    }
+                  }
+
+                  if ( !config.isBuild ) {
+                    require( deps, function (){
+                      load.fromText(text);
+
+                      //Give result to load. Need to wait until the module
+                      //is fully parse, which will happen after this
+                      //execution.
+                      parentRequire([name], function (value) {
+                        load(value);
+                      });
+                    });
+                  }
+                  else {
+                    load.fromText(text);
+
+                    //Give result to load. Need to wait until the module
+                    //is fully parse, which will happen after this
+                    //execution.
+                    parentRequire([name], function (value) {
+                      load(value);
+                    });
+                  }
+
+                  if ( config.removeCombined ) {
+                    fs.unlinkSync(path);
+                  }
+              });
+            }
+
+            var path = parentRequire.toUrl(name +'.'+ (config.hbs && config.hbs.templateExtension?
config.hbs.templateExtension : templateExtension));
+
+            if (disableI18n){
+                fetchAndRegister(false);
+            } else {
+                fetchOrGetCached(parentRequire.toUrl((config.hbs && config.hbs.i18nDirectory
? config.hbs.i18nDirectory : i18nDirectory) + (config.locale || "en_us") + '.json'), function
(langMap) {
+                  fetchAndRegister(JSON.parse(langMap));
+                });
+            }
+          //>>excludeEnd('excludeHbs')
+        }
+      };
+});
+/* END_hbs_PLUGIN */

http://git-wip-us.apache.org/repos/asf/incubator-argus/blob/185f7c50/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/i18nprecompile.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/i18nprecompile.js
b/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/i18nprecompile.js
new file mode 100644
index 0000000..22b4133
--- /dev/null
+++ b/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/i18nprecompile.js
@@ -0,0 +1,45 @@
+//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)
+define(['handlebars', "underscore"], function ( Handlebars, _ ) {
+
+  function replaceLocaleStrings ( ast, mapping, options ) {
+    options = options || {};
+    mapping = mapping || {};
+    // Base set of things
+    if ( ast && ast.type === "program" && ast.statements ) {
+      _(ast.statements).forEach(function(statement, i){
+        var newString = "<!-- i18n error -->";
+        // If it's a translation node
+        if ( statement.type === "mustache" && statement.id && statement.id.original
=== "$" ) {
+
+          if ( statement.params.length && statement.params[0].string ) {
+            var key = statement.params[0].string;
+            newString = mapping[ key ] || (options.originalKeyFallback ? key : newString);
+          }
+          ast.statements[i] = new Handlebars.AST.ContentNode(newString);
+        }
+        // If we need to recurse
+        else if ( statement.program ) {
+          statement.program = replaceLocaleStrings( statement.program, mapping, options );
+        }
+      });
+      // Also cover the else blocks
+      if (ast.inverse) {
+        replaceLocaleStrings(ast.inverse, mapping, options);
+      }
+    }
+    return ast;
+  }
+
+  return function(string, mapping, options) {
+    options = options || {};
+    var ast, environment;
+    ast = Handlebars.parse(string);
+    // avoid replacing locale if mapping is `false`
+    if (mapping !== false) {
+        ast = replaceLocaleStrings(ast, mapping, options);
+    }
+    environment = new Handlebars.Compiler().compile(ast, options);
+    return new Handlebars.JavaScriptCompiler().compile(environment, options);
+  };
+});
+//>>excludeEnd('excludeAfterBuild')

http://git-wip-us.apache.org/repos/asf/incubator-argus/blob/185f7c50/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/json2.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/json2.js
b/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/json2.js
new file mode 100644
index 0000000..02a87e8
--- /dev/null
+++ b/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/json2.js
@@ -0,0 +1,365 @@
+//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)
+/*
+    http://www.JSON.org/json2.js
+    2011-10-19
+
+    Public Domain.
+
+    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+    See http://www.JSON.org/js.html
+
+
+    This code should be minified before deployment.
+    See http://javascript.crockford.com/jsmin.html
+
+    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+    NOT CONTROL.
+*/
+
+/*jslint evil: true, regexp: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+    lastIndex, length, parse, prototype, push, replace, slice, stringify,
+    test, toJSON, toString, valueOf
+*/
+
+(function (window){
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+// Return the window JSON element if it exists;
+var JSON = window.JSON || {};
+
+(function () {
+    'use strict';
+
+    function f(n) {
+        // Format integers to have at least two digits.
+        return n < 10 ? '0' + n : n;
+    }
+
+    if (typeof Date.prototype.toJSON !== 'function') {
+
+        Date.prototype.toJSON = function (key) {
+
+            return isFinite(this.valueOf())
+                ? this.getUTCFullYear()     + '-' +
+                    f(this.getUTCMonth() + 1) + '-' +
+                    f(this.getUTCDate())      + 'T' +
+                    f(this.getUTCHours())     + ':' +
+                    f(this.getUTCMinutes())   + ':' +
+                    f(this.getUTCSeconds())   + 'Z'
+                : null;
+        };
+
+        String.prototype.toJSON      =
+            Number.prototype.toJSON  =
+            Boolean.prototype.toJSON = function (key) {
+                return this.valueOf();
+            };
+    }
+
+    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+        gap,
+        indent,
+        meta = {    // table of character substitutions
+            '\b': '\\b',
+            '\t': '\\t',
+            '\n': '\\n',
+            '\f': '\\f',
+            '\r': '\\r',
+            '"' : '\\"',
+            '\\': '\\\\'
+        },
+        rep;
+
+
+    function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+        escapable.lastIndex = 0;
+        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+            var c = meta[a];
+            return typeof c === 'string'
+                ? c
+                : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+        }) + '"' : '"' + string + '"';
+    }
+
+
+    function str(key, holder) {
+
+// Produce a string from holder[key].
+
+        var i,          // The loop counter.
+            k,          // The member key.
+            v,          // The member value.
+            length,
+            mind = gap,
+            partial,
+            value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+        if (value && typeof value === 'object' &&
+                typeof value.toJSON === 'function') {
+            value = value.toJSON(key);
+        }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+        if (typeof rep === 'function') {
+            value = rep.call(holder, key, value);
+        }
+
+// What happens next depends on the value's type.
+
+        switch (typeof value) {
+        case 'string':
+            return quote(value);
+
+        case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+            return isFinite(value) ? String(value) : 'null';
+
+        case 'boolean':
+        case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+            return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+        case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+            if (!value) {
+                return 'null';
+            }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+            gap += indent;
+            partial = [];
+
+// Is the value an array?
+
+            if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+                length = value.length;
+                for (i = 0; i < length; i += 1) {
+                    partial[i] = str(i, value) || 'null';
+                }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+                v = partial.length === 0
+                    ? '[]'
+                    : gap
+                    ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
+                    : '[' + partial.join(',') + ']';
+                gap = mind;
+                return v;
+            }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+            if (rep && typeof rep === 'object') {
+                length = rep.length;
+                for (i = 0; i < length; i += 1) {
+                    if (typeof rep[i] === 'string') {
+                        k = rep[i];
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+                for (k in value) {
+                    if (Object.prototype.hasOwnProperty.call(value, k)) {
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+            v = partial.length === 0
+                ? '{}'
+                : gap
+                ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
+                : '{' + partial.join(',') + '}';
+            gap = mind;
+            return v;
+        }
+    }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+    if (typeof JSON.stringify !== 'function') {
+        JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+            var i;
+            gap = '';
+            indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+            if (typeof space === 'number') {
+                for (i = 0; i < space; i += 1) {
+                    indent += ' ';
+                }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+            } else if (typeof space === 'string') {
+                indent = space;
+            }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+            rep = replacer;
+            if (replacer && typeof replacer !== 'function' &&
+                    (typeof replacer !== 'object' ||
+                    typeof replacer.length !== 'number')) {
+                throw new Error('JSON.stringify');
+            }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+            return str('', {'': value});
+        };
+    }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+    if (typeof JSON.parse !== 'function') {
+        JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+            var j;
+
+            function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+                var k, v, value = holder[key];
+                if (value && typeof value === 'object') {
+                    for (k in value) {
+                        if (Object.prototype.hasOwnProperty.call(value, k)) {
+                            v = walk(value, k);
+                            if (v !== undefined) {
+                                value[k] = v;
+                            } else {
+                                delete value[k];
+                            }
+                        }
+                    }
+                }
+                return reviver.call(holder, key, value);
+            }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+            text = String(text);
+            cx.lastIndex = 0;
+            if (cx.test(text)) {
+                text = text.replace(cx, function (a) {
+                    return '\\u' +
+                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+                });
+            }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+            if (/^[\],:{}\s]*$/
+                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
']')
+                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+                j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+                return typeof reviver === 'function'
+                    ? walk({'': j}, '')
+                    : j;
+            }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+            throw new SyntaxError('JSON.parse');
+        };
+    }
+}());
+
+define(function(){
+    return JSON;
+});
+// otherwise just leave it alone
+    
+}).call(this, this);
+//>>excludeEnd('excludeAfterBuild')


Mime
View raw message