private static IEnumerable <IAngularModule> OrderModules(IDictionary <string, IAngularModule> modules) { Queue <string> queue = new Queue <string>(modules.Keys); HashSet <string> ordered = new HashSet <string>(); while (queue.Count > 0) { IAngularModule module = modules[queue.Dequeue()]; if (module.Dependencies.All(x => ordered.Contains(x.Name) || !modules.ContainsKey(x.Name))) { ordered.Add(module.Name); } else { queue.Enqueue(module.Name); } } return(ordered.Select(mod => modules[mod]).ToList()); }
public ResolvedState(IAngularModule module) { Module = module; }
public IAngularDependencyState Resolve() { IAngularModule module = context[Name]; return(module != null ? (IAngularDependencyState) new ResolvedState(module) : this); }