Token ProcessAutoLink()
{
if (DisableLinks)
return null;
// Skip the angle bracket and remember the start
SkipForward(1);
Mark();
bool ExtraMode = m_Markdown.ExtraMode;
// Allow anything up to the closing angle, watch for escapable characters
while (!Eof)
{
char ch = Current;
// No whitespace allowed
if (char.IsWhiteSpace(ch))
break;
// End found?
if (ch == '>')
{
string url = Utils.UnescapeString(Extract(), ExtraMode);
LinkInfo li = null;
if (Utils.IsEmailAddress(url))
{
string link_text;
if (url.StartsWith("mailto:"))
{
link_text = url.Substring(7);
}
else
{
link_text = url;
url = "mailto:" + url;
}
li = new LinkInfo(new LinkDefinition("auto", url, null), link_text, null);
}
else if (Utils.IsWebAddress(url))
{
li=new LinkInfo(new LinkDefinition("auto", url, null), url, null);
}
if (li!=null)
{
SkipForward(1);
return CreateToken(TokenType.link, li);
}
return null;
}
this.SkipEscapableChar(ExtraMode);
}
// Didn't work
return null;
}