mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Move parsing methods to their own files (separates manipulation dependency from core)
This commit is contained in:
parent
eb9cbfcaf6
commit
99c123b159
@ -3,6 +3,8 @@ define([
|
|||||||
"./var/rnotwhite",
|
"./var/rnotwhite",
|
||||||
"./ajax/var/nonce",
|
"./ajax/var/nonce",
|
||||||
"./ajax/var/rquery",
|
"./ajax/var/rquery",
|
||||||
|
"./ajax/parseJSON",
|
||||||
|
"./ajax/parseXML",
|
||||||
"./deferred"
|
"./deferred"
|
||||||
], function( jQuery, rnotwhite, nonce, rquery ) {
|
], function( jQuery, rnotwhite, nonce, rquery ) {
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
define([
|
define([
|
||||||
"../core",
|
"../core",
|
||||||
|
"../core/parseHTML",
|
||||||
"../ajax",
|
"../ajax",
|
||||||
"../traversing",
|
"../traversing",
|
||||||
"../manipulation",
|
"../manipulation",
|
||||||
|
8
src/ajax/parseJSON.js
Normal file
8
src/ajax/parseJSON.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
define([
|
||||||
|
"../core"
|
||||||
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
jQuery.parseJSON = JSON.parse;
|
||||||
|
|
||||||
|
return jQuery.parseJSON;
|
||||||
|
});
|
26
src/ajax/parseXML.js
Normal file
26
src/ajax/parseXML.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
define([
|
||||||
|
"../core"
|
||||||
|
], function( jQuery ) {
|
||||||
|
// Cross-browser xml parsing
|
||||||
|
jQuery.parseXML = function( data ) {
|
||||||
|
var xml, tmp;
|
||||||
|
if ( !data || typeof data !== "string" ) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Support: IE9
|
||||||
|
try {
|
||||||
|
tmp = new DOMParser();
|
||||||
|
xml = tmp.parseFromString( data , "text/xml" );
|
||||||
|
} catch ( e ) {
|
||||||
|
xml = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
|
||||||
|
jQuery.error( "Invalid XML: " + data );
|
||||||
|
}
|
||||||
|
return xml;
|
||||||
|
};
|
||||||
|
|
||||||
|
return jQuery.parseXML;
|
||||||
|
});
|
61
src/core.js
61
src/core.js
@ -10,9 +10,10 @@ define([
|
|||||||
"./var/toString",
|
"./var/toString",
|
||||||
"./var/hasOwn",
|
"./var/hasOwn",
|
||||||
"./var/trim",
|
"./var/trim",
|
||||||
|
"./var/rsingleTag",
|
||||||
"./var/support"
|
"./var/support"
|
||||||
], function( strundefined, arr, slice, concat, push, indexOf,
|
], function( strundefined, arr, slice, concat, push, indexOf,
|
||||||
class2type, toString, hasOwn, trim, support ) {
|
class2type, toString, hasOwn, trim, rsingleTag, support ) {
|
||||||
|
|
||||||
var
|
var
|
||||||
// A central reference to the root jQuery(document)
|
// A central reference to the root jQuery(document)
|
||||||
@ -40,9 +41,6 @@ var
|
|||||||
// Strict HTML recognition (#11290: must start with <)
|
// Strict HTML recognition (#11290: must start with <)
|
||||||
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
|
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
|
||||||
|
|
||||||
// Match a standalone tag
|
|
||||||
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
|
|
||||||
|
|
||||||
// Matches dashed string for camelizing
|
// Matches dashed string for camelizing
|
||||||
rmsPrefix = /^-ms-/,
|
rmsPrefix = /^-ms-/,
|
||||||
rdashAlpha = /-([\da-z])/gi,
|
rdashAlpha = /-([\da-z])/gi,
|
||||||
@ -84,6 +82,7 @@ jQuery.fn = jQuery.prototype = {
|
|||||||
context = context instanceof jQuery ? context[0] : context;
|
context = context instanceof jQuery ? context[0] : context;
|
||||||
|
|
||||||
// scripts is true for back-compat
|
// scripts is true for back-compat
|
||||||
|
// Intentionally let the error be thrown if parseHTML is not present
|
||||||
jQuery.merge( this, jQuery.parseHTML(
|
jQuery.merge( this, jQuery.parseHTML(
|
||||||
match[1],
|
match[1],
|
||||||
context && context.nodeType ? context.ownerDocument || context : document,
|
context && context.nodeType ? context.ownerDocument || context : document,
|
||||||
@ -387,60 +386,6 @@ jQuery.extend({
|
|||||||
throw new Error( msg );
|
throw new Error( msg );
|
||||||
},
|
},
|
||||||
|
|
||||||
// data: string of html
|
|
||||||
// context (optional): If specified, the fragment will be created in this context, defaults to document
|
|
||||||
// keepScripts (optional): If true, will include scripts passed in the html string
|
|
||||||
// TODO: Circular reference core -> manipulation -> core
|
|
||||||
parseHTML: function( data, context, keepScripts ) {
|
|
||||||
if ( !data || typeof data !== "string" ) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if ( typeof context === "boolean" ) {
|
|
||||||
keepScripts = context;
|
|
||||||
context = false;
|
|
||||||
}
|
|
||||||
context = context || document;
|
|
||||||
|
|
||||||
var parsed = rsingleTag.exec( data ),
|
|
||||||
scripts = !keepScripts && [];
|
|
||||||
|
|
||||||
// Single tag
|
|
||||||
if ( parsed ) {
|
|
||||||
return [ context.createElement( parsed[1] ) ];
|
|
||||||
}
|
|
||||||
|
|
||||||
parsed = jQuery.buildFragment( [ data ], context, scripts );
|
|
||||||
|
|
||||||
if ( scripts && scripts.length ) {
|
|
||||||
jQuery( scripts ).remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
return jQuery.merge( [], parsed.childNodes );
|
|
||||||
},
|
|
||||||
|
|
||||||
parseJSON: JSON.parse,
|
|
||||||
|
|
||||||
// Cross-browser xml parsing
|
|
||||||
parseXML: function( data ) {
|
|
||||||
var xml, tmp;
|
|
||||||
if ( !data || typeof data !== "string" ) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Support: IE9
|
|
||||||
try {
|
|
||||||
tmp = new DOMParser();
|
|
||||||
xml = tmp.parseFromString( data , "text/xml" );
|
|
||||||
} catch ( e ) {
|
|
||||||
xml = undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
|
|
||||||
jQuery.error( "Invalid XML: " + data );
|
|
||||||
}
|
|
||||||
return xml;
|
|
||||||
},
|
|
||||||
|
|
||||||
noop: function() {},
|
noop: function() {},
|
||||||
|
|
||||||
// Evaluates a script in a global context
|
// Evaluates a script in a global context
|
||||||
|
38
src/core/parseHTML.js
Normal file
38
src/core/parseHTML.js
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
define([
|
||||||
|
"../core",
|
||||||
|
"../var/rsingleTag",
|
||||||
|
"../manipulation" // buildFragment
|
||||||
|
], function( jQuery, rsingleTag ) {
|
||||||
|
|
||||||
|
// data: string of html
|
||||||
|
// context (optional): If specified, the fragment will be created in this context, defaults to document
|
||||||
|
// keepScripts (optional): If true, will include scripts passed in the html string
|
||||||
|
jQuery.parseHTML = function( data, context, keepScripts ) {
|
||||||
|
if ( !data || typeof data !== "string" ) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ( typeof context === "boolean" ) {
|
||||||
|
keepScripts = context;
|
||||||
|
context = false;
|
||||||
|
}
|
||||||
|
context = context || document;
|
||||||
|
|
||||||
|
var parsed = rsingleTag.exec( data ),
|
||||||
|
scripts = !keepScripts && [];
|
||||||
|
|
||||||
|
// Single tag
|
||||||
|
if ( parsed ) {
|
||||||
|
return [ context.createElement( parsed[1] ) ];
|
||||||
|
}
|
||||||
|
|
||||||
|
parsed = jQuery.buildFragment( [ data ], context, scripts );
|
||||||
|
|
||||||
|
if ( scripts && scripts.length ) {
|
||||||
|
jQuery( scripts ).remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
return jQuery.merge( [], parsed.childNodes );
|
||||||
|
};
|
||||||
|
|
||||||
|
return jQuery.parseHTML;
|
||||||
|
});
|
4
src/var/rsingleTag.js
Normal file
4
src/var/rsingleTag.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
define(function() {
|
||||||
|
// Match a standalone tag
|
||||||
|
return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user