using System.Text;
using AIStudio.Tools.PluginSystem;
namespace AIStudio.Provider;
public static class SourceExtensions
{
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(SourceExtensions).Namespace, nameof(SourceExtensions));
///
/// Converts a list of sources to a markdown-formatted string.
///
/// The list of sources to convert.
/// A markdown-formatted string representing the sources.
public static string ToMarkdown(this IList sources)
{
var sb = new StringBuilder();
sb.Append("## ");
sb.AppendLine(TB("Sources"));
var sourceNum = 0;
foreach (var source in sources)
{
sb.Append($"- [{++sourceNum}] ");
sb.Append('[');
sb.Append(source.Title);
sb.Append("](");
sb.Append(source.URL);
sb.AppendLine(")");
}
return sb.ToString();
}
///
/// Merges a list of added sources into an existing list of sources, avoiding duplicates based on URL and Title.
///
/// The existing list of sources to merge into.
/// The list of sources to add.
public static void MergeSources(this IList sources, IList addedSources)
{
foreach (var addedSource in addedSources)
if (sources.All(s => s.URL != addedSource.URL && s.Title != addedSource.Title))
sources.Add((Source)addedSource);
}
}