private IEnumerable <Conditional <ComponentPoint> > EnumerateComponentPoint(XAttribute location, IConditionTreeItem baseConditions, IReadOnlyList <string> usedDefinitions) { if (!componentPointTemplateParser.TryParse(location, out var templatePoint)) { yield break; } if (!templatePoint.Variables.Any()) { if (componentPointParser.TryParse(location, out var componentPoint)) { yield return(new Conditional <ComponentPoint>(componentPoint, baseConditions)); } yield break; } var undeclaredUsages = templatePoint.Variables.Except(usedDefinitions).ToHashSet(); if (!ReportUndeclared(location.GetFileRange(), undeclaredUsages)) { yield break; } foreach (var result in EnumerateComponentPoint(templatePoint, baseConditions)) { yield return(result); } }
private IEnumerable <Conditional <ComponentPoint> > EnumerateComponentPoint(XAttribute x, XAttribute y, IConditionTreeItem baseConditions, IReadOnlyList <string> usedDefinitions) { if (!componentPointTemplateParser.TryParse(x, y, out var templatePoint)) { yield break; } if (!templatePoint.Variables.Any()) { if (componentPointParser.TryParse(x, y, out var componentPoint)) { yield return(new Conditional <ComponentPoint>(componentPoint, baseConditions)); } yield break; } var undeclaredXUsages = templatePoint.XVariables.Except(usedDefinitions).ToHashSet(); if (!ReportUndeclared(x.GetFileRange(), undeclaredXUsages)) { yield break; } var undeclaredYUsages = templatePoint.YVariables.Except(usedDefinitions).ToHashSet(); if (!ReportUndeclared(y.GetFileRange(), undeclaredYUsages)) { yield break; } var variable = templatePoint.Variables.First(); foreach (var condition in definitionsSection.Definitions[variable]) { var cp = templatePoint.Construct(new Dictionary <string, double> { [variable] = double.Parse(condition.Value), }); var conditions = new ConditionTree(ConditionTree.ConditionOperator.AND, baseConditions, condition.Conditions); yield return(new Conditional <ComponentPoint>(cp, conditions)); } }
public static bool TryParse(this IComponentPointParser parser, XAttribute location, out XmlComponentPoint componentPoint) { return(parser.TryParse(location.Value, location.GetFileRange(), out componentPoint)); }
public static bool TryParse(this IComponentPointParser parser, XAttribute x, XAttribute y, out XmlComponentPoint componentPoint) { return(parser.TryParse(x.Value, y.Value, x.GetFileRange(), y.GetFileRange(), out componentPoint)); }
public static void Log(this IXmlLoadLogger logger, LogLevel level, XAttribute attribute, string message) { logger.Log(level, attribute.GetFileRange(), message, null); }