using Kavita.Models.Parser;
namespace Kavita.Services.Extensions;
public static class ParserExtensions
{
extension(ParserInfo info)
{
///
/// Merges non-empty/null properties from info2 into this entity.
///
/// This does not merge ComicInfo as they should always be the same
///
public void Merge(ParserInfo? info2)
{
if (info2 == null) return;
info.Chapters = Scanner.Parser.IsDefaultChapter(info.Chapters) ? info2.Chapters: info.Chapters;
info.Volumes = Scanner.Parser.IsLooseLeafVolume(info.Volumes) ? info2.Volumes : info.Volumes;
info.Edition = string.IsNullOrEmpty(info.Edition) ? info2.Edition : info.Edition;
info.Title = string.IsNullOrEmpty(info.Title) ? info2.Title : info.Title;
info.Series = string.IsNullOrEmpty(info.Series) ? info2.Series : info.Series;
info.IsSpecial = info.IsSpecial || info2.IsSpecial;
}
///
/// If the ParserInfo has the IsSpecial tag or both volumes and chapters are default aka 0
///
///
public bool IsSpecialInfo()
{
return info.IsSpecial || (Scanner.Parser.IsLooseLeafVolume(info.Volumes) && Scanner.Parser.IsDefaultChapter(info.Chapters));
}
}
}