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 = binding?.Authors?.Get(x)?.Select(OnlineCleaner.Clean)?.ToArray() ?? [], Name = OnlineCleaner.Clean(binding?.Title?.Get(x) ?? ""), Categories = binding?.Tags?.Get(x)?.Select(OnlineCleaner.Clean)?.ToArray() ?? [], Description = OnlineCleaner.Clean(binding?.Description?.Get(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 }); }; } }