public DfmEngineBuilder(Options options, string baseDir, string templateDir, IReadOnlyList <string> fallbackFolders, ICompositionContainer container) : base(options) { _baseDir = baseDir ?? string.Empty; _fallbackFolders = fallbackFolders ?? new List <string>(); var inlineRules = InlineRules.ToList(); // xref auto link must be before MarkdownAutoLinkInlineRule var index = inlineRules.FindIndex(s => s is MarkdownAutoLinkInlineRule); if (index < 0) { throw new ArgumentException("MarkdownAutoLinkInlineRule should exist!"); } inlineRules.Insert(index, new DfmXrefAutoLinkInlineRule()); index = inlineRules.FindLastIndex(s => s is MarkdownLinkInlineRule); if (index < 0) { throw new ArgumentException("MarkdownLinkInlineRule should exist!"); } inlineRules.Insert(index + 1, new DfmXrefShortcutInlineRule()); inlineRules.Insert(index + 1, new DfmEmailInlineRule()); inlineRules.Insert(index + 1, new DfmFencesInlineRule()); // xref link inline rule must be before MarkdownLinkInlineRule inlineRules.Insert(index, new DfmIncludeInlineRule()); Replace <MarkdownTextInlineRule, DfmTextInlineRule>(inlineRules); var blockRules = BlockRules.ToList(); index = blockRules.FindLastIndex(s => s is MarkdownCodeBlockRule); if (index < 0) { throw new ArgumentException("MarkdownNewLineBlockRule should exist!"); } blockRules.InsertRange( index + 1, new IMarkdownRule[] { new DfmIncludeBlockRule(), new DfmVideoBlockRule(), new DfmYamlHeaderBlockRule(), new DfmSectionBlockRule(), new DfmFencesBlockRule(), new DfmNoteBlockRule() }); Replace <MarkdownBlockquoteBlockRule, DfmBlockquoteBlockRule>(blockRules); Replace <MarkdownTableBlockRule, DfmTableBlockRule>(blockRules); Replace <MarkdownNpTableBlockRule, DfmNpTableBlockRule>(blockRules); InlineRules = inlineRules.ToImmutableList(); BlockRules = blockRules.ToImmutableList(); Rewriter = InitMarkdownStyle(container, baseDir, templateDir); TokenAggregator = new TabGroupAggregator(); }
public DfmEngineBuilder(Options options) : base(options) { var inlineRules = InlineRules.ToList(); // xref auto link must be before MarkdownAutoLinkInlineRule var index = inlineRules.FindIndex(s => s is MarkdownAutoLinkInlineRule); if (index < 0) { throw new ArgumentException("MarkdownAutoLinkInlineRule should exist!"); } inlineRules.Insert(index, new DfmXrefAutoLinkInlineRule()); index = inlineRules.FindLastIndex(s => s is MarkdownLinkInlineRule); if (index < 0) { throw new ArgumentException("MarkdownLinkInlineRule should exist!"); } inlineRules.Insert(index + 1, new DfmXrefShortcutInlineRule()); inlineRules.Insert(index + 1, new DfmEmailInlineRule()); // xref link inline rule must be before MarkdownLinkInlineRule inlineRules.Insert(index, new DfmXrefLinkInlineRule()); inlineRules.Insert(index, new DfmIncludeInlineRule()); index = inlineRules.FindIndex(s => s is MarkdownTextInlineRule); inlineRules[index] = new DfmTextInlineRule(); var blockRules = BlockRules.ToList(); index = blockRules.FindLastIndex(s => s is MarkdownNewLineBlockRule); if (index < 0) { throw new ArgumentException("MarkdownNewLineBlockRule should exist!"); } blockRules.Insert(index + 1, new DfmIncludeBlockRule()); blockRules.Insert(index + 2, new DfmYamlHeaderBlockRule()); blockRules.Insert(index + 3, new DfmSectionBlockRule()); blockRules.Insert(index + 4, new DfmFencesBlockRule()); blockRules.Insert(index + 5, new DfmNoteBlockRule()); var gfmIndex = blockRules.FindIndex(item => item is GfmParagraphBlockRule); blockRules[gfmIndex] = new DfmParagraphBlockRule(); var markdownBlockQuoteIndex = blockRules.FindIndex(item => item is MarkdownBlockquoteBlockRule); blockRules[markdownBlockQuoteIndex] = new DfmBlockquoteBlockRule(); InlineRules = inlineRules.ToImmutableList(); BlockRules = blockRules.ToImmutableList(); Rewriter = InitMarkdownStyle(GetContainer()); }
protected override void BuildInlineRules() { base.BuildInlineRules(); var inlineRules = InlineRules.ToList(); var index = inlineRules.FindLastIndex(s => s is MarkdownLinkInlineRule); if (index < 0) { throw new ArgumentException($"{nameof(MarkdownLinkInlineRule)} should exist!"); } inlineRules.Insert(index, new AzureIncludeInlineRule()); InlineRules = inlineRules.ToImmutableList(); }
protected override void BuildInlineRules() { base.BuildInlineRules(); var inlineRules = InlineRules.ToList(); var index = inlineRules.FindLastIndex(s => s is MarkdownLinkInlineRule); if (index < 0) { throw new ArgumentException($"{nameof(MarkdownLinkInlineRule)} should exist!"); } inlineRules.Insert(index, new AzureIncludeInlineRule()); // Remove GfmUrlInlineRule from inline rules as rewriter can just regards it as plain text index = inlineRules.FindLastIndex(s => s is GfmUrlInlineRule); inlineRules.RemoveAt(index); InlineRules = inlineRules.ToImmutableList(); }
public DfmEngineBuilder(Options options, CompositionHost host = null) : base(options) { var inlineRules = InlineRules.ToList(); var index = inlineRules.FindLastIndex(s => s is MarkdownLinkInlineRule); if (index < 0) { throw new ArgumentException("MarkdownLinkInlineRule should exist!"); } inlineRules.Insert(index + 1, new DfmXrefInlineRule()); inlineRules.Insert(index + 1, new DfmEmailInlineRule()); inlineRules.Insert(index, new DfmIncludeInlineRule()); index = inlineRules.FindIndex(s => s is MarkdownTextInlineRule); inlineRules[index] = new DfmTextInlineRule(); var blockRules = BlockRules.ToList(); index = blockRules.FindLastIndex(s => s is MarkdownNewLineBlockRule); if (index < 0) { throw new ArgumentException("MarkdownNewLineBlockRule should exist!"); } blockRules.Insert(index + 1, new DfmIncludeBlockRule()); blockRules.Insert(index + 2, new DfmYamlHeaderBlockRule()); blockRules.Insert(index + 3, new DfmSectionBlockRule()); blockRules.Insert(index + 4, new DfmFencesBlockRule()); blockRules.Insert(index + 5, new DfmNoteBlockRule()); var gfmIndex = blockRules.FindIndex(item => item is GfmParagraphBlockRule); blockRules[gfmIndex] = new DfmParagraphBlockRule(); var markdownBlockQuoteIndex = blockRules.FindIndex(item => item is MarkdownBlockquoteBlockRule); blockRules[markdownBlockQuoteIndex] = new DfmBlockquoteBlockRule(); InlineRules = inlineRules.ToImmutableList(); BlockRules = blockRules.ToImmutableList(); Rewriter = InitMarkdownStyleCop(host); }
public DfmEngineBuilder(Options options, string baseDir = null, string templateDir = null, IReadOnlyList <string> fallbackFolders = null) : base(options) { _baseDir = baseDir ?? string.Empty; _fallbackFolders = fallbackFolders ?? new List <string>(); var inlineRules = InlineRules.ToList(); // xref auto link must be before MarkdownAutoLinkInlineRule var index = inlineRules.FindIndex(s => s is MarkdownAutoLinkInlineRule); if (index < 0) { throw new ArgumentException("MarkdownAutoLinkInlineRule should exist!"); } inlineRules.Insert(index, new DfmXrefAutoLinkInlineRule()); index = inlineRules.FindLastIndex(s => s is MarkdownLinkInlineRule); if (index < 0) { throw new ArgumentException("MarkdownLinkInlineRule should exist!"); } inlineRules.Insert(index + 1, new DfmXrefShortcutInlineRule()); inlineRules.Insert(index + 1, new DfmEmailInlineRule()); inlineRules.Insert(index + 1, new DfmFencesRule()); // xref link inline rule must be before MarkdownLinkInlineRule inlineRules.Insert(index, new DfmIncludeInlineRule()); index = inlineRules.FindIndex(s => s is MarkdownTextInlineRule); if (index < 0) { throw new ArgumentException("MarkdownTextInlineRule should exist!"); } inlineRules[index] = new DfmTextInlineRule(); var blockRules = BlockRules.ToList(); index = blockRules.FindLastIndex(s => s is MarkdownCodeBlockRule); if (index < 0) { throw new ArgumentException("MarkdownNewLineBlockRule should exist!"); } blockRules.InsertRange( index + 1, new IMarkdownRule[] { new DfmIncludeBlockRule(), new DfmVideoBlockRule(), new DfmYamlHeaderBlockRule(), new DfmSectionBlockRule(), new DfmFencesRule(), new DfmNoteBlockRule() }); var gfmIndex = blockRules.FindIndex(item => item is GfmParagraphBlockRule); if (gfmIndex < 0) { throw new ArgumentException("GfmParagraphBlockRule should exist!"); } blockRules[gfmIndex] = new DfmParagraphBlockRule(); var markdownBlockQuoteIndex = blockRules.FindIndex(item => item is MarkdownBlockquoteBlockRule); if (markdownBlockQuoteIndex < 0) { throw new ArgumentException("MarkdownBlockquoteBlockRule should exist!"); } blockRules[markdownBlockQuoteIndex] = new DfmBlockquoteBlockRule(); InlineRules = inlineRules.ToImmutableList(); BlockRules = blockRules.ToImmutableList(); Rewriter = InitMarkdownStyle(GetContainer(), baseDir, templateDir); }