private Dictionary <Tags, DownwardEdges> GenerateEdges(List <TagOrdering> orderings) { var result = new EdgeGraph(); lock (Tags.Registry) foreach (var ordering in orderings) { result.Connect(ordering.Higher, ordering.Lower); foreach (var kvp in Tags.Registry) { var containsLower = kvp.Value.Contains(ordering.Lower); var containsHigher = kvp.Value.Contains(ordering.Higher); if (containsLower && containsHigher) { continue; } else if (containsLower) { result.Connect(ordering.Higher, kvp.Value); } else if (containsHigher) { result.Connect(kvp.Value, ordering.Lower); } } } return(result.Finalize()); }
private void GenerateEdge(EdgeGraph result, TagSet ts, TagOrdering ordering) { var containsLower = ts.Contains(ordering.Lower); var containsHigher = ts.Contains(ordering.Higher); if (containsLower && containsHigher) { return; } else if (containsLower) { result.Connect(ordering.Higher, ts); } else if (containsHigher) { result.Connect(ts, ordering.Lower); } }
private void GenerateEdge(EdgeGraph result, Tag t, TagOrdering ordering) { var containsLower = (ordering.Lower.Count == 1) && (ordering.Lower.Id == t.Id); var containsHigher = (ordering.Higher.Count == 1) && (ordering.Higher.Id == t.Id); if (containsLower && containsHigher) { return; } else if (containsLower) { result.Connect(ordering.Higher, t); } else if (containsHigher) { result.Connect(t, ordering.Lower); } }
private Dictionary <Tags, DownwardEdges> GenerateEdges(List <TagOrdering> orderings) { var result = new EdgeGraph(); lock (Tags.Registry) foreach (var ordering in orderings) { result.Connect(ordering.Higher, ordering.Lower); foreach (var kvp in Tags.Registry) { GenerateEdge(result, kvp.Value, ordering); } foreach (var kvp in TagSet.Registry) { GenerateEdge(result, kvp.Value, ordering); } } return(result.Finalize()); }