Example #1
0
        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;
                }
            }
        }
Example #2
0
        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;
                }
            }
        }
Example #3
0
        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;
        }