using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace Beam.Dynamic {
    [JsonDerivedType(typeof(Binding), "binding")]
    public interface IBinding {
        string? XPath { get; set; }
        string? CssPath { get; set; }

        HtmlNode? Select(HtmlDocument doc) {
            if (XPath is not null)
                return doc.DocumentNode.SelectSingleNode(XPath);
            if (CssPath is not null)
                return doc.DocumentNode.ThenByClasses(CssPath.Split('/'));
            return null;
        }
    }
}
