using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using MfGames.Gallium; using MfGames.Nitride.Contents; using MfGames.Nitride.Slugs; namespace MfGames.Nitride.Markdown; /// /// An operation that turns list items that starts with a link into a single /// link for the entire list item, even if there are additional links in the /// list. /// public class MakeSingleLinkListItems : IOperation { private readonly ISlugConverter slugs; public MakeSingleLinkListItems(ISlugConverter slugs) { this.slugs = slugs; } /// public IEnumerable Run(IEnumerable input) { return input .SelectManyEntity( x => x .Select(this.MakeSingleLinkLists)); } /// /// This turns all links that start with a link into a single link while /// removing all trailing links within the line. This is to simplify the /// rendering of the link on page. /// private Entity MakeSingleLinkLists(Entity entity) { string content = entity.GetText()!; string output = Regex.Replace( content, @"- \[\[(?