[Modify] Polish it

This commit is contained in:
sta 2018-12-26 22:41:34 +09:00
parent e010e2cff3
commit 75c7ab1223

View File

@ -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 ();
} }