// TODO: encodings public override string ToString() { // #<StringScanner 0/11 @ "test ..."> byte[] scanstr = ScanString.ToByteArray(); StringBuilder sb = new StringBuilder("#<StringScanner "); if (CurrentPosition >= Length || CurrentPosition < 0) { sb.Append("fin >"); return(sb.ToString()); } sb.AppendFormat("{0}/{1}", CurrentPosition, scanstr.Length); if (CurrentPosition > 0) { sb.Append(" \""); int len = CurrentPosition; if (len > 5) { len = 5; sb.Append("..."); } for (int i = CurrentPosition - len; i < CurrentPosition; i++) { MutableString.AppendCharRepresentation(sb, scanstr[i], -1, MutableString.Escape.Octal | MutableString.Escape.NonAscii | MutableString.Escape.Special, '"', -1 ); } sb.Append('"'); } sb.Append(" @ "); if (CurrentPosition < scanstr.Length) { int len = scanstr.Length - CurrentPosition; bool ellipsis = false; if (len > 5) { len = 5; ellipsis = true; } sb.Append('"'); for (int i = CurrentPosition; i < CurrentPosition + len; i++) { MutableString.AppendCharRepresentation(sb, scanstr[i], -1, MutableString.Escape.Octal | MutableString.Escape.NonAscii | MutableString.Escape.Special, '"', -1 ); } if (ellipsis) { sb.Append("..."); } sb.Append('"'); } sb.Append('>'); return(sb.ToString()); }