public void AppendLineFormatTest2NullCheck()
        {
            // ReSharper disable once AssignNullToNotNullAttribute
            Action test = () => StringBuilderEx.AppendLineFormat(null, "", "", "");

            Assert.Throws <ArgumentNullException>(test);
        }
예제 #2
0
 public override void ToXML(i32 lvl, StringBuilderEx sb)
 {
     sb.AppendTabs(lvl).AppendFormat("<{0} type=\"{1}\">", this.Name, this.TypeName).AppendLine();
     sb.AppendTabs(lvl + 1).AppendFormat("<ExeName type=\"string\">{0}</ExeName>", this.ExeName_stub).AppendLine();
     sb.AppendTabs(lvl + 1).AppendFormat("<args type=\"string\">{0}</args>", this.Psi.Arguments).AppendLine();
     sb.AppendTabs(lvl + 1).AppendFormat("<CancelOnError type=\"bool\">{0}</CancelOnError>", this.CancelOnError ? "true" : "false").AppendLine();
     sb.AppendTabs(lvl).AppendFormat("</{1}>", this.Name).AppendLine();
 }
예제 #3
0
파일: Command.cs 프로젝트: tom-vd/dmake
 public override void ToXML(i32 lvl, StringBuilderEx sb)
 {
     sb.AppendTabs(lvl).AppendFormat("<{0} type=\"{1}\">", this.Name, this.TypeName).AppendLine();
     foreach (Node_base nd in this.Children)
     {
         nd.ToXML(lvl + 1, sb);
     }
     sb.AppendTabs(lvl).AppendFormat("</{0}>", this.Name).AppendLine();
 }
예제 #4
0
        public string ToString(SymbolList source)
        {
            var formatter = ListFormat.CreateFormatter(StringBuilderEx.Acquire());

            foreach (var segment in source.GetSegments())
            {
                formatter.Append(segment.Value);
            }
            formatter.AppendEnd();
            return(formatter.OutputBuilder.ToStringAndRelease());
        }
예제 #5
0
        private async Task <string> NormalizeNameAsync(AppDbContext dbContext, string name, long userId, CancellationToken cancellationToken = default)
        {
            // Normalizing name
            var sb = StringBuilderEx.Acquire();

            foreach (var c in name)
            {
                if (char.IsLetterOrDigit(c) || c == '_' || c == '-')
                {
                    sb.Append(c);
                }
                else if (sb.Length == 0 || char.IsLetterOrDigit(sb[^ 1]))
예제 #6
0
        public SymbolList Parse(string source)
        {
            var parser = ListFormat.CreateParser(source, StringBuilderEx.Acquire());
            var list   = (SymbolList?)null;

            while (parser.TryParseNext())
            {
                list = new SymbolList(list, parser.Item);
            }
            parser.ItemBuilder.Release();
            return(list ?? SymbolList.Empty);
        }
예제 #7
0
파일: Makefile.cs 프로젝트: tom-vd/dmake
            public override void ToXML(i32 lvl, StringBuilderEx sb)
            {
                sb.AppendTabs(lvl).AppendFormat("<{0} type=\"{1}\">", this.Name, this.TypeName).AppendLine();

                sb.AppendTabs(lvl + 1);
                this.m_Variables.ToXML(lvl + 1, sb);

                sb.AppendTabs(lvl + 1);
                this.Commands.ToXML(lvl + 1, sb);

                sb.AppendTabs(lvl).AppendFormat("</{0}>", this.Name).AppendLine();
            }
예제 #8
0
        public static string Info_SetValueForKey(string s, string key, string value)
        {
            if ((value == null) || (value.Length == 0))
            {
                return(s);
            }
            if ((key.IndexOf('\\') != -1) || (value.IndexOf('\\') != -1))
            {
                if (_errorHandler != null)
                {
                    _errorHandler(ErrorCode.INFO, "Can't use keys or values with a \\\n", null);
                }
                return(s);
            }
            if (key.IndexOf(';') != -1)
            {
                if (_errorHandler != null)
                {
                    _errorHandler(ErrorCode.INFO, "Can't use keys or values with a semicolon\n", null);
                }
                return(s);
            }
            if ((key.IndexOf('"') != -1) || (value.IndexOf('"') != -1))
            {
                if (_errorHandler != null)
                {
                    _errorHandler(ErrorCode.INFO, "Can't use keys or values with a \"\n", null);
                }
                return(s);
            }
            if ((key.Length > MAX_INFO_KEY - 1) || (value.Length > MAX_INFO_KEY - 1))
            {
                if (_errorHandler != null)
                {
                    _errorHandler(ErrorCode.INFO, "Keys and values must be < 64 characters.\n", null);
                }
                return(s);
            }
            StringBuilder b = new StringBuilder(Info_RemoveKey(s, key));

            if ((StringBuilderEx.GetLength(b) + 2 + key.Length + value.Length) > MAX_INFO_STRING)
            {
                if (_errorHandler != null)
                {
                    _errorHandler(ErrorCode.INFO, "Info string length exceeded\n", null);
                }
                return(s);
            }
            b.Append('\\').Append(key).Append('\\').Append(value);
            return(b.ToString());
        }
예제 #9
0
        private void Consolidate()
        {
            if (_newData == null)
            {
                return;
            }
            if (_data.Length < _newDataPosition)
            {
                StringBuilder filler = new StringBuilder();
                while (_data.Length + StringBuilderEx.GetLength(filler) < _newDataPosition)
                {
                    filler.Append('\0');
                }
                _data += filler.ToString();
            }
            long p2 = _newDataPosition + StringBuilderEx.GetLength(_newData);

            _data    = _data.Substring(0, (int)_newDataPosition) + _newData.ToString() + (p2 < _data.Length ? _data.Substring((int)p2, _data.Length) : string.Empty);
            _newData = null;
        }
예제 #10
0
        private static string RemoveAssemblyDetails(string fullyQualifiedTypeName)
        {
            var sb = StringBuilderEx.Acquire(0x20);
            var writingAssemblyName = false;
            var skipping            = false;

            foreach (var c in fullyQualifiedTypeName)
            {
                switch (c)
                {
                case '[':
                case ']':
                    writingAssemblyName = false;
                    skipping            = false;
                    sb.Append(c);
                    break;

                case ',':
                    if (!writingAssemblyName)
                    {
                        writingAssemblyName = true;
                        sb.Append(c);
                    }
                    else
                    {
                        skipping = true;
                    }
                    break;

                default:
                    if (!skipping)
                    {
                        sb.Append(c);
                    }
                    break;
                }
            }
            return(sb.ToStringAndRelease());
        }
예제 #11
0
 public override void WriteByte(int b)
 {
     if (!_isWriteable)
     {
         throw new Exception("IOException: not writeable");
     }
     if (_newData == null)
     {
         _newDataPosition = _position;
         _newData         = new StringBuilder();
     }
     else if (_newDataPosition + StringBuilderEx.GetLength(_newData) != _position)
     {
         Consolidate();
         _newDataPosition = _position;
         _newData         = new StringBuilder();
     }
     _newData.Append((char)(b & 255));
     _position++;
     _length  = Math.Max(_position, _length);
     _isDirty = true;
 }