#128181 ncr between 128-159 does not work in html attribute value

Add a function called "AppendNCR" and use this function for all NCR parsing.
r=ftang, sr=jst,
This commit is contained in:
shanjian%netscape.com 2002-04-10 23:37:58 +00:00
Родитель cf8ce9446e
Коммит 5147966deb
2 изменённых файлов: 40 добавлений и 26 удалений

Просмотреть файл

@ -1541,6 +1541,7 @@ void CAttributeToken::AppendSourceTo(nsAString& anOutputString){
// anOutputString.Append(NS_LITERAL_STRING(";"));
}
static void AppendNCR(nsString& aString, PRInt32 aNCRValue);
/*
* @param aScanner -- controller of underlying input source
* @param aFlag -- If NS_IPARSER_FLAG_VIEW_SOURCE do not reduce entities...
@ -1595,7 +1596,7 @@ nsresult ConsumeAttributeEntity(nsString& aString,
else {
PRInt32 err;
theNCRValue=entity.ToInteger(&err,kAutoDetect);
aString.Append(PRUnichar(theNCRValue));
AppendNCR(aString, theNCRValue);
}
}
}
@ -2143,6 +2144,23 @@ static PRUint16 PA_HackTable[] = {
#define L_SURROGATE(s) ((PRUnichar)(((PRUint32)s - (PRUint32)0x10000) & 0x3ff) + (PRUnichar)0xdc00)
#define IS_IN_BMP(ucs4) ((ucs4) < 0x10000)
static void AppendNCR(nsString& aString, PRInt32 aNCRValue)
{
#ifdef PA_REMAP_128_TO_160_ILLEGAL_NCR
/* for some illegal, but popular usage */
if ((aNCRValue >= 0x0080) && (aNCRValue <= 0x009f)) {
aNCRValue = PA_HackTable[aNCRValue - 0x0080];
}
#endif
if (IS_IN_BMP(aNCRValue))
aString.Append(PRUnichar(aNCRValue));
else {
aString.Append(PRUnichar(H_SURROGATE(aNCRValue)));
aString.Append(PRUnichar(L_SURROGATE(aNCRValue)));
}
}
/*
* This method converts this entity into its underlying
* unicode equivalent.
@ -2163,18 +2181,7 @@ PRInt32 CEntityToken::TranslateToUnicodeStr(nsString& aString) {
value=mTextValue.ToInteger(&err,kAutoDetect);
if(0==err) {
#ifdef PA_REMAP_128_TO_160_ILLEGAL_NCR
/* for some illegal, but popular usage */
if ((value >= 0x0080) && (value <= 0x009f)) {
value = PA_HackTable[value - 0x0080];
}
#endif
if (IS_IN_BMP(value))
aString.Append(PRUnichar(value));
else {
aString.Append(PRUnichar(H_SURROGATE(value)));
aString.Append(PRUnichar(L_SURROGATE(value)));
}
AppendNCR(aString, value);
}
}
else{

Просмотреть файл

@ -1541,6 +1541,7 @@ void CAttributeToken::AppendSourceTo(nsAString& anOutputString){
// anOutputString.Append(NS_LITERAL_STRING(";"));
}
static void AppendNCR(nsString& aString, PRInt32 aNCRValue);
/*
* @param aScanner -- controller of underlying input source
* @param aFlag -- If NS_IPARSER_FLAG_VIEW_SOURCE do not reduce entities...
@ -1595,7 +1596,7 @@ nsresult ConsumeAttributeEntity(nsString& aString,
else {
PRInt32 err;
theNCRValue=entity.ToInteger(&err,kAutoDetect);
aString.Append(PRUnichar(theNCRValue));
AppendNCR(aString, theNCRValue);
}
}
}
@ -2143,6 +2144,23 @@ static PRUint16 PA_HackTable[] = {
#define L_SURROGATE(s) ((PRUnichar)(((PRUint32)s - (PRUint32)0x10000) & 0x3ff) + (PRUnichar)0xdc00)
#define IS_IN_BMP(ucs4) ((ucs4) < 0x10000)
static void AppendNCR(nsString& aString, PRInt32 aNCRValue)
{
#ifdef PA_REMAP_128_TO_160_ILLEGAL_NCR
/* for some illegal, but popular usage */
if ((aNCRValue >= 0x0080) && (aNCRValue <= 0x009f)) {
aNCRValue = PA_HackTable[aNCRValue - 0x0080];
}
#endif
if (IS_IN_BMP(aNCRValue))
aString.Append(PRUnichar(aNCRValue));
else {
aString.Append(PRUnichar(H_SURROGATE(aNCRValue)));
aString.Append(PRUnichar(L_SURROGATE(aNCRValue)));
}
}
/*
* This method converts this entity into its underlying
* unicode equivalent.
@ -2163,18 +2181,7 @@ PRInt32 CEntityToken::TranslateToUnicodeStr(nsString& aString) {
value=mTextValue.ToInteger(&err,kAutoDetect);
if(0==err) {
#ifdef PA_REMAP_128_TO_160_ILLEGAL_NCR
/* for some illegal, but popular usage */
if ((value >= 0x0080) && (value <= 0x009f)) {
value = PA_HackTable[value - 0x0080];
}
#endif
if (IS_IN_BMP(value))
aString.Append(PRUnichar(value));
else {
aString.Append(PRUnichar(H_SURROGATE(value)));
aString.Append(PRUnichar(L_SURROGATE(value)));
}
AppendNCR(aString, value);
}
}
else{