Exemple #1
0
        /// <inheritdoc/>
        public override SyntaxNode VisitPropertyTrigger(UvssPropertyTriggerSyntax node)
        {
            var unchanged = true;

            var newTriggerKeyword = (SyntaxToken)Visit(node.TriggerKeyword);

            if (newTriggerKeyword != node.TriggerKeyword)
            {
                unchanged = false;
            }

            var newPropertyKeyword = (SyntaxToken)Visit(node.PropertyKeyword);

            if (newPropertyKeyword != node.PropertyKeyword)
            {
                unchanged = false;
            }

            var newConditionList = VisitSeparatedList(node.Conditions);

            if (newConditionList.Node != node.Conditions.Node)
            {
                unchanged = false;
            }

            var newQualifierToken = (SyntaxToken)Visit(node.QualifierToken);

            if (newQualifierToken != node.QualifierToken)
            {
                unchanged = false;
            }

            var newBody = (UvssBlockSyntax)Visit(node.Body);

            if (newBody != node.Body)
            {
                unchanged = false;
            }

            return(unchanged ? node : new UvssPropertyTriggerSyntax(
                       newTriggerKeyword,
                       newPropertyKeyword,
                       newConditionList,
                       newQualifierToken,
                       newBody));
        }
        /// <summary>
        /// Compiles a <see cref="UvssPropertyTrigger"/> from the specified syntax node.
        /// </summary>
        private static UvssPropertyTrigger CompilePropertyTrigger(UvssPropertyTriggerSyntax node, CultureInfo culture)
        {
            var isImportant = node.QualifierToken?.Kind == SyntaxKind.ImportantKeyword;
            var trigger     = new UvssPropertyTrigger(isImportant);

            for (int i = 0; i < node.Conditions.Count; i++)
            {
                var conditionNode = node.Conditions[i];
                var condition     = CompilePropertyTriggerCondition(conditionNode, culture);
                trigger.Conditions.Add(condition);
            }

            foreach (var action in node.Actions)
            {
                trigger.Actions.Add(CompileTriggerAction(action, culture));
            }

            return(trigger);
        }
 /// <summary>
 /// Visits the specified property trigger 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 VisitPropertyTrigger(UvssPropertyTriggerSyntax node)
 {
     return(VisitSyntaxNode(node));
 }