using HtmlAgilityPack; using System.Text; using Beam.Abstractions; namespace Beam.Dynamic { public class ListContentDataProvider : IComposableDataProvider { public IBinding? Content { get; set; } public string Get(HtmlDocument document) { if (Content is null) return ""; var node = Select(document); return node is null ? "" : Get(node); } public string Get(HtmlNode node) { StringBuilder content = new(); foreach(var childNode in node.ChildNodes.SkipLast(1)) { if (childNode.Name != "li") continue; content.Append(childNode.InnerText.Trim() + ";"); } content.Append(node.ChildNodes.Last().InnerText.Trim()); return content.ToString(); } public HtmlNode? Select(HtmlDocument doc) { return Content?.Select(doc); } public HtmlNode? Select(HtmlNode node) { return node; } } }