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++) { MutableStringOps.AppendStringRepresentationOfChar(sb, scanstr[i], -1, true); } 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++) { MutableStringOps.AppendStringRepresentationOfChar(sb, scanstr[i], -1, true); } if (ellipsis) { sb.Append("..."); } sb.Append('"'); } sb.Append('>'); return(sb.ToString()); }
public static MutableString /*!*/ Inspect(string /*!*/ self) { StringBuilder result = new StringBuilder(); result.Append('"'); for (int i = 0; i < self.Length; i++) { MutableStringOps.AppendStringRepresentationOfChar(result, self[i], i + 1 < self.Length ? self[i + 1] : -1, false); } result.Append('"'); return(MutableString.Create(result.ToString())); }