/// <summary> /// 1. Expand the TOC reference /// 2. Resolve homepage /// </summary> /// <param name="models"></param> /// <param name="host"></param> /// <returns></returns> public override IEnumerable <FileModel> Prebuild(ImmutableList <FileModel> models, IHostService host) { var tocModelCache = new Dictionary <FileAndType, TocItemInfo>(); foreach (var model in models) { if (!tocModelCache.ContainsKey(model.OriginalFileAndType)) { tocModelCache[model.OriginalFileAndType] = new TocItemInfo(model.OriginalFileAndType, (TocItemViewModel)model.Content); } } var tocResolver = new TocResolver(host, tocModelCache); foreach (var key in tocModelCache.Keys.ToList()) { tocModelCache[key] = tocResolver.Resolve(key); } foreach (var model in models) { var wrapper = tocModelCache[model.OriginalFileAndType]; // If the TOC file is referenced by other TOC, remove it from the collection if (!wrapper.IsReferenceToc) { model.Content = wrapper.Content; yield return(model); } } }
public static IEnumerable <FileModel> Resolve(ImmutableList <FileModel> models, IHostService host) { var tocCache = new Dictionary <string, TocItemInfo>(FilePathComparer.OSPlatformSensitiveStringComparer); foreach (var model in models) { tocCache[model.OriginalFileAndType.FullPath] = new TocItemInfo(model.OriginalFileAndType, (TocItemViewModel)model.Content); } var tocResolver = new TocResolver(host, tocCache); foreach (var key in tocCache.Keys.ToList()) { tocCache[key] = tocResolver.Resolve(key); } foreach (var model in models) { // If the TOC file is referenced by other TOC, remove it from the collection var tocItemInfo = tocCache[model.OriginalFileAndType.FullPath]; if (!tocItemInfo.IsReferenceToc) { model.Content = tocItemInfo.Content; yield return(model); } } }
/// <summary> /// 1. Expand the TOC reference /// 2. Resolve homepage /// </summary> /// <param name="models"></param> /// <param name="host"></param> /// <returns></returns> public override IEnumerable<FileModel> Prebuild(ImmutableList<FileModel> models, IHostService host) { var tocModelCache = new Dictionary<string, TocItemInfo>(); foreach (var model in models) { if (!tocModelCache.ContainsKey(model.OriginalFileAndType.FullPath)) { tocModelCache[model.OriginalFileAndType.FullPath] = new TocItemInfo(model.OriginalFileAndType, (TocItemViewModel)model.Content); } } var tocResolver = new TocResolver(host, tocModelCache); foreach (var key in tocModelCache.Keys.ToList()) { tocModelCache[key] = tocResolver.Resolve(key); } foreach (var model in models) { var wrapper = tocModelCache[model.OriginalFileAndType.FullPath]; // If the TOC file is referenced by other TOC, remove it from the collection if (!wrapper.IsReferenceToc) { model.Content = wrapper.Content; yield return model; } } }
public static (List <FileModel> tocModels, HashSet <string> includedTocs) ResolveToc(ImmutableList <FileModel> models, IHostService host) { var tocCache = new Dictionary <string, TocItemInfo>(FilePathComparer.OSPlatformSensitiveStringComparer); var nonReferencedTocModels = new List <FileModel>(); var referencedToc = new HashSet <string>(FilePathComparer.OSPlatformSensitiveStringComparer); foreach (var model in models) { tocCache[model.OriginalFileAndType.FullPath] = new TocItemInfo(model.OriginalFileAndType, (TocItemViewModel)model.Content); } var tocResolver = new TocResolver(tocCache); foreach (var key in tocCache.Keys.ToList()) { tocCache[key] = tocResolver.Resolve(key); } foreach (var model in models) { // If the TOC file is referenced by other TOC, remove it from the collection var tocItemInfo = tocCache[model.OriginalFileAndType.FullPath]; if (!tocItemInfo.IsReferenceToc) { model.Content = tocItemInfo.Content; nonReferencedTocModels.Add(model); } else { referencedToc.Add(model.Key); } } return(nonReferencedTocModels, referencedToc); }
/// <summary> /// 1. Expand the TOC reference /// 2. Resolve homepage /// </summary> /// <param name="models"></param> /// <param name="host"></param> /// <returns></returns> public override IEnumerable <FileModel> Prebuild(ImmutableList <FileModel> models, IHostService host) { var tocModelCache = new Dictionary <string, TocItemInfo>(FilePathComparer.OSPlatformSensitiveStringComparer); foreach (var model in models) { if (!tocModelCache.ContainsKey(model.OriginalFileAndType.FullPath)) { tocModelCache[model.OriginalFileAndType.FullPath] = new TocItemInfo(model.OriginalFileAndType, (TocItemViewModel)model.Content); } } var tocResolver = new TocResolver(host, tocModelCache); foreach (var key in tocModelCache.Keys.ToList()) { tocModelCache[key] = tocResolver.Resolve(key); } ReportDependency(models, host, tocModelCache.ToImmutableDictionary(), 8); foreach (var model in models) { var wrapper = tocModelCache[model.OriginalFileAndType.FullPath]; // If the TOC file is referenced by other TOC, remove it from the collection if (!wrapper.IsReferenceToc) { model.Content = wrapper.Content; yield return(model); } } }