diff --git a/src/DotMarkdown.Docusaurus.Tests/DocusaurusMarkdownWriterTests.cs b/src/DotMarkdown.Docusaurus.Tests/DocusaurusMarkdownWriterTests.cs index af60a883..33380171 100644 --- a/src/DotMarkdown.Docusaurus.Tests/DocusaurusMarkdownWriterTests.cs +++ b/src/DotMarkdown.Docusaurus.Tests/DocusaurusMarkdownWriterTests.cs @@ -1,9 +1,10 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using DotMarkdown.Linq.Docusaurus; +using DotMarkdown.Docusaurus.Linq; using DotMarkdown.Tests; using Xunit; -using static DotMarkdown.Linq.Docusaurus.DocusaurusMarkdownFactory; +using static DotMarkdown.Docusaurus.Linq.DocusaurusMarkdownFactory; +using static DotMarkdown.Docusaurus.Tests.DocusaurusTestHelpers; using static DotMarkdown.Tests.TestHelpers; namespace DotMarkdown.Docusaurus.Tests; @@ -51,6 +52,41 @@ public static void MarkdownWriter_Write_DocusaurusCodeBlock_CodeBlockOptionsNone ```{DefaultText} {Chars} ``` +{DefaultText}"; + + Assert.Equal(expected.NormalizeNewLine(), mw.ToStringAndClear()); + } + + [Fact] + public static void MarkdownWriter_Write_DocusaurusCodeBlock_LineNumbers() + { + DocusaurusMarkdownWriter mw = CreateWriterWithLineNumbers(includeLineNumbers: true); + + mw.Write(DefaultText); + mw.Write(DocusaurusCodeBlock(Chars, DefaultText, showLineNumbers: null)); + mw.Write(DocusaurusCodeBlock(Chars, DefaultText, showLineNumbers: true)); + mw.Write(DocusaurusCodeBlock(Chars, DefaultText, showLineNumbers: false)); + mw.Write(DocusaurusCodeBlock(Chars, DefaultText, "file1.txt")); + mw.Write(DefaultText); + + string expected = $@"{DefaultText} + +```{DefaultText} showLineNumbers +{Chars} +``` + +```{DefaultText} showLineNumbers +{Chars} +``` + +```{DefaultText} +{Chars} +``` + +```{DefaultText} title=""file1.txt"" +{Chars} +``` + {DefaultText}"; Assert.Equal(expected.NormalizeNewLine(), mw.ToStringAndClear()); @@ -75,6 +111,40 @@ public static void MarkdownWriter_Write_DocusaurusAdmonition(AdmonitionKind kind ::: +"; + + Assert.Equal(expected.NormalizeNewLine(), mw.ToStringAndClear()); + } + + [Fact] + public static void MarkdownWriter_Write_DocusaurusAdmonition_NoTitle() + { + DocusaurusMarkdownWriter mw = CreateWriterWithBlankLines(admonitionBlankLines: false); + + MDocusaurusAdmonition admonition = DocusaurusAdmonition(AdmonitionKind.Note, Chars); + admonition.WriteTo(mw); + + string expected = $@":::note +{CharsEscaped} +::: + +"; + + Assert.Equal(expected.NormalizeNewLine(), mw.ToStringAndClear()); + } + + [Fact] + public static void MarkdownWriter_Write_DocusaurusAdmonition_NoBlankLines() + { + DocusaurusMarkdownWriter mw = CreateWriterWithBlankLines(admonitionBlankLines: false); + + MDocusaurusAdmonition admonition = DocusaurusAdmonition(AdmonitionKind.Note, Chars, "Title"); + admonition.WriteTo(mw); + + string expected = $@":::note Title +{CharsEscaped} +::: + "; Assert.Equal(expected.NormalizeNewLine(), mw.ToStringAndClear()); diff --git a/src/DotMarkdown.Docusaurus.Tests/DocusaurusTestHelpers.cs b/src/DotMarkdown.Docusaurus.Tests/DocusaurusTestHelpers.cs index c0ca3cb0..23e3807d 100644 --- a/src/DotMarkdown.Docusaurus.Tests/DocusaurusTestHelpers.cs +++ b/src/DotMarkdown.Docusaurus.Tests/DocusaurusTestHelpers.cs @@ -1,14 +1,29 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using DotMarkdown.Linq.Docusaurus; +using DotMarkdown.Docusaurus.Linq; using static DotMarkdown.Tests.TestHelpers; namespace DotMarkdown.Docusaurus.Tests; internal static class DocusaurusTestHelpers { + public static DocusaurusMarkdownWriter CreateWriterWithLineNumbers(bool includeLineNumbers = false) + { + return CreateDocusaurusWriter(CreateWriter(), new DocusaurusMarkdownFormat(codeLineNumbers: includeLineNumbers)); + } + + public static DocusaurusMarkdownWriter CreateWriterWithBlankLines(bool admonitionBlankLines = true) + { + return CreateDocusaurusWriter(CreateWriter(), new DocusaurusMarkdownFormat(admonitionBlankLines: admonitionBlankLines)); + } + + public static DocusaurusMarkdownWriter CreateDocusaurusWriter(MarkdownWriter writer, DocusaurusMarkdownFormat? format = null) + { + return new DocusaurusMarkdownWriter(writer, format); + } + public static MDocusaurusCodeBlock CreateDocusaurusCodeBlock() { - return new MDocusaurusCodeBlock(CodeBlockText(), CodeBlockInfo(), "file.txt", showLineNumbers: true); + return new MDocusaurusCodeBlock(CodeBlockText(), CodeBlockInfo(), "file.txt", includeLineNumbers: true); } } diff --git a/src/DotMarkdown.Docusaurus.Tests/Extensions.cs b/src/DotMarkdown.Docusaurus.Tests/Extensions.cs index 5f96fd65..47b888a1 100644 --- a/src/DotMarkdown.Docusaurus.Tests/Extensions.cs +++ b/src/DotMarkdown.Docusaurus.Tests/Extensions.cs @@ -1,8 +1,8 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Text.RegularExpressions; +using DotMarkdown.Docusaurus.Linq; using DotMarkdown.Tests; -using DotMarkdown.Linq.Docusaurus; namespace DotMarkdown.Docusaurus.Tests; @@ -19,4 +19,11 @@ public static MDocusaurusCodeBlock Modify(this MDocusaurusCodeBlock block) { return new MDocusaurusCodeBlock(block.Text.Modify(), block.Info!.Modify()); } + + public static string? ToStringAndClear(this DocusaurusMarkdownWriter mw) + { + string? s = mw.Writer.ToString(); + ((MarkdownStringWriter)mw.Writer).GetStringBuilder().Clear(); + return s; + } } diff --git a/src/DotMarkdown.Docusaurus.Tests/MDocusaurusCodeBlockTests.cs b/src/DotMarkdown.Docusaurus.Tests/MDocusaurusCodeBlockTests.cs index f34b0217..82fec3be 100644 --- a/src/DotMarkdown.Docusaurus.Tests/MDocusaurusCodeBlockTests.cs +++ b/src/DotMarkdown.Docusaurus.Tests/MDocusaurusCodeBlockTests.cs @@ -1,11 +1,9 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using DotMarkdown.Linq; -using DotMarkdown.Linq.Docusaurus; -using DotMarkdown.Tests; using Xunit; using static DotMarkdown.Tests.TestHelpers; using static DotMarkdown.Docusaurus.Tests.DocusaurusTestHelpers; +using DotMarkdown.Docusaurus.Linq; namespace DotMarkdown.Docusaurus.Tests; @@ -67,7 +65,7 @@ public static void MDocusaurusCodeBlock_OperatorNotEquals() public static void MDocusaurusCodeBlock_Constructor_AssignText() { string text = CodeBlockText(); - var block = new MDocusaurusCodeBlock(text: text, info: CodeBlockInfo()); + var block = new MDocusaurusCodeBlock(text: text, language: CodeBlockInfo()); Assert.Equal(text, block.Text); } @@ -76,7 +74,7 @@ public static void MDocusaurusCodeBlock_Constructor_AssignText() public static void MDocusaurusCodeBlock_Constructor_AssignInfo() { string info = CodeBlockInfo(); - var block = new MDocusaurusCodeBlock(text: CodeBlockText(), info: info); + var block = new MDocusaurusCodeBlock(text: CodeBlockText(), language: info); Assert.Equal(info, block.Info); } diff --git a/src/DotMarkdown.Docusaurus/Docusaurus/DocusaurusMarkdownFormat.cs b/src/DotMarkdown.Docusaurus/Docusaurus/DocusaurusMarkdownFormat.cs index 68987fd7..1bffb651 100644 --- a/src/DotMarkdown.Docusaurus/Docusaurus/DocusaurusMarkdownFormat.cs +++ b/src/DotMarkdown.Docusaurus/Docusaurus/DocusaurusMarkdownFormat.cs @@ -2,18 +2,19 @@ namespace DotMarkdown.Docusaurus; -//TODO: public class DocusaurusMarkdownFormat { + public static DocusaurusMarkdownFormat Default { get; } = new(); + public DocusaurusMarkdownFormat( - bool codeBlockLineNumber = false, - bool admonitionEmptyLines = true) + bool codeLineNumbers = false, + bool admonitionBlankLines = true) { - CodeBlockLineNumber = codeBlockLineNumber; - AdmonitionEmptyLines = admonitionEmptyLines; + CodeLineNumbers = codeLineNumbers; + AdmonitionBlankLines = admonitionBlankLines; } - public bool CodeBlockLineNumber { get; } + public bool CodeLineNumbers { get; } - public bool AdmonitionEmptyLines { get; } + public bool AdmonitionBlankLines { get; } } diff --git a/src/DotMarkdown.Docusaurus/Docusaurus/DocusaurusMarkdownWriter.cs b/src/DotMarkdown.Docusaurus/Docusaurus/DocusaurusMarkdownWriter.cs new file mode 100644 index 00000000..4e2a78da --- /dev/null +++ b/src/DotMarkdown.Docusaurus/Docusaurus/DocusaurusMarkdownWriter.cs @@ -0,0 +1,152 @@ +// Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; + +namespace DotMarkdown.Docusaurus; + +public sealed class DocusaurusMarkdownWriter : MarkdownWriter +{ + public DocusaurusMarkdownWriter(MarkdownWriter writer, DocusaurusMarkdownFormat? format = null) + { + Writer = writer ?? throw new ArgumentNullException(nameof(writer)); + DocusaurusFormat = format ?? DocusaurusMarkdownFormat.Default; + } + + public MarkdownWriter Writer { get; } + + public DocusaurusMarkdownFormat DocusaurusFormat { get; } + + public void WriteDocusaurusCodeBlock(string text, string? language = null, string? title = null, bool? includeLineNumbers = null) + { + Writer.WriteDocusaurusCodeBlock(text, language, title, includeLineNumbers ?? DocusaurusFormat.CodeLineNumbers); + } + + public void WriteDocusaurusNote(string text, string? title = null) + { + WriteDocusaurusAdmonition(AdmonitionKind.Note, text, title); + } + + public void WriteDocusaurusTip(string text, string? title = null) + { + WriteDocusaurusAdmonition(AdmonitionKind.Tip, text, title); + } + + public void WriteDocusaurusInfo(string text, string? title = null) + { + WriteDocusaurusAdmonition(AdmonitionKind.Info, text, title); + } + + public void WriteDocusaurusCaution(string text, string? title = null) + { + WriteDocusaurusAdmonition(AdmonitionKind.Caution, text, title); + } + + public void WriteDocusaurusDanger(string text, string? title = null) + { + WriteDocusaurusAdmonition(AdmonitionKind.Danger, text, title); + } + + public void WriteDocusaurusAdmonition(AdmonitionKind kind, string text, string? title = null) + { + string admonition = kind switch + { + AdmonitionKind.Note => "note", + AdmonitionKind.Tip => "tip", + AdmonitionKind.Info => "info", + AdmonitionKind.Caution => "caution", + AdmonitionKind.Danger => "danger", + _ => throw new ArgumentException($"Unknown {nameof(AdmonitionKind)} '{kind}'", nameof(kind)) + }; + + Writer.WriteDocusaurusAdmonition(admonition, text, title, includeBlankLines: DocusaurusFormat.AdmonitionBlankLines); + } + + public override WriteState WriteState => Writer.WriteState; + + public override void Flush() => Writer.Flush(); + + public override void WriteAutolink(string url) => Writer.WriteAutolink(url); + + public override void WriteCharEntity(char value) => Writer.WriteCharEntity(value); + + public override void WriteComment(string text) => Writer.WriteComment(text); + + public override void WriteEndBlockQuote() => Writer.WriteEndBlockQuote(); + + public override void WriteEndBold() => Writer.WriteEndBold(); + + public override void WriteEndBulletItem() => Writer.WriteEndBulletItem(); + + public override void WriteEndHeading() => Writer.WriteEndHeading(); + + public override void WriteEndItalic() => Writer.WriteEndItalic(); + + public override void WriteEndLink(string url, string? title = null) => Writer.WriteEndLink(url, title); + + public override void WriteEndOrderedItem() => Writer.WriteEndOrderedItem(); + + public override void WriteEndStrikethrough() => Writer.WriteEndStrikethrough(); + + public override void WriteEndTable() => Writer.WriteEndTable(); + + public override void WriteEndTableCell() => Writer.WriteEndTableCell(); + + public override void WriteEndTableRow() => Writer.WriteEndTableRow(); + + public override void WriteEndTaskItem() => Writer.WriteEndTaskItem(); + + public override void WriteEntityRef(string name) => Writer.WriteEntityRef(name); + + public override void WriteFencedCodeBlock(string text, string? info = null) => Writer.WriteFencedCodeBlock(text, info); + + public override void WriteHorizontalRule(HorizontalRuleStyle style, int count = 3, string? separator = " ") => Writer.WriteHorizontalRule(style, count, separator); + + public override void WriteImage(string text, string url, string? title = null) => Writer.WriteImage(text, url, title); + + public override void WriteImageReference(string text, string label) => Writer.WriteImageReference(text, label); + + public override void WriteIndentedCodeBlock(string text) => Writer.WriteIndentedCodeBlock(text); + + public override void WriteInlineCode(string text) => Writer.WriteInlineCode(text); + + public override void WriteLabel(string label, string url, string? title = null) => Writer.WriteLabel(label, url, title); + + public override void WriteLine() => Writer.WriteLine(); + + public override void WriteLinkReference(string text, string? label = null) => Writer.WriteLinkReference(text, label); + + public override void WriteRaw(string data) => Writer.WriteRaw(data); + + public override void WriteStartBlockQuote() => Writer.WriteStartBlockQuote(); + + public override void WriteStartBold() => Writer.WriteStartBold(); + + public override void WriteStartBulletItem() => Writer.WriteStartBulletItem(); + + public override void WriteStartHeading(int level) => Writer.WriteStartHeading(level); + + public override void WriteStartItalic() => Writer.WriteStartItalic(); + + public override void WriteStartLink() => Writer.WriteStartLink(); + + public override void WriteStartOrderedItem(int number) => Writer.WriteStartOrderedItem(number); + + public override void WriteStartStrikethrough() => Writer.WriteStartStrikethrough(); + + public override void WriteStartTable(int columnCount) => Writer.WriteStartTable(columnCount); + + public override void WriteStartTable(IReadOnlyList columns) => Writer.WriteStartTable(columns); + + public override void WriteStartTableCell() => Writer.WriteStartTableCell(); + + public override void WriteStartTableRow() => Writer.WriteStartTableRow(); + + public override void WriteStartTaskItem(bool isCompleted = false) => Writer.WriteStartTaskItem(isCompleted); + + public override void WriteString(string text) => Writer.WriteString(text); + + public override void WriteTableHeaderSeparator() => Writer.WriteTableHeaderSeparator(); + + internal override void WriteFencedBlock(string text, string fence, MarkdownCharEscaper escaper, string? info = null, bool blankLinesAroundContent = false) => Writer.WriteFencedBlock(text, fence, escaper, info, blankLinesAroundContent); +} diff --git a/src/DotMarkdown.Docusaurus/Docusaurus/MarkdownWriterExtensions.cs b/src/DotMarkdown.Docusaurus/Docusaurus/MarkdownWriterExtensions.cs index 1b3adb5e..9e3a65fc 100644 --- a/src/DotMarkdown.Docusaurus/Docusaurus/MarkdownWriterExtensions.cs +++ b/src/DotMarkdown.Docusaurus/Docusaurus/MarkdownWriterExtensions.cs @@ -7,21 +7,26 @@ namespace DotMarkdown.Docusaurus; public static class MarkdownWriterExtensions { - public static void WriteDocusaurusCodeBlock(this MarkdownWriter writer, string text, string? info = null, string? textInfo = null, bool showLineNumbers = false) + public static void WriteDocusaurusCodeBlock( + this MarkdownWriter writer, + string text, + string? info = null, + string? title = null, + bool includeLineNumbers = false) { if (writer is null) throw new ArgumentNullException(nameof(writer)); if (!string.IsNullOrEmpty(info) - || !string.IsNullOrEmpty(textInfo) - || showLineNumbers) + || !string.IsNullOrEmpty(title) + || includeLineNumbers) { StringBuilder sb = StringBuilderCache.GetInstance(); if (!string.IsNullOrEmpty(info)) sb.Append(info); - if (showLineNumbers) + if (includeLineNumbers) { if (sb.Length > 0) sb.Append(' '); @@ -29,14 +34,14 @@ public static void WriteDocusaurusCodeBlock(this MarkdownWriter writer, string t sb.Append("showLineNumbers"); } - if (!string.IsNullOrEmpty(textInfo)) + if (!string.IsNullOrEmpty(title)) { if (sb.Length > 0) sb.Append(' '); sb.Append("title=\""); - sb.Append(textInfo); - sb.Replace("\"", "\\\"", sb.Length - textInfo!.Length, textInfo.Length); + sb.Append(title); + sb.Replace("\"", "\\\"", sb.Length - title!.Length, title.Length); sb.Append('"'); } @@ -48,35 +53,32 @@ public static void WriteDocusaurusCodeBlock(this MarkdownWriter writer, string t public static void WriteDocusaurusNote(this MarkdownWriter writer, string text, string? title = null) { - WriteDocusaurusAdmonition(writer, text, AdmonitionKind.Note, title); + WriteDocusaurusAdmonition(writer, "note", text, title); } public static void WriteDocusaurusTip(this MarkdownWriter writer, string text, string? title = null) { - WriteDocusaurusAdmonition(writer, text, AdmonitionKind.Tip, title); + WriteDocusaurusAdmonition(writer, "tip", text, title); } public static void WriteDocusaurusInfo(this MarkdownWriter writer, string text, string? title = null) { - WriteDocusaurusAdmonition(writer, text, AdmonitionKind.Info, title); + WriteDocusaurusAdmonition(writer, "info", text, title); } public static void WriteDocusaurusCaution(this MarkdownWriter writer, string text, string? title = null) { - WriteDocusaurusAdmonition(writer, text, AdmonitionKind.Caution, title); + WriteDocusaurusAdmonition(writer, "caution", text, title); } public static void WriteDocusaurusDanger(this MarkdownWriter writer, string text, string? title = null) { - WriteDocusaurusAdmonition(writer, text, AdmonitionKind.Danger, title); + WriteDocusaurusAdmonition(writer, "danger", text, title); } - public static void WriteDocusaurusAdmonition(this MarkdownWriter writer, string text, AdmonitionKind kind, string? title = null) + public static void WriteDocusaurusAdmonition(this MarkdownWriter writer, AdmonitionKind kind, string text, string? title = null) { - if (writer is null) - throw new ArgumentNullException(nameof(writer)); - - string info = kind switch + string admonition = kind switch { AdmonitionKind.Note => "note", AdmonitionKind.Tip => "tip", @@ -86,9 +88,19 @@ public static void WriteDocusaurusAdmonition(this MarkdownWriter writer, string _ => throw new ArgumentException($"Unknown {nameof(AdmonitionKind)} '{kind}'", nameof(kind)) }; + WriteDocusaurusAdmonition(writer, admonition, text, title); + } + + internal static void WriteDocusaurusAdmonition(this MarkdownWriter writer, string admonition, string text, string? title = null, bool includeBlankLines = true) + { + if (writer is null) + throw new ArgumentNullException(nameof(writer)); + + string info = admonition; + if (!string.IsNullOrEmpty(title)) info += $" {title}"; - writer.WriteFencedBlock(text, ":::", MarkdownCharEscaper.Default, info: info, blankLinesAroundContent: true); + writer.WriteFencedBlock(text, ":::", MarkdownCharEscaper.Default, info: info, blankLinesAroundContent: includeBlankLines); } } diff --git a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/DocusaurusMarkdownFactory.cs b/src/DotMarkdown.Docusaurus/Linq/DocusaurusMarkdownFactory.cs similarity index 83% rename from src/DotMarkdown.Docusaurus/Linq/Docusaurus/DocusaurusMarkdownFactory.cs rename to src/DotMarkdown.Docusaurus/Linq/DocusaurusMarkdownFactory.cs index 673ffa17..7802d01d 100644 --- a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/DocusaurusMarkdownFactory.cs +++ b/src/DotMarkdown.Docusaurus/Linq/DocusaurusMarkdownFactory.cs @@ -1,14 +1,13 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using DotMarkdown.Docusaurus; - -namespace DotMarkdown.Linq.Docusaurus; +namespace DotMarkdown.Docusaurus.Linq; +//TODO: DocusaurusMarkdownFactory > DocusaurusFactory public static class DocusaurusMarkdownFactory { - public static MDocusaurusCodeBlock DocusaurusCodeBlock(string text, string? info = null, string? textInfo = null, bool showLineNumbers = false) + public static MDocusaurusCodeBlock DocusaurusCodeBlock(string text, string? language = null, string? title = null, bool? showLineNumbers = false) { - return new MDocusaurusCodeBlock(text, info, textInfo, showLineNumbers); + return new MDocusaurusCodeBlock(text, language, title, showLineNumbers); } public static MDocusaurusNoteBlock DocusaurusNoteBlock(string text, string? title = null) diff --git a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusAdmonition.cs b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusAdmonition.cs similarity index 83% rename from src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusAdmonition.cs rename to src/DotMarkdown.Docusaurus/Linq/MDocusaurusAdmonition.cs index 4bec136c..9f1c8437 100644 --- a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusAdmonition.cs +++ b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusAdmonition.cs @@ -2,9 +2,9 @@ using System; using System.Diagnostics; -using DotMarkdown.Docusaurus; +using DotMarkdown.Linq; -namespace DotMarkdown.Linq.Docusaurus; +namespace DotMarkdown.Docusaurus.Linq; [DebuggerDisplay("{Kind}{DebuggerDisplay,nq} {Text,nq}")] public abstract class MDocusaurusAdmonition : MElement @@ -49,6 +49,13 @@ public static MDocusaurusAdmonition Create(AdmonitionKind kind, string text, str public override void WriteTo(MarkdownWriter writer) { - writer.WriteDocusaurusAdmonition(Text, AdmonitionKind, Title); + if (writer is DocusaurusMarkdownWriter docusaurusWriter) + { + docusaurusWriter.WriteDocusaurusAdmonition(AdmonitionKind, Text, Title); + } + else + { + writer.WriteDocusaurusAdmonition(AdmonitionKind, Text, Title); + } } } diff --git a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusCautionBlock.cs b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusCautionBlock.cs similarity index 89% rename from src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusCautionBlock.cs rename to src/DotMarkdown.Docusaurus/Linq/MDocusaurusCautionBlock.cs index c4fde4c6..c9581121 100644 --- a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusCautionBlock.cs +++ b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusCautionBlock.cs @@ -1,8 +1,8 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using DotMarkdown.Docusaurus; +using DotMarkdown.Linq; -namespace DotMarkdown.Linq.Docusaurus; +namespace DotMarkdown.Docusaurus.Linq; public class MDocusaurusCautionBlock : MDocusaurusAdmonition { diff --git a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusCodeBlock.cs b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusCodeBlock.cs similarity index 59% rename from src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusCodeBlock.cs rename to src/DotMarkdown.Docusaurus/Linq/MDocusaurusCodeBlock.cs index 67d461f4..a6e350ff 100644 --- a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusCodeBlock.cs +++ b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusCodeBlock.cs @@ -2,21 +2,21 @@ using System; using System.Diagnostics; -using DotMarkdown.Docusaurus; +using DotMarkdown.Linq; -namespace DotMarkdown.Linq.Docusaurus; +namespace DotMarkdown.Docusaurus.Linq; [DebuggerDisplay("{Kind}{InfoDebuggerDisplay,nq} {Text,nq}")] public class MDocusaurusCodeBlock : MElement { private string? _info; - public MDocusaurusCodeBlock(string text, string? info = null, string? textInfo = null, bool showLineNumbers = false) + public MDocusaurusCodeBlock(string text, string? language = null, string? title = null, bool? includeLineNumbers = false) { Text = text; - Info = info; - TextInfo = textInfo; - ShowLineNumbers = showLineNumbers; + Info = language; + Title = title; + IncludeLineNumbers = includeLineNumbers; } public MDocusaurusCodeBlock(MDocusaurusCodeBlock other) @@ -26,8 +26,8 @@ public MDocusaurusCodeBlock(MDocusaurusCodeBlock other) Text = other.Text; _info = other.Info; - TextInfo = other.TextInfo; - ShowLineNumbers = other.ShowLineNumbers; + Title = other.Title; + IncludeLineNumbers = other.IncludeLineNumbers; } public string Text { get; set; } @@ -43,9 +43,9 @@ public string? Info } } - public string? TextInfo { get; } + public string? Title { get; } - public bool ShowLineNumbers { get; } + public bool? IncludeLineNumbers { get; } public override MarkdownKind Kind => MarkdownKind.FencedBlock; @@ -53,7 +53,14 @@ public string? Info public override void WriteTo(MarkdownWriter writer) { - writer.WriteDocusaurusCodeBlock(Text, Info, TextInfo, ShowLineNumbers); + if (writer is DocusaurusMarkdownWriter docusaurusWriter) + { + docusaurusWriter.WriteDocusaurusCodeBlock(Text, Info, Title, IncludeLineNumbers); + } + else + { + writer.WriteDocusaurusCodeBlock(Text, Info, Title, IncludeLineNumbers ?? DocusaurusMarkdownFormat.Default.CodeLineNumbers); + } } internal override MElement Clone() diff --git a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusDangerBlock.cs b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusDangerBlock.cs similarity index 89% rename from src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusDangerBlock.cs rename to src/DotMarkdown.Docusaurus/Linq/MDocusaurusDangerBlock.cs index 9ee8bb3b..67980abe 100644 --- a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusDangerBlock.cs +++ b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusDangerBlock.cs @@ -1,8 +1,8 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using DotMarkdown.Docusaurus; +using DotMarkdown.Linq; -namespace DotMarkdown.Linq.Docusaurus; +namespace DotMarkdown.Docusaurus.Linq; public class MDocusaurusDangerBlock : MDocusaurusAdmonition { diff --git a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusInfoBlock.cs b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusInfoBlock.cs similarity index 89% rename from src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusInfoBlock.cs rename to src/DotMarkdown.Docusaurus/Linq/MDocusaurusInfoBlock.cs index 485aafac..43020ef0 100644 --- a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusInfoBlock.cs +++ b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusInfoBlock.cs @@ -1,8 +1,8 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using DotMarkdown.Docusaurus; +using DotMarkdown.Linq; -namespace DotMarkdown.Linq.Docusaurus; +namespace DotMarkdown.Docusaurus.Linq; public class MDocusaurusInfoBlock : MDocusaurusAdmonition { diff --git a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusNoteBlock.cs b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusNoteBlock.cs similarity index 89% rename from src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusNoteBlock.cs rename to src/DotMarkdown.Docusaurus/Linq/MDocusaurusNoteBlock.cs index 52c22ebb..2b5d831a 100644 --- a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusNoteBlock.cs +++ b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusNoteBlock.cs @@ -1,8 +1,8 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using DotMarkdown.Docusaurus; +using DotMarkdown.Linq; -namespace DotMarkdown.Linq.Docusaurus; +namespace DotMarkdown.Docusaurus.Linq; public class MDocusaurusNoteBlock : MDocusaurusAdmonition { diff --git a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusTipBlock.cs b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusTipBlock.cs similarity index 89% rename from src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusTipBlock.cs rename to src/DotMarkdown.Docusaurus/Linq/MDocusaurusTipBlock.cs index 4e8edad8..3878ea64 100644 --- a/src/DotMarkdown.Docusaurus/Linq/Docusaurus/MDocusaurusTipBlock.cs +++ b/src/DotMarkdown.Docusaurus/Linq/MDocusaurusTipBlock.cs @@ -1,8 +1,8 @@ // Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using DotMarkdown.Docusaurus; +using DotMarkdown.Linq; -namespace DotMarkdown.Linq.Docusaurus; +namespace DotMarkdown.Docusaurus.Linq; public class MDocusaurusTipBlock : MDocusaurusAdmonition { diff --git a/src/DotMarkdown.Docusaurus/docs/NuGetReadme.md b/src/DotMarkdown.Docusaurus/docs/NuGetReadme.md index 16d44ba6..4270612a 100644 --- a/src/DotMarkdown.Docusaurus/docs/NuGetReadme.md +++ b/src/DotMarkdown.Docusaurus/docs/NuGetReadme.md @@ -6,9 +6,3 @@ Extension of DotMarkdown package for Docusaurus markdown. * .NET Standard 1.3 * .NET Framework 4.6 - -## Usage - -### Commonly Used Types - -* `DotMarkdown.Docusaurus` diff --git a/src/TestConsole/DotMarkdown.TestConsole.csproj b/src/TestConsole/DotMarkdown.TestConsole.csproj index a61de1d2..da78f4ee 100644 --- a/src/TestConsole/DotMarkdown.TestConsole.csproj +++ b/src/TestConsole/DotMarkdown.TestConsole.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 @@ -10,6 +10,7 @@ +