Revised conversion logic to handle converter equal to true properly.

This commit is contained in:
jaubourg 2010-12-29 18:44:45 +01:00
parent 6dbffb8596
commit 3c6f1380fa

View file

@ -393,9 +393,9 @@ jQuery.extend({
current, current,
prev, prev,
checker, checker,
conv,
conv1, conv1,
conv2, conv2,
oneConv,
convertion, convertion,
dataTypes = s.dataTypes, dataTypes = s.dataTypes,
converters = s.converters, converters = s.converters,
@ -419,22 +419,27 @@ jQuery.extend({
if ( prev !== "*" && current !== "*" && prev !== current ) { if ( prev !== "*" && current !== "*" && prev !== current ) {
oneConv = conv1 = conv = converters[ ( conversion = prev + " " + current ) ] ||
converters[ ( conversion = prev + " " + current ) ] ||
converters[ "* " + current ]; converters[ "* " + current ];
if ( oneConv !== true ) { conv1 = conv2 = 0;
if ( ! oneConv && prev !== "text" && current !== "text" ) { if ( ! conv && prev !== "text" && current !== "text" ) {
conv1 = converters[ prev + " text" ] || converters[ "* text" ]; conv1 = converters[ prev + " text" ] || converters[ "* text" ];
conv2 = converters[ "text " + current ]; conv2 = converters[ "text " + current ];
if ( conv1 === true ) {
conv = conv2;
} else if ( conv2 === true ) {
conv = conv1;
}
} }
if ( oneConv || conv1 && conv2 ) { if ( ! ( conv || conv1 && conv2 ) ) {
response = oneConv ? conv1( response ) : conv2( conv1( response ) ); throw conversion;
} else {
throw "no " + conversion;
} }
if ( conv !== true ) {
response = conv ? conv( response ) : conv2( conv1( response ) );
} }
} }
} else if ( s.dataFilter ) { } else if ( s.dataFilter ) {