using HtmlAgilityPack; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Beam.Abstractions; namespace Beam.Dynamic { public class AnchorCollectionDataProvider : IDataProvider { public IBinding? Content { get; set; } public string? RelativeTo { get; set; } private string GetAbsolute(string? @base, string relative) { if (@base is null) return relative; if (@base.EndsWith('/')) @base = @base[..^1]; if (relative.StartsWith('/')) relative = relative[1..]; return @base + '/' + relative; } public string[] Get(HtmlDocument document) { if (Content is null) return []; var node = Content.Select(document); if (node is null) return []; List links = []; foreach (var child in node.Descendants()) links.Add(child.GetAttributeValue("href", "")); return links.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); } } }