/// <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));
        }
Beispiel #2
0
        /// <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));
 }