Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
 }