/// <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)); }