diff --git a/lib/less/parser.js b/lib/less/parser.js index 09899751..76867132 100644 --- a/lib/less/parser.js +++ b/lib/less/parser.js @@ -1343,9 +1343,13 @@ less.Parser = function Parser(env) { // combinator: function () { var c = input.charAt(i); - - if (c === '>' || c === '+' || c === '~' || c === '|') { + + if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') { i++; + if (input.charAt(i) === '^') { + c = '^^'; + i++; + } while (isWhitespace(input, i)) { i++; } return new(tree.Combinator)(c); } else if (isWhitespace(input, i - 1)) { diff --git a/lib/less/tree/element.js b/lib/less/tree/element.js index a9b98738..3869f6c1 100644 --- a/lib/less/tree/element.js +++ b/lib/less/tree/element.js @@ -84,7 +84,9 @@ tree.Combinator.prototype = { '+' : ' + ', '~' : ' ~ ', '>' : ' > ', - '|' : '|' + '|' : '|', + '^' : ' ^ ', + '^^' : ' ^^ ' }, _outputMapCompressed: { '' : '', @@ -93,7 +95,9 @@ tree.Combinator.prototype = { '+' : '+', '~' : '~', '>' : '>', - '|' : '|' + '|' : '|', + '^' : '^', + '^^' : '^^' }, genCSS: function (env, output) { output.add((env.compress ? this._outputMapCompressed : this._outputMap)[this.value]); diff --git a/test/css/compression/compression.css b/test/css/compression/compression.css index 8d6786e5..f9cc90a3 100644 --- a/test/css/compression/compression.css +++ b/test/css/compression/compression.css @@ -1,3 +1,3 @@ #colours{color1:#fea;color2:#fea;color3:rgba(255,238,170,0.1);string:"#ffeeaa";/*! but not this type Note preserved whitespace - */}dimensions{val:.1px;val:0;val:4cm;val:.2;val:5;angles-must-have-unit:0deg;durations-must-have-unit:0s;length-doesnt-have-unit:0;width:auto\9}@page{marks:none;@top-left-corner{vertical-align:top}@top-left{vertical-align:top}} \ No newline at end of file + */}dimensions{val:.1px;val:0;val:4cm;val:.2;val:5;angles-must-have-unit:0deg;durations-must-have-unit:0s;length-doesnt-have-unit:0;width:auto\9}@page{marks:none;@top-left-corner{vertical-align:top}@top-left{vertical-align:top}}.shadow^.dom,body^^.shadow{display:done} \ No newline at end of file diff --git a/test/css/css-3.css b/test/css/css-3.css index 93b0a001..4e1865db 100644 --- a/test/css/css-3.css +++ b/test/css/css-3.css @@ -123,3 +123,7 @@ h1 { ::distributed(input::placeholder) { color: #b3b3b3; } +.shadow ^ .dom, +body ^^ .shadow { + display: done; +} diff --git a/test/less/compression/compression.less b/test/less/compression/compression.less index e6a0fe79..c196336a 100644 --- a/test/less/compression/compression.less +++ b/test/less/compression/compression.less @@ -29,4 +29,8 @@ dimensions { @top-left { vertical-align: top; } -} \ No newline at end of file +} +.shadow ^ .dom, +body ^^ .shadow { + display: done; +} diff --git a/test/less/css-3.less b/test/less/css-3.less index c31a6eb2..06a5d2c5 100644 --- a/test/less/css-3.less +++ b/test/less/css-3.less @@ -122,4 +122,8 @@ h1 { color: green; } } ::distributed(input::placeholder) { color: #b3b3b3; +} +.shadow ^ .dom, +body ^^ .shadow { + display: done; } \ No newline at end of file