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 AnchorDataProvider : IComposableDataProvider { public IBinding? Content { get; set; } public Uri? RelativeTo { get; set; } public string Get(HtmlDocument document) { var node = Select(document); return node is null ? "" : Get(node); } public virtual string Get(HtmlNode node) { if (Uri.TryCreate(RelativeTo, node.GetAttributeValue("href", ""), out var uri)) return uri.AbsoluteUri; return ""; } public HtmlNode? Select(HtmlDocument doc) { return Content?.Select(doc); } public HtmlNode? Select(HtmlNode node) { return node; } } }