Files
Beam/Beam.Dynamic/DataProviders/ManyAnchorsDataProvider.cs
T
qwsdcvghyu89 18c5ad83da Refactor data providers and update abstractions
- Removed obsolete data providers: `AnchorCollectionDataProvider`, `ContentsDataProvider`, and others, consolidating logic into new composable providers.
- Added `ComposeDataProviders`, `SelectDataProvider`, and `RelationalDataProvider` for improved flexibility and reusability.
- Introduced `IManySelectionComposableDataProvider` interface to support multiple-node selection.
- Enhanced `UnitDownloader` with more robust progress tracking.
- Updated package references and project dependencies for consistency.
- Improved error handling in `StealthConfig` initialization for better fallback on browser drivers.
- Incremented project version to 2.4.5.
2025-11-14 03:41:13 +11:00

20 lines
680 B
C#

using Beam.Abstractions;
using HtmlAgilityPack;
namespace Beam.Dynamic;
public class ManyAnchorsDataProvider : AnchorDataProvider, IManySelectionComposableDataProvider<string[]> {
public new string[] Get(HtmlDocument document) {
return [base.Get(document)];
}
public string[] ManyGet(HtmlNode[] node) {
return node.Select(x => base.Get(x)).ToArray();
}
public HtmlNode[]? SelectMany(HtmlDocument doc) {
var k = Select(doc);
return k == null ? null : [k];
}
public HtmlNode[]? SelectMany(HtmlNode[] node) {
return node.Select(x => Select(x) ?? null).Where(x => x is not null).Cast<HtmlNode>().ToArray();
}
}