private void CheckDependencies(TemplateEntry entry, ICollection <TemplateEntry> dependencies) { var variables = entry.Variables; if (variables == null || !variables.Any()) { return; } foreach (var variable in variables) { var dependency = _renders.SingleOrDefault(i => i.Key == variable); if (dependency == null) { continue; } if (dependencies.Any(i => i.Key == dependency.Key)) { throw new ArgumentException($"cyclic dependency '{entry.Key} > {string.Join(" > ", dependencies.Select(i => i.Key))}'.", entry.Key); } dependencies.Add(dependency); if (dependency.Variables != null && dependency.Variables.Any()) { CheckDependencies(dependency, dependencies); } } }
private void AddEntry(string key, string template) { var needRender = TemplateUtil.NeedRender(template); if (!needRender) { return; } var entry = new TemplateEntry(key, template); _renders.Add(entry); }