예제 #1
0
        /// <inheritdoc/>
        public override SyntaxNode VisitPropertyTriggerCondition(UvssPropertyTriggerConditionSyntax node)
        {
            var unchanged = true;

            var newPropertyName = (UvssPropertyNameSyntax)Visit(node.PropertyName);

            if (newPropertyName != node.PropertyName)
            {
                unchanged = false;
            }

            var newComparisonOperatorToken = (SyntaxToken)Visit(node.ComparisonOperatorToken);

            if (newComparisonOperatorToken != node.ComparisonOperatorToken)
            {
                unchanged = false;
            }

            var newValue = (UvssPropertyValueWithBracesSyntax)Visit(node.PropertyValue);

            if (newValue != node.PropertyValue)
            {
                unchanged = false;
            }

            return(unchanged ? node : new UvssPropertyTriggerConditionSyntax(
                       newPropertyName,
                       newComparisonOperatorToken,
                       newValue));
        }
        /// <summary>
        /// Compiles a <see cref="UvssPropertyTriggerCondition"/> from the specified syntax node.
        /// </summary>
        private static UvssPropertyTriggerCondition CompilePropertyTriggerCondition(UvssPropertyTriggerConditionSyntax node, CultureInfo culture)
        {
            var op            = default(TriggerComparisonOp);
            var propertyName  = new DependencyName(GetPropertyName(node.PropertyName));
            var propertyValue = new DependencyValue(node.PropertyValue.Value, culture);

            switch (node.ComparisonOperatorToken.Kind)
            {
            case SyntaxKind.EqualsToken:
                op = TriggerComparisonOp.Equals;
                break;

            case SyntaxKind.NotEqualsToken:
                op = TriggerComparisonOp.NotEquals;
                break;

            case SyntaxKind.GreaterThanToken:
                op = TriggerComparisonOp.GreaterThan;
                break;

            case SyntaxKind.LessThanToken:
                op = TriggerComparisonOp.LessThan;
                break;

            case SyntaxKind.GreaterThanEqualsToken:
                op = TriggerComparisonOp.GreaterThanOrEqualTo;
                break;

            case SyntaxKind.LessThanEqualsToken:
                op = TriggerComparisonOp.LessThanOrEqualTo;
                break;

            default:
                throw new UvssException(PresentationStrings.StyleSheetParserError);
            }

            return(new UvssPropertyTriggerCondition(op, propertyName, propertyValue));
        }
 /// <summary>
 /// Visits the specified property trigger condition node.
 /// </summary>
 /// <param name="node">The node to visit.</param>
 /// <returns>A node which should replace the visited node, or a reference to the visited node
 /// itself if no changes were made.</returns>
 public virtual SyntaxNode VisitPropertyTriggerCondition(UvssPropertyTriggerConditionSyntax node)
 {
     return(VisitSyntaxNode(node));
 }