Example #1
0
        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();
        }
Example #2
0
        public bool TryParse(string argument)
        {
            this.Clear();
            if (string.IsNullOrEmpty(argument))
            {
                return(false);
            }
            TextPtr ptr = new TextPtr(argument);

Label_001D:
            ptr = ptr.SkipWhitespace(false);
            if (!ptr.IsOutOfBounds())
            {
                if (!this.TryParseSwitch(ref ptr))
                {
                    this.ParseParameter(ref ptr);
                }
                goto Label_001D;
            }
            return(this.Items.Count > 0);
        }
Example #3
0
 private void RealizeComment(ref StringSegment comment)
 {
     if (!comment.IsCached)
     {
         string  text = comment.Text;
         TextPtr ptr  = new TextPtr(text, comment.Start);
         if (comment.Length > 0)
         {
             StringBuilder tmpValueBuilder = this.TmpValueBuilder;
             try
             {
                 TextPtr ptr2 = ptr + comment.Length;
                 for (bool flag = false; ptr < ptr2; flag = true)
                 {
                     if (flag)
                     {
                         tmpValueBuilder.Append('\n');
                     }
                     if (ptr.Char == ';')
                     {
                         ptr = TextPtr.op_Increment(ptr);
                         TextPtr ptr3  = ptr.FindEndOfLine(false);
                         int     count = ptr3.Index - ptr.Index;
                         tmpValueBuilder.Append(ptr.Content, ptr.Index, count);
                         ptr = ptr3.SkipWhitespace(false);
                         if (ptr.IsEndOfLine())
                         {
                             if (ptr.Char == '\r')
                             {
                                 ptr += 2;
                             }
                             else
                             {
                                 ptr = TextPtr.op_Increment(ptr);
                             }
                         }
                     }
                     else
                     {
                         ptr = ptr.SkipWhitespace(false);
                         if (!ptr.IsEndOfLine())
                         {
                             break;
                         }
                         if (ptr.Char == '\r')
                         {
                             ptr += 2;
                         }
                         else
                         {
                             ptr = TextPtr.op_Increment(ptr);
                         }
                     }
                 }
                 comment = new StringSegment(tmpValueBuilder.ToString());
             }
             finally
             {
                 tmpValueBuilder.Clear();
             }
         }
     }
 }