示例#1
0
        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());
        }
示例#2
0
        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()));
        }