public override string toText()
        {
            var sb = new cape.StringBuilder();

            if (segments != null)
            {
                var n = 0;
                var m = segments.Count;
                for (n = 0; n < m; n++)
                {
                    var sg = segments[n];
                    if (sg != null)
                    {
                        sb.append(sg.getText());
                        var link = sg.getLink();
                        if (cape.String.isEmpty(link) == false)
                        {
                            sb.append(" (" + link + ")");
                        }
                        var @ref = sg.getReference();
                        if (cape.String.isEmpty(@ref) == false)
                        {
                            sb.append(" {" + @ref + "}");
                        }
                    }
                }
            }
            return(sb.toString());
        }
示例#2
0
        private object acceptNumber()
        {
            skipSpaces();
            var ss = iterator.getCurrentChar();

            if (ss != '-' && ss != '+' && ss != '.' && (ss < '0' || ss > '9'))
            {
                return(null);
            }
            var sb = new cape.StringBuilder();

            sb.append(ss);
            while (true)
            {
                var c = iterator.getNextChar();
                if (c != '.' && (c < '0' || c > '9'))
                {
                    break;
                }
                sb.append(c);
            }
            var s = sb.toString();

            if (cape.String.getIndexOf(s, '.') > -1)
            {
                return((object)cape.Double.asObject(cape.Double.asDouble((object)s)));
            }
            return((object)cape.Integer.asObject(cape.Integer.asInteger(s)));
        }
示例#3
0
        public void pushData(string @string)
        {
            if (!(@string != null))
            {
                return;
            }
            if (iterator == null)
            {
                setDataString(@string);
                return;
            }
            var sb = new cape.StringBuilder();

            while (true)
            {
                var c = iterator.getNextChar();
                if (c < 1)
                {
                    break;
                }
                sb.append(c);
            }
            sb.append(@string);
            setDataString(sb.toString());
        }
示例#4
0
 public static void encodeStringToBuilder(string s, cape.StringBuilder sb)
 {
     sb.append('\"');
     if (cape.String.indexOf(s, '\"') >= 0 || cape.String.indexOf(s, '\\') >= 0)
     {
         var it = cape.String.iterate(s);
         while (true)
         {
             var c = it.getNextChar();
             if (c < 1)
             {
                 break;
             }
             if (c == '\"')
             {
                 sb.append('\\');
             }
             else if (c == '\\')
             {
                 sb.append('\\');
             }
             sb.append(c);
         }
     }
     else
     {
         sb.append(s);
     }
     sb.append('\"');
 }
示例#5
0
        private void encodeDynamicVector(cape.DynamicVector cc, int indent, cape.StringBuilder sb, bool niceFormatting)
        {
            print("[", indent, false, true, sb, niceFormatting);
            var first = true;
            var array = cc.toVector();

            if (array != null)
            {
                var n = 0;
                var m = array.Count;
                for (n = 0; n < m; n++)
                {
                    var o = array[n];
                    if (o != null)
                    {
                        if (first == false)
                        {
                            print(",", indent, false, true, sb, niceFormatting);
                        }
                        encodeObject(o, indent + 1, sb, niceFormatting);
                        first = false;
                    }
                }
            }
            print("]", indent, true, false, sb, niceFormatting);
        }
示例#6
0
        private string createColumnSelectionString(object[] columns)
        {
            if (columns == null || columns.Length < 1)
            {
                return("*");
            }
            var sb    = new cape.StringBuilder();
            var first = true;

            if (columns != null)
            {
                var n = 0;
                var m = columns.Length;
                for (n = 0; n < m; n++)
                {
                    var column = columns[n] as string;
                    if (column != null)
                    {
                        if (first == false)
                        {
                            sb.append(", ");
                        }
                        sb.append(column);
                        first = false;
                    }
                }
            }
            return(sb.toString());
        }
示例#7
0
 private void print(string line, int indent, bool startline, bool endline, cape.StringBuilder sb, bool niceFormatting)
 {
     if (startline && isNewLine == false)
     {
         if (niceFormatting)
         {
             sb.append('\n');
         }
         isNewLine = true;
     }
     if (isNewLine && niceFormatting)
     {
         for (var n = 0; n < indent; n++)
         {
             sb.append('\t');
         }
     }
     sb.append(line);
     if (endline)
     {
         if (niceFormatting)
         {
             sb.append('\n');
         }
         isNewLine = true;
     }
     else
     {
         isNewLine = false;
     }
 }
示例#8
0
        public virtual string readLine()
        {
            if (iterator == null)
            {
                return(null);
            }
            var sb = new cape.StringBuilder();

            while (true)
            {
                var c = iterator.getNextChar();
                if (c < 1)
                {
                    if (sb.count() < 1)
                    {
                        return(null);
                    }
                    break;
                }
                if (c == '\r')
                {
                    continue;
                }
                if (c == '\n')
                {
                    break;
                }
                sb.append(c);
            }
            if (sb.count() < 1)
            {
                return("");
            }
            return(sb.toString());
        }
示例#9
0
        /// <summary>
        /// Takes a string that represents a number, and presents it in a nicely formatted
        /// manner, with delimiter separating each sequence of three digits.
        /// </summary>

        public static string formatNumberString(string vv, char delimiter)
        {
            if (!(vv != null))
            {
                return(null);
            }
            var it = cape.String.iterate(vv);

            if (!(it != null))
            {
                return(null);
            }
            var rr = cape.String.getLength(vv);
            var sb = new cape.StringBuilder();

            while (true)
            {
                var c = it.getNextChar();
                if (c < 1)
                {
                    break;
                }
                sb.append(c);
                rr--;
                if (rr < 1)
                {
                    break;
                }
                if (rr % 3 == 0)
                {
                    sb.append(delimiter);
                }
            }
            return(sb.toString());
        }
示例#10
0
            public virtual string toString()
            {
                var sb = new cape.StringBuilder();

                sb.append('<');
                sb.append(name);
                System.Collections.Generic.List <string> keys = cape.Map.getKeys(attributes);
                if (keys != null)
                {
                    var n = 0;
                    var m = keys.Count;
                    for (n = 0; n < m; n++)
                    {
                        var key = keys[n];
                        if (key != null)
                        {
                            sb.append(' ');
                            sb.append(key);
                            sb.append('=');
                            sb.append('\"');
                            var val = escapeAttribute(cape.Map.getValue(attributes, key));
                            sb.append(val);
                            sb.append('\"');
                        }
                    }
                }
                if (single)
                {
                    sb.append(' ');
                    sb.append('/');
                }
                sb.append('>');
                return(sb.toString());
            }
示例#11
0
        public virtual string toString()
        {
            var sb    = new cape.StringBuilder();
            var level = 0;

            if (!(object.Equals(header, null)))
            {
                append(sb, level, header, false, false);
            }
            if (!(object.Equals(customHeader, null)))
            {
                sb.append(customHeader);
            }
            var singleLine = false;

            if (elements != null)
            {
                var n = 0;
                var m = elements.Count;
                for (n = 0; n < m; n++)
                {
                    var o = elements[n];
                    if (o != null)
                    {
                        if (o is capex.text.XMLMaker.Element)
                        {
                            append(sb, level, ((capex.text.XMLMaker.Element)o).toString(), singleLine, singleLine);
                        }
                        else if (o is capex.text.XMLMaker.StartElement)
                        {
                            singleLine = ((capex.text.XMLMaker.StartElement)o).getSingleLine();
                            append(sb, level, ((capex.text.XMLMaker.StartElement)o).toString(), false, singleLine);
                            if (((capex.text.XMLMaker.StartElement)o).getSingle() == false)
                            {
                                level++;
                            }
                        }
                        else if (o is capex.text.XMLMaker.EndElement)
                        {
                            level--;
                            append(sb, level, ((capex.text.XMLMaker.EndElement)o).toString(), singleLine, false);
                            singleLine = false;
                        }
                        else if (o is capex.text.XMLMaker.CustomXML)
                        {
                            append(sb, level, ((capex.text.XMLMaker.CustomXML)o).getString(), singleLine, singleLine);
                        }
                        else if (o is string)
                        {
                            append(sb, level, escapeString((string)o), singleLine, singleLine);
                        }
                        else if (o is capex.text.XMLMaker.CData)
                        {
                            append(sb, level, ((capex.text.XMLMaker.CData)o).toString(), singleLine, ((capex.text.XMLMaker.CData)o).getSingleLine());
                        }
                    }
                }
            }
            return(sb.toString());
        }
示例#12
0
        public string toHtml(capex.text.RichTextDocumentReferenceResolver refs)
        {
            var sb    = new cape.StringBuilder();
            var array = getParagraphs();

            if (array != null)
            {
                var n = 0;
                var m = array.Count;
                for (n = 0; n < m; n++)
                {
                    var paragraph = array[n];
                    if (paragraph != null)
                    {
                        var html = paragraph.toHtml(refs);
                        if (cape.String.isEmpty(html) == false)
                        {
                            sb.append(html);
                            sb.append('\n');
                        }
                    }
                }
            }
            return(sb.toString());
        }
        public capex.text.RichTextBlockParagraph readBlockParagraph(string id, cape.LineReader pr)
        {
            var    sb   = new cape.StringBuilder();
            string line = null;

            while (!(object.Equals(line = pr.readLine(), null)))
            {
                if (cape.String.startsWith(line, "--") && cape.String.endsWith(line, "--"))
                {
                    var lid = cape.String.subString(line, 2, cape.String.getLength(line) - 4);
                    if (!(object.Equals(lid, null)))
                    {
                        lid = cape.String.strip(lid);
                    }
                    if (cape.String.isEmpty(id))
                    {
                        if (cape.String.isEmpty(lid))
                        {
                            break;
                        }
                    }
                    else if (cape.String.equals(id, lid))
                    {
                        break;
                    }
                }
                sb.append(line);
                sb.append('\n');
            }
            return(new capex.text.RichTextBlockParagraph().setId(id).setText(sb.toString()));
        }
        public override string toMarkup()
        {
            var    sb    = new cape.StringBuilder();
            string delim = null;

            if (cape.String.isEmpty(id))
            {
                delim = "-- ";
            }
            else
            {
                delim = "-- " + id + " --";
            }
            sb.append(delim);
            sb.append('\n');
            if (!(object.Equals(text, null)))
            {
                sb.append(text);
                if (cape.String.endsWith(text, "\n") == false)
                {
                    sb.append('\n');
                }
            }
            sb.append(delim);
            return(sb.toString());
        }
示例#15
0
        public void encodeJSONString(string s, cape.StringBuilder sb)
        {
            if (object.Equals(s, null))
            {
                return;
            }
            var it = cape.String.iterate(s);

            if (it == null)
            {
                return;
            }
            var c = ' ';

            while ((c = it.getNextChar()) > 0)
            {
                if (c == '\"')
                {
                    sb.append('\\');
                }
                else if (c == '\\')
                {
                    sb.append('\\');
                }
                sb.append(c);
            }
        }
示例#16
0
        /// <summary>
        /// Converts an integer value to a string while ensuring that the length of the
        /// resulting string will reach or exceed the given "length". If the length of the
        /// string naturally is less than the given length, then "padding" characters will
        /// be prepended to the string in order to make the string long enough. The default
        /// padding character is "0", but can be customized with the "paddingString"
        /// parameter. eg. String.forIntegerWithPadding(9, 3, "0") would yield "009". eg.
        /// String.forIntegerWithPadding(10, 4, " ") would yield " 10".
        /// </summary>

        public static string forIntegerWithPadding(int vv, int length, string paddingString = null)
        {
            var r = cape.String.forInteger(vv);

            if (!(r != null))
            {
                return(null);
            }
            var ll = cape.String.getLength(r);

            if (ll >= length)
            {
                return(r);
            }
            var ps = paddingString;

            if (object.Equals(ps, null))
            {
                ps = "0";
            }
            var sb = new cape.StringBuilder();
            var n  = 0;

            for (n = 0; n < length - ll; n++)
            {
                sb.append(ps);
            }
            sb.append(r);
            return(sb.toString());
        }
示例#17
0
        private void encodeArray(object[] cc, int indent, cape.StringBuilder sb, bool niceFormatting)
        {
            print("[", indent, false, true, sb, niceFormatting);
            var first = true;

            if (cc != null)
            {
                var n = 0;
                var m = cc.Length;
                for (n = 0; n < m; n++)
                {
                    var o = cc[n];
                    if (o != null)
                    {
                        if (first == false)
                        {
                            print(",", indent, false, true, sb, niceFormatting);
                        }
                        encodeObject(o, indent + 1, sb, niceFormatting);
                        first = false;
                    }
                }
            }
            print("]", indent, true, false, sb, niceFormatting);
        }
示例#18
0
        public static string toQuotedString(string str)
        {
            var sb = new cape.StringBuilder();

            sb.append('\"');
            if (!(object.Equals(str, null)))
            {
                var it = cape.String.iterate(str);
                while (it != null)
                {
                    var c = it.getNextChar();
                    if (c < 1)
                    {
                        break;
                    }
                    if (c == '\"')
                    {
                        sb.append('\\');
                        sb.append('\"');
                    }
                    else
                    {
                        sb.append(c);
                    }
                }
            }
            sb.append('\"');
            return(sb.toString());
        }
示例#19
0
        private void encodeDynamicMap(cape.DynamicMap map, int indent, cape.StringBuilder sb, bool niceFormatting)
        {
            print("{", indent, false, true, sb, niceFormatting);
            var first = true;
            var it    = map.iterateKeys();

            while (it != null)
            {
                var key = it.next();
                if (!(key != null))
                {
                    break;
                }
                if (first == false)
                {
                    print(",", indent, false, true, sb, niceFormatting);
                }
                encodeString(key, indent + 1, sb, niceFormatting);
                if (niceFormatting)
                {
                    sb.append(" : ");
                }
                else
                {
                    sb.append(':');
                }
                encodeObject(map.get(key), indent + 1, sb, niceFormatting);
                first = false;
            }
            print("}", indent, true, false, sb, niceFormatting);
        }
示例#20
0
            public override void setWidgetValue(object value)
            {
                var vv = value as cape.DynamicVector;

                if (vv == null)
                {
                    return;
                }
                var sb    = new cape.StringBuilder();
                var array = vv.toVector();

                if (array != null)
                {
                    var n = 0;
                    var m = array.Count;
                    for (n = 0; n < m; n++)
                    {
                        var v = array[n] as string;
                        if (v != null)
                        {
                            if (sb.count() > 0)
                            {
                                sb.append(", ");
                            }
                            sb.append(v);
                        }
                    }
                }
                setWidgetText(sb.toString());
            }
示例#21
0
        public static string encode(object o, bool niceFormatting = true)
        {
            var sb = new cape.StringBuilder();

            new cape.JSONEncoder().encodeObject(o, 0, sb, niceFormatting);
            return(sb.toString());
        }
示例#22
0
        public string getPhoneNumberString()
        {
            if (phoneNumbers == null || cape.Vector.getSize(phoneNumbers) < 1)
            {
                return(null);
            }
            var sb = new cape.StringBuilder();

            if (phoneNumbers != null)
            {
                var n = 0;
                var m = phoneNumbers.Count;
                for (n = 0; n < m; n++)
                {
                    var phoneNumber = phoneNumbers[n];
                    if (phoneNumber != null)
                    {
                        if (sb.count() > 0)
                        {
                            sb.append(", ");
                        }
                        sb.append(phoneNumber);
                    }
                }
            }
            return(sb.toString());
        }
示例#23
0
        public static System.Collections.Generic.List <string> wrapToLines(string text, int charactersPerLine)
        {
            if (object.Equals(text, null))
            {
                return(null);
            }
            var v  = new System.Collections.Generic.List <string>();
            var it = cape.String.iterate(text);

            cape.StringBuilder lineBuilder = null;
            cape.StringBuilder wordBuilder = null;
            while (it != null)
            {
                var c = it.getNextChar();
                if (c == ' ' || c == '\t' || c == '\n' || c < 1)
                {
                    if (wordBuilder != null)
                    {
                        var word = wordBuilder.toString();
                        wordBuilder = null;
                        if (lineBuilder == null)
                        {
                            lineBuilder = new cape.StringBuilder();
                        }
                        var cc = lineBuilder.count();
                        if (cc > 0)
                        {
                            cc++;
                        }
                        cc += cape.String.getLength(word);
                        if (cc > charactersPerLine)
                        {
                            v.Add(lineBuilder.toString());
                            lineBuilder = new cape.StringBuilder();
                        }
                        if (lineBuilder.count() > 0)
                        {
                            lineBuilder.append(' ');
                        }
                        lineBuilder.append(word);
                    }
                    if (c < 1)
                    {
                        break;
                    }
                    continue;
                }
                if (wordBuilder == null)
                {
                    wordBuilder = new cape.StringBuilder();
                }
                wordBuilder.append(c);
            }
            if (lineBuilder != null)
            {
                v.Add(lineBuilder.toString());
            }
            return(v);
        }
示例#24
0
 public StringBuilder(cape.StringBuilder initial)
 {
     initialize();
     if (initial != null)
     {
         append(initial.toString());
     }
 }
示例#25
0
 public void to2Digits(string val, cape.StringBuilder sb)
 {
     if (cape.String.getLength(val) == 1)
     {
         sb.append('0');
     }
     sb.append(val);
 }
示例#26
0
 private void onJSONTag(cape.DynamicMap vars, cape.StringBuilder result, System.Collections.Generic.List <cape.File> includeDirs, string tagname, System.Collections.Generic.List <string> words)
 {
     if (object.Equals(tagname, "quotedstring"))
     {
         var @string = substituteVariables(cape.Vector.get(words, 1), vars);
         encodeJSONString(@string, result);
     }
 }
示例#27
0
        private string normalizePath(string path)
        {
            if (!(path != null))
            {
                return(null);
            }
            var v     = new cape.StringBuilder();
            var comps = cape.String.split(path, '/');

            if (comps != null)
            {
                var n = 0;
                var m = comps.Count;
                for (n = 0; n < m; n++)
                {
                    var comp = comps[n];
                    if (comp != null)
                    {
                        if (cape.String.isEmpty(comp))
                        {
                            ;
                        }
                        else if (object.Equals(comp, "."))
                        {
                            ;
                        }
                        else if (object.Equals(comp, ".."))
                        {
                            var str = v.toString();
                            v.clear();
                            if (str != null)
                            {
                                var slash = cape.String.lastIndexOf(str, '/');
                                if (slash > 0)
                                {
                                    v.append(cape.String.getSubString(str, 0, slash));
                                }
                            }
                        }
                        else
                        {
                            v.append('/');
                            v.append(comp);
                        }
                    }
                }
            }
            if (v.count() < 2)
            {
                return("/");
            }
            if (cape.String.endsWith(path, "/"))
            {
                v.append('/');
            }
            return(v.toString());
        }
示例#28
0
        public string toStringDateTime()
        {
            var sb = new cape.StringBuilder();

            sb.append(toStringDate());
            sb.append(" ");
            sb.append(toStringTime());
            return(sb.toString());
        }
示例#29
0
        public string toString()
        {
            var sb = new cape.StringBuilder();

            sb.append(cape.String.forLongInteger(seconds));
            sb.append('.');
            sb.append(cape.String.forLongInteger(microSeconds));
            return(sb.toString());
        }
示例#30
0
        private cape.BooleanObject acceptBoolean()
        {
            skipSpaces();
            var ss = iterator.getCurrentChar();

            if (ss != 't' && ss != 'f')
            {
                return(null);
            }
            var sb = new cape.StringBuilder();

            sb.append(ss);
            var li = 5;

            if (ss == 't')
            {
                li = 4;
            }
            var btc = 0;

            while (true)
            {
                var c = iterator.getNextChar();
                btc++;
                if (c != 'a' && c != 'l' && c != 's' && c != 'e' && c != 'r' && c != 'u')
                {
                    iterator.moveToNextChar();
                    btc++;
                    break;
                }
                sb.append(c);
                if (sb.count() == li)
                {
                    iterator.moveToNextChar();
                    btc++;
                    break;
                }
            }
            var v = sb.toString();

            if (li == 4 && object.Equals("true", v))
            {
                return(cape.Boolean.asObject(true));
            }
            if (li == 5 && object.Equals("false", v))
            {
                return(cape.Boolean.asObject(false));
            }
            var i = 0;

            while (i < btc)
            {
                iterator.moveToPreviousChar();
                i++;
            }
            return(null);
        }