private void ProcessText()
{
string content = _innerContext.SourceCode;
string text;
int tagPosition = content.IndexOf("<", _innerContext.Position, StringComparison.Ordinal);
if (tagPosition >= _innerContext.Position)
{
text = content.Substring(_innerContext.Position, tagPosition - _innerContext.Position);
}
else
{
text = content.Substring(_innerContext.Position);
}
if (TemplateTagHelpers.ContainsTag(text))
{
TemplateTagHelpers.ParseMarkup(text,
(localContext, expression, startDelimiter, endDelimiter) =>
{
if (_handlers.TemplateTag != null)
{
_handlers.TemplateTag(_context, expression, startDelimiter, endDelimiter);
}
_innerContext.IncreasePosition(startDelimiter.Length + expression.Length + endDelimiter.Length);
},
(localContext, textValue) =>
{
if (_handlers.Text != null)
{
_handlers.Text(_context, textValue);
}
_innerContext.IncreasePosition(textValue.Length);
}
);
}
else
{
if (_handlers.Text != null)
{
_handlers.Text(_context, text);
}
_innerContext.IncreasePosition(text.Length);
}
}