Ejemplo n.º 1
0
        protected override void Write(MarkdownRenderer renderer, LinkInline obj)
        {
            if (obj == null)
            {
                return;
            }
            if (renderer == null)
            {
                return;
            }

            var url = obj.GetDynamicUrl?.Invoke() ?? obj.Url;
            Uri?uri = MarkdownRenderer.GetAbsoluteUri(renderer.BasePath, url);

            if (uri == null)
            {
                renderer.WriteChildren(obj);
                return;
            }

            var title = string.IsNullOrEmpty(obj.Title) ? obj.Url : obj.Title;

            if (obj.IsImage)
            {
                renderer.AppendBlock(new Image()
                {
                    Source            = ImageSource.FromUri(uri),
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                });
            }
            else
            {
                var restore = renderer.CurrentHyperlink;
                renderer.CurrentHyperlink = uri;
                renderer.HyperlinkStyleId = Theme.StyleId.Hyperlink;
                renderer.WriteChildren(obj);
                renderer.CurrentHyperlink = restore;
            }
        }