/// <summary> /// Builds the Markdig processing pipeline and returns a builder. /// Use this method to override any custom pipeline addins you want to /// add or append. /// /// Note you can also add addins using options.MarkdigExtensions which /// use MarkDigs extension syntax using commas instead of +. /// </summary> /// <param name="options"></param> /// <param name="builder"></param> /// <returns></returns> protected virtual MarkdownPipelineBuilder BuildPipeline(MarkdownOptionsConfiguration options, MarkdownPipelineBuilder builder) { if (options.AutoLinks) { builder = builder.UseAutoLinks(); } if (options.AutoHeaderIdentifiers) { builder = builder.UseAutoIdentifiers(Markdig.Extensions.AutoIdentifiers.AutoIdentifierOptions.GitHub); } if (options.Abbreviations) { builder = builder.UseAbbreviations(); } if (options.UseTables) { builder = builder .UsePipeTables() .UseGridTables(); } if (options.StripYamlFrontMatter) { builder = builder.UseYamlFrontMatter(); } if (options.EmojiAndSmiley) { builder = builder.UseEmojiAndSmiley(true); } if (options.MediaLinks) { builder = builder.UseMediaLinks(); } if (options.ListExtras) { builder = builder .UseListExtras() .UseDefinitionLists(); } if (options.Figures) { builder = builder.UseFigures(); } if (options.GithubTaskLists) { builder = builder.UseTaskLists(); } if (options.SmartyPants) { builder = builder.UseSmartyPants(); } if (options.Diagrams) { builder = builder.UseDiagrams(); } if (options.Mathmatics) { builder = builder.UseMathematics(); } if (options.CustomContainers) { builder = builder.UseCustomContainers(); } if (options.Attributes) { builder = builder.UseGenericAttributes(); } if (options.FootersAndFootnotes) { builder = builder .UseFooters() .UseFootnotes(); } if (options.NoHtml) { builder = builder.DisableHtml(); } builder = builder.UseEmphasisExtras(); if (UsePragmaLines) { builder = builder.UsePragmaLines(); } try { if (!string.IsNullOrWhiteSpace(options.MarkdigExtensions)) { builder = builder.Configure(options.MarkdigExtensions.Replace(",", "+")); } } catch (ArgumentException ex) { // One or more of the extension options is invalid. mmApp.Log("Failed to load Markdig extensions: " + options.MarkdigExtensions + "\r\n" + ex.Message, ex); mmApp.Model.Window.ShowStatusError("Failed to load Markdig extensions: " + ex.Message); // reset to default options.MarkdigExtensions = string.Empty; builder = builder.Configure(options.MarkdigExtensions.Replace(",", "+")); } return(builder); }