public void OpenNthLink(string index)
{
int value;
if (!int.TryParse(index, out value)) value = 0;
var links = Status.Entities
.Guard()
.Distinct(e => e.StartIndex) // ignore extended_entities
.OrderBy(e => e.StartIndex)
.Select(e =>
{
switch (e.EntityType)
{
case EntityType.Media:
case EntityType.Urls:
return e.OriginalUrl;
case EntityType.UserMentions:
return TextBlockStylizer.UserNavigation + e.DisplayText;
case EntityType.Hashtags:
return TextBlockStylizer.HashtagNavigation + e.DisplayText;
default:
throw new ArgumentOutOfRangeException();
}
})
.ToArray();
if (value < 0 || links.Length <= value) return;
OpenLink(links[value]);
}