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;
}