HtmlToken ReadCDataSection ()
{
int nc = Read ();
while (nc != -1) {
char c = (char) nc;
if (cdataIndex >= 3) {
data.Append (cdata[0]);
cdata[0] = cdata[1];
cdata[1] = cdata[2];
cdata[2] = c;
if (cdata[0] == ']' && cdata[1] == ']' && cdata[2] == '>') {
TokenizerState = HtmlTokenizerState.Data;
cdataIndex = 0;
return EmitCDataToken ();
}
} else {
cdata[cdataIndex++] = c;
}
nc = Read ();
}
TokenizerState = HtmlTokenizerState.EndOfFile;
for (int i = 0; i < cdataIndex; i++)
data.Append (cdata[i]);
cdataIndex = 0;
return EmitCDataToken ();
}