@@ -70,6 +70,7 @@ Specificity: ${readableSpecificity(specificity)}
70
70
71
71
/// Go back up the path and calculate a full selector string and specificity.
72
72
(String , int ) _getSelectorHoverValue (List <sass.AstNode > path, int index) {
73
+ var pre = "" ;
73
74
var selector = "" ;
74
75
var specificity = 0 ;
75
76
var pastImmediateStyleRule = false ;
@@ -79,13 +80,19 @@ Specificity: ${readableSpecificity(specificity)}
79
80
var node = path.elementAt (i);
80
81
if (node is sass.ComplexSelector ) {
81
82
var sel = node.span.text;
82
- if (sel.startsWith ('&' )) {
83
+ var parentSelectorIndex = sel.indexOf ('&' );
84
+ if (parentSelectorIndex != - 1 ) {
83
85
lastWasParentSelector = true ;
84
- selector = "${sel .substring (1 )} $selector " ;
86
+
87
+ pre = sel.substring (0 , parentSelectorIndex);
88
+ var post = sel.substring (parentSelectorIndex + 1 );
89
+ selector = "$post $selector " ;
85
90
specificity += node.specificity;
86
91
} else {
87
92
if (lastWasParentSelector) {
88
- selector = "$sel $selector " ;
93
+ lastWasParentSelector = false ;
94
+ selector = "$pre $sel $selector " ;
95
+ pre = "" ;
89
96
} else {
90
97
selector = "$sel $selector " ;
91
98
}
@@ -105,25 +112,32 @@ Specificity: ${readableSpecificity(specificity)}
105
112
106
113
// Just pick the first one in case of a list.
107
114
var ruleSelector = selectorList.components.first;
108
- var selectorString = ruleSelector.toString ();
115
+ var sel = ruleSelector.toString ();
109
116
110
117
if (lastWasParentSelector) {
111
118
lastWasParentSelector = false ;
112
119
113
- if (selectorString.startsWith ('&' )) {
120
+ var parentSelectorIndex = sel.indexOf ('&' );
121
+ if (parentSelectorIndex != - 1 ) {
114
122
lastWasParentSelector = true ;
115
- selector = "${selectorString .substring (1 )}$selector " ;
123
+ pre = "$pre ${sel .substring (0 , parentSelectorIndex )}" .trim ();
124
+ var post = sel.substring (parentSelectorIndex + 1 );
125
+ selector = "$post $selector " ;
116
126
} else {
117
- selector = "$selectorString $selector " ;
127
+ selector = "$pre $sel $selector " .trim ();
128
+ pre = "" ;
118
129
}
119
130
// subtract one class worth that would otherwise be duplicated
120
131
specificity -= 1000 ;
121
132
} else {
122
- if (selectorString.startsWith ('&' )) {
133
+ var parentSelectorIndex = sel.indexOf ('&' );
134
+ if (parentSelectorIndex != - 1 ) {
123
135
lastWasParentSelector = true ;
124
- selector = "${selectorString .substring (1 )} $selector " ;
136
+ pre = sel.substring (0 , parentSelectorIndex);
137
+ var post = sel.substring (parentSelectorIndex + 1 );
138
+ selector = "$post $selector " ;
125
139
} else {
126
- selector = "$selectorString $ selector " ;
140
+ selector = "$pre $ sel $ selector " . trim () ;
127
141
}
128
142
}
129
143
specificity += ruleSelector.specificity;
0 commit comments