|
|
|
@ -189,7 +189,6 @@ namespace WebSocketSharp.Net
|
|
|
|
|
|
|
|
|
|
|
|
var entity = new StringBuilder ();
|
|
|
|
var entity = new StringBuilder ();
|
|
|
|
var number = 0;
|
|
|
|
var number = 0;
|
|
|
|
var haveTrailingDigits = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var c in s) {
|
|
|
|
foreach (var c in s) {
|
|
|
|
if (state == 0) {
|
|
|
|
if (state == 0) {
|
|
|
|
@ -205,11 +204,6 @@ namespace WebSocketSharp.Net
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (c == '&') {
|
|
|
|
if (c == '&') {
|
|
|
|
if (haveTrailingDigits) {
|
|
|
|
|
|
|
|
entity.Append (number.ToString (CultureInfo.InvariantCulture));
|
|
|
|
|
|
|
|
haveTrailingDigits = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
buff.Append (entity.ToString ());
|
|
|
|
buff.Append (entity.ToString ());
|
|
|
|
|
|
|
|
|
|
|
|
entity.Length = 0;
|
|
|
|
entity.Length = 0;
|
|
|
|
@ -219,9 +213,11 @@ namespace WebSocketSharp.Net
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
entity.Append (c);
|
|
|
|
|
|
|
|
|
|
|
|
if (state == 1) {
|
|
|
|
if (state == 1) {
|
|
|
|
if (c == ';') {
|
|
|
|
if (c == ';') {
|
|
|
|
buff.AppendFormat ("{0};", entity.ToString ());
|
|
|
|
buff.Append (entity.ToString ());
|
|
|
|
|
|
|
|
|
|
|
|
entity.Length = 0;
|
|
|
|
entity.Length = 0;
|
|
|
|
state = 0;
|
|
|
|
state = 0;
|
|
|
|
@ -230,8 +226,6 @@ namespace WebSocketSharp.Net
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
number = 0;
|
|
|
|
number = 0;
|
|
|
|
|
|
|
|
|
|
|
|
entity.Append (c);
|
|
|
|
|
|
|
|
state = c != '#' ? 2 : 3;
|
|
|
|
state = c != '#' ? 2 : 3;
|
|
|
|
|
|
|
|
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
@ -239,7 +233,7 @@ namespace WebSocketSharp.Net
|
|
|
|
|
|
|
|
|
|
|
|
if (state == 2) {
|
|
|
|
if (state == 2) {
|
|
|
|
if (c == ';') {
|
|
|
|
if (c == ';') {
|
|
|
|
var key = entity.ToString ().Substring (1);
|
|
|
|
var key = entity.ToString ().Substring (1, entity.Length - 2);
|
|
|
|
var entities = getEntities ();
|
|
|
|
var entities = getEntities ();
|
|
|
|
if (entities.ContainsKey (key))
|
|
|
|
if (entities.ContainsKey (key))
|
|
|
|
buff.Append (entities[key]);
|
|
|
|
buff.Append (entities[key]);
|
|
|
|
@ -252,22 +246,16 @@ namespace WebSocketSharp.Net
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
entity.Append (c);
|
|
|
|
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (state == 3) {
|
|
|
|
if (state == 3) {
|
|
|
|
if (c == ';') {
|
|
|
|
if (c == ';') {
|
|
|
|
if (number > 65535) {
|
|
|
|
if (number < 160 || number > 65535)
|
|
|
|
buff.AppendFormat (
|
|
|
|
buff.Append (entity.ToString ());
|
|
|
|
"&#{0};", number.ToString (CultureInfo.InvariantCulture)
|
|
|
|
else
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
buff.Append ((char) number);
|
|
|
|
buff.Append ((char) number);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
haveTrailingDigits = false;
|
|
|
|
|
|
|
|
entity.Length = 0;
|
|
|
|
entity.Length = 0;
|
|
|
|
state = 0;
|
|
|
|
state = 0;
|
|
|
|
|
|
|
|
|
|
|
|
@ -275,31 +263,17 @@ namespace WebSocketSharp.Net
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!Char.IsDigit (c)) {
|
|
|
|
if (!Char.IsDigit (c)) {
|
|
|
|
if (haveTrailingDigits) {
|
|
|
|
|
|
|
|
entity.Append (number.ToString (CultureInfo.InvariantCulture));
|
|
|
|
|
|
|
|
haveTrailingDigits = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
entity.Append (c);
|
|
|
|
|
|
|
|
state = 2;
|
|
|
|
state = 2;
|
|
|
|
|
|
|
|
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
number = number * 10 + (c - '0');
|
|
|
|
number = number * 10 + (c - '0');
|
|
|
|
haveTrailingDigits = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (entity.Length > 0) {
|
|
|
|
if (entity.Length > 0)
|
|
|
|
buff.Append (entity.ToString ());
|
|
|
|
buff.Append (entity.ToString ());
|
|
|
|
|
|
|
|
|
|
|
|
if (haveTrailingDigits)
|
|
|
|
|
|
|
|
buff.Append (number.ToString (CultureInfo.InvariantCulture));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return buff.ToString ();
|
|
|
|
return buff.ToString ();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|