Ejemplo n.º 1
0
 protected override void Write(MarkdownRenderer renderer, QuoteBlock obj)
 {
     if (renderer == null)
     {
         return;
     }
     renderer.AppendQuote(Themes.Theme.StyleId.QuoteBlock, Themes.Theme.StyleId.QuoteBlock);
     renderer.WriteChildren(obj);
     renderer.CloseLayout();
 }
Ejemplo n.º 2
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;
            }
        }
Ejemplo n.º 3
0
        protected override void Write(MarkdownRenderer renderer, ListBlock obj)
        {
            int bulletCount = 1;

            if (obj == null)
            {
                return;
            }
            if (renderer == null)
            {
                return;
            }
            if (obj.IsOrdered)
            {
                if (obj.BulletType != '1')
                {
                    //throw new NotImplementedException();
                }
                if (obj.OrderedStart != null && obj.OrderedStart != "1")
                {
                    if (!int.TryParse(obj.OrderedStart, out bulletCount))
                    {
                        bulletCount = 1;
                    }
                }
            }

            var grid = new Grid()
            {
                ColumnDefinitions =
                {
                    new ColumnDefinition()
                    {
                        Width = GridLength.Auto
                    },
                    new ColumnDefinition()
                    {
                        Width = GridLength.Star
                    },
                }
            };

            var rows     = new RowDefinitionCollection();
            int rowCount = 0;

            foreach (ListItemBlock item in obj)
            {
                //"•"はBoxViewの方が良いかな?
                //• is bullet,not ・.
                grid.Children.Add(
                    new Label()
                {
                    Text = obj.IsOrdered ? bulletCount + "." : "•",
                    HorizontalOptions = LayoutOptions.Start,
                    VerticalOptions   = LayoutOptions.Start,
                    Style             = renderer.Theme.GetStyleFromStyleId(Themes.Theme.StyleId.ListItem).ToStyleLabel()
                }, 0, rowCount
                    );
                var stack = new StackLayout();
                grid.Children.Add(stack, 1, rowCount);
                rows.Add(new RowDefinition()
                {
                    Height = GridLength.Auto
                });
                var restoreTemp = renderer.TemporaryTargetLayout;
                renderer.TemporaryTargetLayout = stack;
                renderer.WriteChildren(item);
                renderer.TemporaryTargetLayout = restoreTemp;
                rowCount++;
            }
            grid.RowDefinitions = rows;
            renderer.AppendBlock(grid);
        }