aboutsummaryrefslogtreecommitdiffstats
path: root/bower_components/jquery/src/ajax/parseJSON.js
diff options
context:
space:
mode:
Diffstat (limited to 'bower_components/jquery/src/ajax/parseJSON.js')
-rw-r--r--bower_components/jquery/src/ajax/parseJSON.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/bower_components/jquery/src/ajax/parseJSON.js b/bower_components/jquery/src/ajax/parseJSON.js
new file mode 100644
index 0000000..69b5c83
--- /dev/null
+++ b/bower_components/jquery/src/ajax/parseJSON.js
@@ -0,0 +1,51 @@
+define([
+ "../core"
+], function( jQuery ) {
+
+var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
+
+jQuery.parseJSON = function( data ) {
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ // Support: Android 2.3
+ // Workaround failure to string-cast null input
+ return window.JSON.parse( data + "" );
+ }
+
+ var requireNonComma,
+ depth = null,
+ str = jQuery.trim( data + "" );
+
+ // Guard against invalid (and possibly dangerous) input by ensuring that nothing remains
+ // after removing valid tokens
+ return str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) {
+
+ // Force termination if we see a misplaced comma
+ if ( requireNonComma && comma ) {
+ depth = 0;
+ }
+
+ // Perform no more replacements after returning to outermost depth
+ if ( depth === 0 ) {
+ return token;
+ }
+
+ // Commas must not follow "[", "{", or ","
+ requireNonComma = open || comma;
+
+ // Determine new depth
+ // array/object open ("[" or "{"): depth += true - false (increment)
+ // array/object close ("]" or "}"): depth += false - true (decrement)
+ // other cases ("," or primitive): depth += true - true (numeric cast)
+ depth += !close - !open;
+
+ // Remove this token
+ return "";
+ }) ) ?
+ ( Function( "return " + str ) )() :
+ jQuery.error( "Invalid JSON: " + data );
+};
+
+return jQuery.parseJSON;
+
+});