mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 11:01:21 +08:00
fix: full Unicode support in xml (#7428)
This commit is contained in:

committed by
Manol Donev

parent
250eb31c6e
commit
b8659e67c3
@ -54,6 +54,32 @@ export var test_XmlParser_EntityReferencesInAttributeValuesAreDecoded = function
|
||||
TKUnit.assert(data === "<>\"&'", "Expected result: <>\"&'; Actual result: " + data + ";");
|
||||
};
|
||||
|
||||
export var test_XmlParser_UnicodeEntitiesAreDecoded = function () {
|
||||
var data;
|
||||
var xmlParser = new xmlModule.XmlParser(function (event: xmlModule.ParserEvent) {
|
||||
switch (event.eventType) {
|
||||
case xmlModule.ParserEventType.Text:
|
||||
data = event.data;
|
||||
break;
|
||||
}
|
||||
});
|
||||
xmlParser.parse("<element>🤣✓</element>");
|
||||
TKUnit.assert(data === "\uD83E\uDD23\u2713", "Expected result: \uD83E\uDD23\u2713; Actual result: " + data + ";");
|
||||
};
|
||||
|
||||
export var test_XmlParser_UnicodeEntitiesInAttributeValuesAreDecoded = function () {
|
||||
var data;
|
||||
var xmlParser = new xmlModule.XmlParser(function (event: xmlModule.ParserEvent) {
|
||||
switch (event.eventType) {
|
||||
case xmlModule.ParserEventType.StartElement:
|
||||
data = event.attributes["text"];
|
||||
break;
|
||||
}
|
||||
});
|
||||
xmlParser.parse("<Label text=\"🤣✓\"/>");
|
||||
TKUnit.assert(data === "\uD83E\uDD23\u2713", "Expected result: \uD83E\uDD23\u2713; Actual result: " + data + ";");
|
||||
};
|
||||
|
||||
export var test_XmlParser_OnErrorIsCalledWhenAnErrorOccurs = function () {
|
||||
var e;
|
||||
var xmlParser = new xmlModule.XmlParser(
|
||||
|
@ -188,10 +188,10 @@ function rpEntities(s, d, x, z) {
|
||||
};
|
||||
|
||||
if (d) {
|
||||
return String.fromCharCode(d);
|
||||
return String.fromCodePoint(d);
|
||||
};
|
||||
|
||||
return String.fromCharCode(parseInt(x, 16));
|
||||
return String.fromCodePoint(parseInt(x, 16));
|
||||
};
|
||||
|
||||
function unEntities(s, i) {
|
||||
|
@ -100,17 +100,17 @@ function _HandleAmpEntities(found: string, decimalValue: string, hexValue: strin
|
||||
}
|
||||
const res = _ampCodes.get(wordValue);
|
||||
if (res) {
|
||||
return String.fromCharCode(res);
|
||||
return String.fromCodePoint(res);
|
||||
}
|
||||
|
||||
// Invalid word; so we just return it
|
||||
return found;
|
||||
}
|
||||
if (decimalValue) {
|
||||
return String.fromCharCode(parseInt(decimalValue, 10));
|
||||
return String.fromCodePoint(parseInt(decimalValue, 10));
|
||||
}
|
||||
|
||||
return String.fromCharCode(parseInt(hexValue, 16));
|
||||
return String.fromCodePoint(parseInt(hexValue, 16));
|
||||
}
|
||||
|
||||
export class XmlParser implements definition.XmlParser {
|
||||
|
Reference in New Issue
Block a user