public override IEnumerable <FileModel> Prebuild(ImmutableList <FileModel> models, IHostService host) { host.LogInfo("Merging platform..."); var processedUid = new HashSet <string>(); var merged = models.RunAll(m => { if (m.Type != DocumentType.Article) { return(m); } if (m.Uids.Length == 0) { host.LogWarning("Unknown model without uid.", file: m.File); return(m); } var mainUid = m.Uids[0].Name; if (processedUid.Contains(mainUid)) { return(null); } var sameTopics = host.LookupByUid(mainUid); if (sameTopics.Count == 1) { return(m); } processedUid.Add(mainUid); var vm = (PageViewModel)m.Content; m.Content = MergeCore( mainUid, m, from topic in sameTopics where topic != m where topic.Type == DocumentType.Article select topic, host); return(m); }); host.LogInfo("Platform merged."); return(from p in merged where p != null select p); }
public override IEnumerable<FileModel> Prebuild(ImmutableList<FileModel> models, IHostService host) { host.LogInfo("Merging platform..."); var processedUid = new HashSet<string>(); var merged = models.RunAll(m => { if (m.Type != DocumentType.Article) { return m; } if (m.Uids.Length == 0) { host.LogWarning("Unknown model without uid.", file: m.File); return m; } var mainUid = m.Uids[0]; if (processedUid.Contains(mainUid)) { return null; } var sameTopics = host.LookupByUid(mainUid); if (sameTopics.Count == 1) { return m; } processedUid.Add(mainUid); var vm = (PageViewModel)m.Content; m.Content = MergeCore( mainUid, m, from topic in sameTopics where topic != m where topic.Type == DocumentType.Article select topic, host); return m; }); host.LogInfo("Platform merged."); return from p in merged where p != null select p; }
public override IEnumerable <FileModel> Prebuild(ImmutableList <FileModel> models, IHostService host) { host.LogInfo("Applying platform-version from metadata..."); models.RunAll(m => { if (m.Type != DocumentType.Article) { return; } var page = m.Content as PageViewModel; object value; if (page?.Metadata != null && page.Metadata.TryGetValue("platform", out value)) { page.Metadata.Remove("platform"); var list = GetPlatformVersionFromMetadata(value); if (list != null) { list.Sort(); foreach (var item in page.Items) { if (item.Platform == null) { item.Platform = list; } else { var set = new SortedSet <string>(item.Platform); foreach (var pv in list) { set.Add(pv); } item.Platform = set.ToList(); } } } } }); host.LogInfo("Platform applied."); return(models); }
public override IEnumerable<FileModel> Prebuild(ImmutableList<FileModel> models, IHostService host) { host.LogInfo("Applying platform-version from metadata..."); models.RunAll(m => { if (m.Type != DocumentType.Article) { return; } var page = m.Content as PageViewModel; object value; if (page?.Metadata != null && page.Metadata.TryGetValue("platform", out value)) { page.Metadata.Remove("platform"); var list = GetPlatformVersionFromMetadata(value); if (list != null) { list.Sort(); foreach (var item in page.Items) { if (item.Platform == null) { item.Platform = list; } else { var set = new SortedSet<string>(item.Platform); foreach (var pv in list) { set.Add(pv); } item.Platform = set.ToList(); } } } } }); host.LogInfo("Platform applied."); return models; }