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();
}
}
}