using aeqw89.DataKeys; using Beam.Dynamic; using HtmlAgilityPack; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Beam.Temporary.Cli { public static class CommonTransformers { public static AsyncTransformer ArticleDataTransformer(DataBindings? binding) => (x) => { return Task.FromResult(new ArticleData() { Authors = [OnlineCleaner.Clean(binding?.Authors?.Resolve(x) ?? "")], Name = OnlineCleaner.Clean(binding?.Title?.ResolveString(x) ?? ""), Categories = OnlineCleaner.Clean(binding?.Tags?.ResolveString(x) ?? "").Split(';') ?? [], Description = OnlineCleaner.Clean(binding?.Description?.ResolveString(x) ?? "") }); }; public static AsyncTransformer DocumentTransformer(DataBindings? binding, IDocumentMetaData? metaData = null) => (x) => { var resolved = binding?.Resolve(x); var articleData = new ArticleData() { Name = OnlineCleaner.Clean(resolved?.Title), }; Dictionary, IDocumentMetaData> meta = []; meta.Add(IArchitecture.Default.ChapterKey, articleData); if (metaData is not null) meta.Add(IArchitecture.Default.BookKey, metaData); return Task.FromResult(new StringDocument(Path.GetRandomFileName(), OnlineCleaner.Clean(resolved?.Content)) { MetaData = meta }); }; } }