Skip to content

Commit b2d75e8

Browse files
committed
Allow variable interpolation in attributes everywhere that is sensible
1 parent e58662f commit b2d75e8

File tree

4 files changed

+14
-6
lines changed

4 files changed

+14
-6
lines changed

lib/less/parser.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -1140,10 +1140,12 @@ less.Parser = function Parser(env) {
11401140

11411141
if (! $('[')) return;
11421142

1143-
key = expect(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/);
1143+
if (!(key = $(this.entities.variableCurly))) {
1144+
key = expect(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/);
1145+
}
11441146

11451147
if ((op = $(/^[|~*$^]?=/))) {
1146-
val = $(this.entities.quoted) || $(/^[\w-]+/);
1148+
val = $(this.entities.quoted) || $(/^[\w-]+/) || $(this.entities.variableCurly);
11471149
}
11481150

11491151
expect(']');

lib/less/tree/element.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ tree.Attribute.prototype = {
4545
this.value = visitor.visit(this.value);
4646
},
4747
eval: function (env) {
48-
return new(tree.Attribute)(this.key,
48+
return new(tree.Attribute)(this.key.eval ? this.key.eval(env) : this.key,
4949
this.op, (this.value && this.value.eval) ? this.value.eval(env) : this.value);
5050
},
5151
toCSS: function (env) {
52-
var value = this.key;
52+
var value = this.key.toCSS ? this.key.toCSS(env) : this.key;
5353

5454
if (this.op) {
5555
value += this.op;

test/css/selectors.css

+4-1
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,9 @@ p a span {
133133
[prop*="val3"],
134134
[|prop~="val3"],
135135
[*|prop$="val3"],
136-
[ns|prop^="val3"] {
136+
[ns|prop^="val3"],
137+
[3^="val3"],
138+
[3=3],
139+
[3] {
137140
attributes: yes;
138141
}

test/less/selectors.less

+4-1
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,9 @@ a {
135135
[prop*="val@{num}"],
136136
[|prop~="val@{num}"],
137137
[*|prop$="val@{num}"],
138-
[ns|prop^="val@{num}"] {
138+
[ns|prop^="val@{num}"],
139+
[@{num}^="val@{num}"],
140+
[@{num}=@{num}],
141+
[@{num}] {
139142
attributes: yes;
140143
}

0 commit comments

Comments
 (0)