protected override void Write(TsxRenderer renderer, ListBlock listBlock) { renderer.EnsureLine(); if (renderer.EnableHtmlForBlock) { if (listBlock.IsOrdered) { renderer.Write("<mdx.Ol"); if (listBlock.BulletType != '1') { renderer.Write(" type=\"").Write(listBlock.BulletType).Write('"'); } if (listBlock.OrderedStart is { } and not "1") { renderer.Write(" start={").Write(listBlock.OrderedStart).Write('}'); } renderer.WriteProps(listBlock); renderer.Write('>').WriteLine().Indent(); } else { renderer.Write("<mdx.Ul"); renderer.WriteProps(listBlock); renderer.Write('>').WriteLine().Indent(); } } foreach (var item in listBlock) { var listItem = (ListItemBlock)item; var previousImplicit = renderer.ImplicitParagraph; renderer.ImplicitParagraph = !listBlock.IsLoose; renderer.EnsureLine(); if (renderer.EnableHtmlForBlock) { renderer.Write("<mdx.Li").WriteProps(listItem).Write('>'); } renderer.WriteChildren(listItem); if (renderer.EnableHtmlForBlock) { renderer.Write("</mdx.Li>").WriteLine(); } renderer.EnsureLine(); renderer.ImplicitParagraph = previousImplicit; } if (renderer.EnableHtmlForBlock) { renderer.Dedent().Write(listBlock.IsOrdered ? "</mdx.Ol>" : "</mdx.Ul>").WriteLine(); } renderer.EnsureLine(); }
public (string content, Dictionary <object, object> metadata) Render() { var renderer = new TsxRenderer(); renderer.Write("import * as b from \"bobril\";").WriteLine(); renderer.Write("import * as mdx from \"@bobril/mdx\";").WriteLine(); foreach (var importBlock in _document !.Descendants <ImportBlock>()) { renderer.Write(importBlock.Lines.ToSlice()).WriteLine(); } var frontMatterBlock = _document ! .Descendants <YamlFrontMatterBlock>() .FirstOrDefault(); Dictionary <object, object>?metadata = null; if (frontMatterBlock != null) { var yaml = frontMatterBlock.Lines.ToString(); var deserializer = new DeserializerBuilder().Build(); var yamlObject = deserializer.Deserialize(new StringReader(yaml)); metadata = yamlObject as Dictionary <object, object>; frontMatterBlock.Parent !.Remove(frontMatterBlock); } metadata ??= new(); renderer.Write("export const metadata = ").Write(TypeConverter.ToAst(metadata)).Write(";").WriteLine(); metadata.TryGetValue("DataType", out var dataType); var dataTypeStr = dataType as string; renderer.Write("export default b.component((" + (dataTypeStr != null?"data: " + dataTypeStr:"") + ") => { return (<>").WriteLine() .Indent(); var output = (OutputContext)renderer.Render(_document !); renderer.Dedent().EnsureLine().Write("</>);});").WriteLine(); return(output.ToString(), metadata); }
protected override void Write(TsxRenderer renderer, ParagraphBlock obj) { if (!renderer.ImplicitParagraph && renderer.EnableHtmlForBlock) { if (!renderer.IsFirstInContainer) { renderer.EnsureLine(); } renderer.Write("<mdx.P").WriteProps(obj).Write(">").Indent(); } renderer.WriteLeafInline(obj); if (!renderer.ImplicitParagraph) { if (renderer.EnableHtmlForBlock) { renderer.Dedent(); renderer.Write("</mdx.P>"); } renderer.EnsureLine(); } }