Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        private void AddEntry(string key, string template)
        {
            var needRender = TemplateUtil.NeedRender(template);

            if (!needRender)
            {
                return;
            }

            var entry = new TemplateEntry(key, template);

            _renders.Add(entry);
        }