コード例 #1
0
        public TextPtr SkipWhitespace(bool skipNewline = false)
        {
            TextPtr ptr    = this;
            int     length = ptr.Content.Length;

            if (skipNewline)
            {
                while (true)
                {
                    char c = ptr.Char;
                    if ((ptr.Index >= length) || !char.IsWhiteSpace(c))
                    {
                        return(ptr);
                    }
                    ptr = op_Increment(ptr);
                }
            }
            while (true)
            {
                char ch2 = ptr.Char;
                if (((ptr.Index >= length) || ptr.IsNewLine()) || !char.IsWhiteSpace(ch2))
                {
                    return(ptr);
                }
                ptr = op_Increment(ptr);
            }
        }
コード例 #2
0
ファイル: MyIni.cs プロジェクト: Fullance/space-egineers-API
 private void Realize(ref MyIniKey key, ref StringSegment value)
 {
     if (!value.IsCached)
     {
         string  text = value.Text;
         TextPtr ptr  = new TextPtr(text, value.Start);
         if ((value.Length > 0) && ptr.IsNewLine())
         {
             StringBuilder tmpValueBuilder = this.TmpValueBuilder;
             try
             {
                 ptr = TextPtr.op_Increment(ptr.FindEndOfLine(true));
                 int count = (value.Start + value.Length) - ptr.Index;
                 tmpValueBuilder.Append(text, ptr.Index, count);
                 tmpValueBuilder.Replace("\n|", "\n");
                 this.m_items[key] = value = new StringSegment(tmpValueBuilder.ToString());
             }
             finally
             {
                 tmpValueBuilder.Clear();
             }
         }
         else
         {
             this.m_items[key] = value = new StringSegment(value.ToString());
         }
     }
 }
コード例 #3
0
        public TextPtr FindEndOfLine(bool skipNewline = false)
        {
            int length = this.Content.Length;

            if (this.Index >= length)
            {
                return(this);
            }
            TextPtr ptr = this;

            while (ptr.Index < length)
            {
                if (ptr.IsNewLine())
                {
                    if (!skipNewline)
                    {
                        return(ptr);
                    }
                    if (ptr.Char == '\r')
                    {
                        ptr = op_Increment(ptr);
                    }
                    return(op_Increment(ptr));
                }
                ptr = op_Increment(ptr);
            }
            return(ptr);
        }
コード例 #4
0
 public bool IsStartOfLine()
 {
     if (this.Index > 0)
     {
         TextPtr ptr = this - 1;
         return(ptr.IsNewLine());
     }
     return(true);
 }
コード例 #5
0
ファイル: MyIni.cs プロジェクト: Fullance/space-egineers-API
        private void ReadPrefix(ref TextPtr ptr, out StringSegment prefix)
        {
            bool    flag = false;
            TextPtr ptr2 = ptr;

            while (!ptr.IsOutOfBounds())
            {
                if (ptr.IsStartOfLine() && (ptr.Char == ';'))
                {
                    if (!flag)
                    {
                        flag = true;
                        ptr2 = ptr;
                    }
                    ptr = ptr.FindEndOfLine(false);
                }
                TextPtr ptr3 = ptr.SkipWhitespace(false);
                if (!ptr3.IsNewLine())
                {
                    break;
                }
                if (ptr3.Char == '\r')
                {
                    ptr = ptr3 + 2;
                }
                else
                {
                    ptr = ptr3 + 1;
                }
            }
            if (flag)
            {
                TextPtr ptr4 = ptr;
                while (char.IsWhiteSpace(ptr4.Char) && (ptr4 > ptr2))
                {
                    ptr4 = TextPtr.op_Decrement(ptr4);
                }
                int length = ptr4.Index - ptr2.Index;
                if (length > 0)
                {
                    prefix = new StringSegment(ptr.Content, ptr2.Index, length);
                    return;
                }
            }
            prefix = new StringSegment();
        }