private static IEnumerable <Inline> GenerateInlines([NotNull] DependencyObject obj, [NotNull] string text) { foreach (var tok in StatusTextUtil.Tokenize(text)) { if (String.IsNullOrEmpty(tok.Text)) { // skip empty block continue; } switch (tok.Kind) { case TokenKind.Url: yield return(GenerateLink(obj, tok.Text, tok.Text)); break; case TokenKind.Hashtag: yield return(GenerateHashtagLink(obj, tok.Text.Substring(1))); break; case TokenKind.AtLink: yield return(GenerateUserLink(obj, tok.Text.Substring(1), tok.Text.Substring(1))); break; case TokenKind.Text: yield return(GenerateText(tok.Text)); break; } } }
private static IEnumerable <Inline> GenerateInlines(DependencyObject obj, string text) { foreach (var tok in StatusTextUtil.Tokenize(text)) { switch (tok.Kind) { case TokenKind.Url: yield return(GenerateLink(obj, tok.Text, tok.Text)); break; case TokenKind.Hashtag: yield return(GenerateHashtagLink(obj, tok.Text.Substring(1))); break; case TokenKind.AtLink: yield return(GenerateUserLink(obj, tok.Text.Substring(1), tok.Text.Substring(1))); break; case TokenKind.Text: yield return(GenerateText(tok.Text)); break; } } }
private void EscapeUrl() { var escaped = StatusTextUtil.AutoEscape(InputText); if (escaped == this.InputText) { return; } this.InputData.Text = escaped; this.RaisePropertyChanged(() => this.InputText); this.UpdateHashtagCandidates(); this.UpdateTextCount(); var diff = escaped.Length - this.InputText.Length; this.SelectionStart += diff; }