|
|
|
|
@ -825,33 +825,44 @@ namespace WebSocketSharp
|
|
|
|
|
var seps = new string (separators);
|
|
|
|
|
|
|
|
|
|
var buff = new StringBuilder (32);
|
|
|
|
|
var end = len - 1;
|
|
|
|
|
var escaped = false;
|
|
|
|
|
var quoted = false;
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < len; i++) {
|
|
|
|
|
for (var i = 0; i <= end; i++) {
|
|
|
|
|
var c = value[i];
|
|
|
|
|
buff.Append (c);
|
|
|
|
|
|
|
|
|
|
if (c == '"') {
|
|
|
|
|
if (escaped)
|
|
|
|
|
escaped = !escaped;
|
|
|
|
|
else
|
|
|
|
|
quoted = !quoted;
|
|
|
|
|
if (escaped) {
|
|
|
|
|
escaped = false;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
quoted = !quoted;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else if (c == '\\') {
|
|
|
|
|
if (i < len - 1 && value[i + 1] == '"')
|
|
|
|
|
|
|
|
|
|
if (c == '\\') {
|
|
|
|
|
if (i == end)
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
if (value[i + 1] == '"')
|
|
|
|
|
escaped = true;
|
|
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else if (seps.Contains (c)) {
|
|
|
|
|
if (!quoted) {
|
|
|
|
|
yield return buff.ToString ();
|
|
|
|
|
|
|
|
|
|
buff.Length = 0;
|
|
|
|
|
if (seps.Contains (c)) {
|
|
|
|
|
if (quoted)
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
buff.Append (c);
|
|
|
|
|
buff.Length -= 1;
|
|
|
|
|
yield return buff.ToString ();
|
|
|
|
|
|
|
|
|
|
buff.Length = 0;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
yield return buff.ToString ();
|
|
|
|
|
|