public bool Next()

in src/Structure/BlockTaggerImpl/BraceParser.cs [174:247]


            public bool Next()
            {
                if (++(this.position) < this.snapshot.Length)
                {
                    bool wasEscaped = _escape;
                    _escape = false;

                    char opener = base.Character;
                    if (_quote == ' ')
                    {
                        if (opener == '#')
                        {
                            ITextSnapshotLine line = this.snapshot.GetLineFromPosition(this.position);
                            this.position = line.End;
                        }
                        else if ((opener == '\'') || (opener == '\"'))
                            _quote = opener;
                        else if (opener == '@')
                        {
                            char next = this.PeekNextChar();
                            if (next == '\"')
                            {
                                _quote = '@';
                                this.position += 1;
                            }
                        }
                        else if (opener == '/')
                        {
                            char next = this.PeekNextChar();
                            if (next == '/')
                            {
                                ITextSnapshotLine line = this.snapshot.GetLineFromPosition(this.position);
                                this.position = line.End;
                            }
                            else if (next == '*')
                            {
                                this.position += 2;

                                while (this.position < this.snapshot.Length)
                                {
                                    if ((this.snapshot[this.position] == '*') && (this.PeekNextChar() == '/'))
                                    {
                                        this.position += 2;
                                        break;
                                    }

                                    ++(this.position);
                                }
                            }
                        }
                    }
                    else if ((_quote != '@') && (opener == '\\') && !wasEscaped)
                    {
                        _escape = true;
                    }
                    else if (((opener == _quote) || ((opener == '\"') && (_quote == '@'))) && !wasEscaped)
                    {
                        _quote = ' ';
                    }
                    else if ((_quote == '\"') || (_quote == '\''))
                    {
                        ITextSnapshotLine line = this.snapshot.GetLineFromPosition(this.position);
                        if (line.End == this.position)
                        {
                            //End simple quotes at the end of the line.
                            _quote = ' ';
                        }
                    }

                    return (this.position < this.snapshot.Length);
                }

                return false;
            }