/// <summary> /// Compiles a <see cref="UvssSelectorPart"/> from the specified syntax node. /// </summary> private static UvssSelectorPart CompileSelectorPart(UvssSelectorPartSyntax node, UvssSelectorPartQualifier qualifier) { var element = node.SelectedType?.SelectedTypeIdentifier?.Text; if (element == "*") { element = null; } var elementIsExact = node.SelectedType?.ExclamationMarkToken != null; var id = node.SelectedName?.SelectedNameIdentifier?.Text; var pseudoClass = node.PseudoClass?.ClassNameIdentifier?.Text; var classes = new List <String>(); for (int i = 0; i < node.SelectedClasses.Count; i++) { var selectedClass = node.SelectedClasses[i]; classes.Add(selectedClass.SelectedClassIdentifier.Text); } return(new UvssSelectorPart(qualifier, element, elementIsExact, id, pseudoClass, classes)); }
/// <inheritdoc/> public override SyntaxNode VisitSelectorPart(UvssSelectorPartSyntax node) { var unchanged = true; var newSelectedType = (UvssSelectorPartTypeSyntax)Visit(node.SelectedType); if (newSelectedType != node.SelectedType) { unchanged = false; } var newSelectedName = (UvssSelectorPartNameSyntax)Visit(node.SelectedName); if (newSelectedName != node.SelectedName) { unchanged = false; } var newSelectedClasses = VisitList(node.SelectedClasses); if (newSelectedClasses.Node != node.SelectedClasses.Node) { unchanged = false; } var newPseudoClass = (UvssPseudoClassSyntax)Visit(node.PseudoClass); if (newPseudoClass != node.PseudoClass) { unchanged = false; } return(unchanged ? node : new UvssSelectorPartSyntax( newSelectedType, newSelectedName, newSelectedClasses, newPseudoClass)); }
/// <summary> /// Visits the specified selector part 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 VisitSelectorPart(UvssSelectorPartSyntax node) { return(VisitSyntaxNode(node)); }