private static string MapReference(NodeKeysInfo info, string title) { if (info.Regular.Contains(title)) { return(title); } info.References.TryGetValue(title, out var reference); return(reference); }
public static NodeKeysInfo Build(WikiPageTitle[] titles) { var dict = titles.ToDictionary(x => x.Name); var result = new NodeKeysInfo { BadTargetReference = new HashSet <string>(), CycleReference = new HashSet <string>(), References = new Dictionary <string, string>(), Regular = new HashSet <string>(), }; foreach (var title in dict.Keys) { var info = GetNodeInfo(dict, title); switch (info.Type) { case NodeType.Regular: result.Regular.Add(title); break; case NodeType.Reference: result.References.Add(title, info.Reference); break; case NodeType.CycleReference: result.CycleReference.Add(title); break; case NodeType.BadReference: result.BadTargetReference.Add(title); break; } } return(result); }