decodeHtmlCharacterFromMatch function
Decodes HTML entity and numeric character references from the given match
.
Implementation
String decodeHtmlCharacterFromMatch(Match match) {
final text = match.match;
final entity = match[1];
final decimalNumber = match[2];
final hexadecimalNumber = match[3];
// Entity references, see
// https://spec.commonmark.org/0.30/#entity-references.
if (entity != null) {
return htmlEntitiesMap[text] ?? text;
}
// Decimal numeric character references, see
// https://spec.commonmark.org/0.30/#decimal-numeric-character-references.
else if (decimalNumber != null) {
final decimalValue = int.parse(decimalNumber);
int hexValue;
if (decimalValue < 1114112 && decimalValue > 1) {
hexValue = int.parse(decimalValue.toRadixString(16), radix: 16);
} else {
hexValue = 0xFFFd;
}
return String.fromCharCode(hexValue);
}
// Hexadecimal numeric character references, see
// https://spec.commonmark.org/0.30/#hexadecimal-numeric-character-references.
else if (hexadecimalNumber != null) {
var hexValue = int.parse(hexadecimalNumber, radix: 16);
if (hexValue > 0x10ffff || hexValue == 0) {
hexValue = 0xFFFd;
}
return String.fromCharCode(hexValue);
}
return text;
}