less 2.0.7 → 2.0.8beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +4 -1
- data/less.gemspec +2 -1
- data/lib/less/js/Makefile +13 -0
- data/lib/less/js/benchmark/less-benchmark.js +1 -3
- data/lib/less/js/bin/lessc +30 -7
- data/lib/less/js/build/require-rhino.js +7 -0
- data/lib/less/js/dist/less-1.1.5.js +2805 -0
- data/lib/less/js/dist/less-1.1.5.min.js +16 -0
- data/lib/less/js/dist/less-rhino-1.1.3.js +2460 -0
- data/lib/less/js/dist/less-rhino-1.1.5.js +2481 -0
- data/lib/less/js/lib/less/browser.js +8 -2
- data/lib/less/js/lib/less/functions.js +12 -1
- data/lib/less/js/lib/less/index.js +19 -18
- data/lib/less/js/lib/less/parser.js +41 -22
- data/lib/less/js/lib/less/rhino.js +60 -0
- data/lib/less/js/lib/less/tree/alpha.js +1 -1
- data/lib/less/js/lib/less/tree/anonymous.js +1 -1
- data/lib/less/js/lib/less/tree/assignment.js +17 -0
- data/lib/less/js/lib/less/tree/call.js +1 -1
- data/lib/less/js/lib/less/tree/color.js +9 -6
- data/lib/less/js/lib/less/tree/comment.js +1 -1
- data/lib/less/js/lib/less/tree/dimension.js +1 -1
- data/lib/less/js/lib/less/tree/directive.js +1 -1
- data/lib/less/js/lib/less/tree/element.js +3 -2
- data/lib/less/js/lib/less/tree/expression.js +1 -1
- data/lib/less/js/lib/less/tree/import.js +3 -3
- data/lib/less/js/lib/less/tree/javascript.js +1 -1
- data/lib/less/js/lib/less/tree/keyword.js +1 -1
- data/lib/less/js/lib/less/tree/mixin.js +1 -1
- data/lib/less/js/lib/less/tree/operation.js +1 -1
- data/lib/less/js/lib/less/tree/quoted.js +1 -1
- data/lib/less/js/lib/less/tree/rule.js +1 -1
- data/lib/less/js/lib/less/tree/ruleset.js +3 -3
- data/lib/less/js/lib/less/tree/selector.js +13 -4
- data/lib/less/js/lib/less/tree/url.js +2 -2
- data/lib/less/js/lib/less/tree/value.js +1 -1
- data/lib/less/js/lib/less/tree/variable.js +1 -1
- data/lib/less/js/lib/less/tree.js +2 -2
- data/lib/less/js/package.json +1 -1
- data/lib/less/js/test/css/colors.css +6 -0
- data/lib/less/js/test/css/css-3.css +14 -0
- data/lib/less/js/test/css/css.css +3 -0
- data/lib/less/js/test/css/ie-filters.css +5 -0
- data/lib/less/js/test/css/import.css +2 -0
- data/lib/less/js/test/css/mixins.css +20 -0
- data/lib/less/js/test/less/colors.less +6 -0
- data/lib/less/js/test/less/css-3.less +10 -0
- data/lib/less/js/test/less/css.less +4 -0
- data/lib/less/js/test/less/ie-filters.less +8 -0
- data/lib/less/js/test/less/import.less +1 -0
- data/lib/less/js/test/less/mixins.less +20 -0
- data/lib/less/js/test/less-test.js +2 -4
- data/lib/less/loader.rb +18 -30
- data/lib/less/version.rb +1 -1
- metadata +64 -55
@@ -101,8 +101,14 @@ function loadStyles() {
|
|
101
101
|
for (var i = 0; i < styles.length; i++) {
|
102
102
|
if (styles[i].type.match(typePattern)) {
|
103
103
|
new(less.Parser)().parse(styles[i].innerHTML || '', function (e, tree) {
|
104
|
-
|
105
|
-
styles[i]
|
104
|
+
var css = tree.toCSS();
|
105
|
+
var style = styles[i];
|
106
|
+
try {
|
107
|
+
style.innerHTML = css;
|
108
|
+
} catch (_) {
|
109
|
+
style.styleSheets.cssText = css;
|
110
|
+
}
|
111
|
+
style.type = 'text/css';
|
106
112
|
});
|
107
113
|
}
|
108
114
|
}
|
@@ -86,6 +86,13 @@ tree.functions = {
|
|
86
86
|
hsl.a = clamp(hsl.a);
|
87
87
|
return hsla(hsl);
|
88
88
|
},
|
89
|
+
fade: function (color, amount) {
|
90
|
+
var hsl = color.toHSL();
|
91
|
+
|
92
|
+
hsl.a = amount.value / 100;
|
93
|
+
hsl.a = clamp(hsl.a);
|
94
|
+
return hsla(hsl);
|
95
|
+
},
|
89
96
|
spin: function (color, amount) {
|
90
97
|
var hsl = color.toHSL();
|
91
98
|
var hue = (hsl.h + amount.value) % 360;
|
@@ -147,6 +154,10 @@ tree.functions = {
|
|
147
154
|
message: "math functions take numbers as parameters"
|
148
155
|
};
|
149
156
|
}
|
157
|
+
},
|
158
|
+
argb: function (color) {
|
159
|
+
return new(tree.Anonymous)(color.toARGB());
|
160
|
+
|
150
161
|
}
|
151
162
|
};
|
152
163
|
|
@@ -171,4 +182,4 @@ function clamp(val) {
|
|
171
182
|
return Math.min(1, Math.max(0, val));
|
172
183
|
}
|
173
184
|
|
174
|
-
})(require('
|
185
|
+
})(require('./tree'));
|
@@ -1,14 +1,12 @@
|
|
1
1
|
var path = require('path'),
|
2
|
-
sys = require('
|
2
|
+
sys = require('util'),
|
3
3
|
fs = require('fs');
|
4
4
|
|
5
|
-
require.paths.unshift(path.join(__dirname, '..'));
|
6
|
-
|
7
5
|
var less = {
|
8
|
-
version: [1, 1,
|
9
|
-
Parser: require('
|
10
|
-
importer: require('
|
11
|
-
tree: require('
|
6
|
+
version: [1, 1, 5],
|
7
|
+
Parser: require('./parser').Parser,
|
8
|
+
importer: require('./parser').importer,
|
9
|
+
tree: require('./tree'),
|
12
10
|
render: function (input, options, callback) {
|
13
11
|
options = options || {};
|
14
12
|
|
@@ -16,7 +14,7 @@ var less = {
|
|
16
14
|
callback = options, options = {};
|
17
15
|
}
|
18
16
|
|
19
|
-
var parser = new(
|
17
|
+
var parser = new(less.Parser)(options),
|
20
18
|
ee;
|
21
19
|
|
22
20
|
if (callback) {
|
@@ -36,11 +34,12 @@ var less = {
|
|
36
34
|
}
|
37
35
|
},
|
38
36
|
writeError: function (ctx, options) {
|
37
|
+
options = options || {};
|
38
|
+
|
39
39
|
var message = "";
|
40
40
|
var extract = ctx.extract;
|
41
41
|
var error = [];
|
42
|
-
|
43
|
-
options = options || {};
|
42
|
+
var stylize = options.color ? less.stylize : function (str) { return str };
|
44
43
|
|
45
44
|
if (options.silent) { return }
|
46
45
|
|
@@ -74,13 +73,14 @@ var less = {
|
|
74
73
|
}
|
75
74
|
};
|
76
75
|
|
77
|
-
['color',
|
78
|
-
'keyword',
|
79
|
-
'selector',
|
80
|
-
'call',
|
81
|
-
'mixin',
|
76
|
+
['color', 'directive', 'operation', 'dimension',
|
77
|
+
'keyword', 'variable', 'ruleset', 'element',
|
78
|
+
'selector', 'quoted', 'expression', 'rule',
|
79
|
+
'call', 'url', 'alpha', 'import',
|
80
|
+
'mixin', 'comment', 'anonymous', 'value',
|
81
|
+
'javascript', 'assignment'
|
82
82
|
].forEach(function (n) {
|
83
|
-
require(
|
83
|
+
require('./tree/' + n);
|
84
84
|
});
|
85
85
|
|
86
86
|
less.Parser.importer = function (file, paths, callback) {
|
@@ -103,7 +103,7 @@ less.Parser.importer = function (file, paths, callback) {
|
|
103
103
|
if (e) sys.error(e);
|
104
104
|
|
105
105
|
new(less.Parser)({
|
106
|
-
paths: [path.dirname(pathname)],
|
106
|
+
paths: [path.dirname(pathname)].concat(paths),
|
107
107
|
filename: pathname
|
108
108
|
}).parse(data, function (e, root) {
|
109
109
|
if (e) less.writeError(e);
|
@@ -116,7 +116,7 @@ less.Parser.importer = function (file, paths, callback) {
|
|
116
116
|
}
|
117
117
|
}
|
118
118
|
|
119
|
-
require('
|
119
|
+
require('./functions');
|
120
120
|
|
121
121
|
for (var k in less) { exports[k] = less[k] }
|
122
122
|
|
@@ -134,4 +134,5 @@ function stylize(str, style) {
|
|
134
134
|
return '\033[' + styles[style][0] + 'm' + str +
|
135
135
|
'\033[' + styles[style][1] + 'm';
|
136
136
|
}
|
137
|
+
less.stylize = stylize;
|
137
138
|
|
@@ -1,12 +1,22 @@
|
|
1
1
|
var less, tree;
|
2
2
|
|
3
|
-
if (typeof(
|
3
|
+
if (typeof environment === "object" && ({}).toString.call(environment) === "[object Environment]") {
|
4
|
+
// Rhino
|
5
|
+
// Details on how to detect Rhino: https://github.com/ringo/ringojs/issues/88
|
6
|
+
less = {};
|
7
|
+
tree = less.tree = {};
|
8
|
+
less.mode = 'rhino';
|
9
|
+
} else if (typeof(window) === 'undefined') {
|
10
|
+
// Node.js
|
4
11
|
less = exports,
|
5
|
-
tree = require('
|
12
|
+
tree = require('./tree');
|
13
|
+
less.mode = 'node';
|
6
14
|
} else {
|
15
|
+
// Browser
|
7
16
|
if (typeof(window.less) === 'undefined') { window.less = {} }
|
8
17
|
less = window.less,
|
9
18
|
tree = window.less.tree = {};
|
19
|
+
less.mode = 'browser';
|
10
20
|
}
|
11
21
|
//
|
12
22
|
// less.js - parser
|
@@ -476,7 +486,7 @@ less.Parser = function Parser(env) {
|
|
476
486
|
//
|
477
487
|
keyword: function () {
|
478
488
|
var k;
|
479
|
-
if (k = $(/^[
|
489
|
+
if (k = $(/^[_A-Za-z-][_A-Za-z0-9-]*/)) { return new(tree.Keyword)(k) }
|
480
490
|
},
|
481
491
|
|
482
492
|
//
|
@@ -492,7 +502,7 @@ less.Parser = function Parser(env) {
|
|
492
502
|
call: function () {
|
493
503
|
var name, args, index = i;
|
494
504
|
|
495
|
-
if (! (name = /^([\w-]
|
505
|
+
if (! (name = /^([\w-]+|%|progid:[\w\.]+)\(/.exec(chunks[j]))) return;
|
496
506
|
|
497
507
|
name = name[1].toLowerCase();
|
498
508
|
|
@@ -512,7 +522,7 @@ less.Parser = function Parser(env) {
|
|
512
522
|
arguments: function () {
|
513
523
|
var args = [], arg;
|
514
524
|
|
515
|
-
while (arg = $(this.expression)) {
|
525
|
+
while (arg = $(this.entities.assignment) || $(this.expression)) {
|
516
526
|
args.push(arg);
|
517
527
|
if (! $(',')) { break }
|
518
528
|
}
|
@@ -524,6 +534,19 @@ less.Parser = function Parser(env) {
|
|
524
534
|
$(this.entities.quoted);
|
525
535
|
},
|
526
536
|
|
537
|
+
// Assignments are argument entities for calls.
|
538
|
+
// They are present in ie filter properties as shown below.
|
539
|
+
//
|
540
|
+
// filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* )
|
541
|
+
//
|
542
|
+
|
543
|
+
assignment: function () {
|
544
|
+
var key, value;
|
545
|
+
if ((key = $(/^\w+(?=\s?=)/i)) && $('=') && (value = $(this.entity))) {
|
546
|
+
return new(tree.Assignment)(key, value);
|
547
|
+
}
|
548
|
+
},
|
549
|
+
|
527
550
|
//
|
528
551
|
// Parse url() tokens
|
529
552
|
//
|
@@ -670,7 +693,7 @@ less.Parser = function Parser(env) {
|
|
670
693
|
if (s !== '.' && s !== '#') { return }
|
671
694
|
|
672
695
|
while (e = $(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) {
|
673
|
-
elements.push(new(tree.Element)(c, e));
|
696
|
+
elements.push(new(tree.Element)(c, e, i));
|
674
697
|
c = $('>');
|
675
698
|
}
|
676
699
|
$('(') && (args = $(this.entities.arguments)) && $(')');
|
@@ -787,12 +810,13 @@ less.Parser = function Parser(env) {
|
|
787
810
|
var e, t, c;
|
788
811
|
|
789
812
|
c = $(this.combinator);
|
790
|
-
e = $(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/) ||
|
813
|
+
e = $(/^(?:\d+\.\d+|\d+)%/) || $(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/) ||
|
814
|
+
$('*') || $(this.attribute) || $(/^\([^)@]+\)/);
|
791
815
|
|
792
|
-
if (e) { return new(tree.Element)(c, e) }
|
816
|
+
if (e) { return new(tree.Element)(c, e, i) }
|
793
817
|
|
794
|
-
if (c.value && c.value
|
795
|
-
|
818
|
+
if (c.value && c.value.charAt(0) === '&') {
|
819
|
+
return new(tree.Element)(c, null, i);
|
796
820
|
}
|
797
821
|
},
|
798
822
|
|
@@ -889,16 +913,11 @@ less.Parser = function Parser(env) {
|
|
889
913
|
var selectors = [], s, rules, match;
|
890
914
|
save();
|
891
915
|
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
selectors.push(s);
|
898
|
-
$(this.comment);
|
899
|
-
if (! $(',')) { break }
|
900
|
-
$(this.comment);
|
901
|
-
}
|
916
|
+
while (s = $(this.selector)) {
|
917
|
+
selectors.push(s);
|
918
|
+
$(this.comment);
|
919
|
+
if (! $(',')) { break }
|
920
|
+
$(this.comment);
|
902
921
|
}
|
903
922
|
|
904
923
|
if (selectors.length > 0 && (rules = $(this.block))) {
|
@@ -966,7 +985,7 @@ less.Parser = function Parser(env) {
|
|
966
985
|
|
967
986
|
if (value = $(this['import'])) {
|
968
987
|
return value;
|
969
|
-
} else if (name = $(/^@media|@page/) || $(/^@(?:-webkit-)
|
988
|
+
} else if (name = $(/^@media|@page/) || $(/^@(?:-webkit-|-moz-|-o-)[a-z0-9-]+/) || $('keyframes')) {
|
970
989
|
types = ($(/^[^{]+/) || '').trim();
|
971
990
|
if (rules = $(this.block)) {
|
972
991
|
return new(tree.Directive)(name + " " + types, rules);
|
@@ -1093,7 +1112,7 @@ less.Parser = function Parser(env) {
|
|
1093
1112
|
};
|
1094
1113
|
};
|
1095
1114
|
|
1096
|
-
if (
|
1115
|
+
if (less.mode === 'browser' || less.mode === 'rhino') {
|
1097
1116
|
//
|
1098
1117
|
// Used by `@import` directives
|
1099
1118
|
//
|
@@ -0,0 +1,60 @@
|
|
1
|
+
var name;
|
2
|
+
|
3
|
+
function loadStyleSheet(sheet, callback, reload, remaining) {
|
4
|
+
var sheetName = name.slice(0, name.lastIndexOf('/') + 1) + sheet.href;
|
5
|
+
var input = readFile(sheetName);
|
6
|
+
var parser = new less.Parser();
|
7
|
+
parser.parse(input, function (e, root) {
|
8
|
+
if (e) {
|
9
|
+
print("Error: " + e);
|
10
|
+
quit(1);
|
11
|
+
}
|
12
|
+
callback(root, sheet, { local: false, lastModified: 0, remaining: remaining });
|
13
|
+
});
|
14
|
+
|
15
|
+
// callback({}, sheet, { local: true, remaining: remaining });
|
16
|
+
}
|
17
|
+
|
18
|
+
function writeFile(filename, content) {
|
19
|
+
var fstream = new java.io.FileWriter(filename);
|
20
|
+
var out = new java.io.BufferedWriter(fstream);
|
21
|
+
out.write(content);
|
22
|
+
out.close();
|
23
|
+
}
|
24
|
+
|
25
|
+
// Command line integration via Rhino
|
26
|
+
(function (args) {
|
27
|
+
name = args[0];
|
28
|
+
var output = args[1];
|
29
|
+
|
30
|
+
if (!name) {
|
31
|
+
print('No files present in the fileset; Check your pattern match in build.xml');
|
32
|
+
quit(1);
|
33
|
+
}
|
34
|
+
path = name.split("/");path.pop();path=path.join("/")
|
35
|
+
|
36
|
+
var input = readFile(name);
|
37
|
+
|
38
|
+
if (!input) {
|
39
|
+
print('lesscss: couldn\'t open file ' + name);
|
40
|
+
quit(1);
|
41
|
+
}
|
42
|
+
|
43
|
+
var result;
|
44
|
+
var parser = new less.Parser();
|
45
|
+
parser.parse(input, function (e, root) {
|
46
|
+
if (e) {
|
47
|
+
quit(1);
|
48
|
+
} else {
|
49
|
+
result = root.toCSS();
|
50
|
+
if (output) {
|
51
|
+
writeFile(output, result);
|
52
|
+
print("Written to " + output);
|
53
|
+
} else {
|
54
|
+
print(result);
|
55
|
+
}
|
56
|
+
quit(0);
|
57
|
+
}
|
58
|
+
});
|
59
|
+
print("done");
|
60
|
+
}(arguments));
|
@@ -0,0 +1,17 @@
|
|
1
|
+
(function (tree) {
|
2
|
+
|
3
|
+
tree.Assignment = function (key, val) {
|
4
|
+
this.key = key;
|
5
|
+
this.value = val;
|
6
|
+
};
|
7
|
+
tree.Assignment.prototype = {
|
8
|
+
toCSS: function () {
|
9
|
+
return this.key + '=' + (this.value.toCSS ? this.value.toCSS() : this.value);
|
10
|
+
},
|
11
|
+
eval: function (env) {
|
12
|
+
if (this.value.eval) { this.value = this.value.eval(env) }
|
13
|
+
return this;
|
14
|
+
}
|
15
|
+
};
|
16
|
+
|
17
|
+
})(require('../tree'));
|
@@ -15,11 +15,6 @@ tree.Color = function (rgb, a) {
|
|
15
15
|
this.rgb = rgb.match(/.{2}/g).map(function (c) {
|
16
16
|
return parseInt(c, 16);
|
17
17
|
});
|
18
|
-
} else if (rgb.length == 8) {
|
19
|
-
this.alpha = parseInt(rgb.substring(0,2), 16) / 255.0;
|
20
|
-
this.rgb = rgb.substr(2).match(/.{2}/g).map(function (c) {
|
21
|
-
return parseInt(c, 16);
|
22
|
-
});
|
23
18
|
} else {
|
24
19
|
this.rgb = rgb.split('').map(function (c) {
|
25
20
|
return parseInt(c + c, 16);
|
@@ -91,8 +86,16 @@ tree.Color.prototype = {
|
|
91
86
|
h /= 6;
|
92
87
|
}
|
93
88
|
return { h: h * 360, s: s, l: l, a: a };
|
89
|
+
},
|
90
|
+
toARGB: function () {
|
91
|
+
var argb = [Math.round(this.alpha * 255)].concat(this.rgb);
|
92
|
+
return '#' + argb.map(function (i) {
|
93
|
+
i = Math.round(i);
|
94
|
+
i = (i > 255 ? 255 : (i < 0 ? 0 : i)).toString(16);
|
95
|
+
return i.length === 1 ? '0' + i : i;
|
96
|
+
}).join('');
|
94
97
|
}
|
95
98
|
};
|
96
99
|
|
97
100
|
|
98
|
-
})(require('
|
101
|
+
})(require('../tree'));
|
@@ -1,9 +1,10 @@
|
|
1
1
|
(function (tree) {
|
2
2
|
|
3
|
-
tree.Element = function (combinator, value) {
|
3
|
+
tree.Element = function (combinator, value, index) {
|
4
4
|
this.combinator = combinator instanceof tree.Combinator ?
|
5
5
|
combinator : new(tree.Combinator)(combinator);
|
6
6
|
this.value = value ? value.trim() : "";
|
7
|
+
this.index = index;
|
7
8
|
};
|
8
9
|
tree.Element.prototype.toCSS = function (env) {
|
9
10
|
return this.combinator.toCSS(env || {}) + this.value;
|
@@ -32,4 +33,4 @@ tree.Combinator.prototype.toCSS = function (env) {
|
|
32
33
|
}[this.value];
|
33
34
|
};
|
34
35
|
|
35
|
-
})(require('
|
36
|
+
})(require('../tree'));
|
@@ -18,12 +18,12 @@ tree.Import = function (path, imports) {
|
|
18
18
|
|
19
19
|
// The '.less' extension is optional
|
20
20
|
if (path instanceof tree.Quoted) {
|
21
|
-
this.path = /\.(le?|c)ss
|
21
|
+
this.path = /\.(le?|c)ss(\?.*)?$/.test(path.value) ? path.value : path.value + '.less';
|
22
22
|
} else {
|
23
23
|
this.path = path.value.value || path.value;
|
24
24
|
}
|
25
25
|
|
26
|
-
this.css = /css
|
26
|
+
this.css = /css(\?.*)?$/.test(this.path);
|
27
27
|
|
28
28
|
// Only pre-compile .less files
|
29
29
|
if (! this.css) {
|
@@ -74,4 +74,4 @@ tree.Import.prototype = {
|
|
74
74
|
}
|
75
75
|
};
|
76
76
|
|
77
|
-
})(require('
|
77
|
+
})(require('../tree'));
|
@@ -90,7 +90,7 @@ tree.Ruleset.prototype = {
|
|
90
90
|
if (rule !== self) {
|
91
91
|
for (var j = 0; j < rule.selectors.length; j++) {
|
92
92
|
if (match = selector.match(rule.selectors[j])) {
|
93
|
-
if (selector.elements.length >
|
93
|
+
if (selector.elements.length > rule.selectors[j].elements.length) {
|
94
94
|
Array.prototype.push.apply(rules, rule.find(
|
95
95
|
new(tree.Selector)(selector.elements.slice(1)), self));
|
96
96
|
} else {
|
@@ -184,7 +184,7 @@ tree.Ruleset.prototype = {
|
|
184
184
|
|
185
185
|
for (var i = 0; i < selector.elements.length; i++) {
|
186
186
|
el = selector.elements[i];
|
187
|
-
if (el.combinator.value
|
187
|
+
if (el.combinator.value.charAt(0) === '&') {
|
188
188
|
hasParentSelector = true;
|
189
189
|
}
|
190
190
|
if (hasParentSelector) afterElements.push(el);
|
@@ -209,4 +209,4 @@ tree.Ruleset.prototype = {
|
|
209
209
|
}
|
210
210
|
}
|
211
211
|
};
|
212
|
-
})(require('
|
212
|
+
})(require('../tree'));
|
@@ -7,11 +7,20 @@ tree.Selector = function (elements) {
|
|
7
7
|
}
|
8
8
|
};
|
9
9
|
tree.Selector.prototype.match = function (other) {
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
var len = this.elements.length,
|
11
|
+
olen = other.elements.length,
|
12
|
+
max = Math.min(len, olen);
|
13
|
+
|
14
|
+
if (len < olen) {
|
13
15
|
return false;
|
16
|
+
} else {
|
17
|
+
for (var i = 0; i < max; i++) {
|
18
|
+
if (this.elements[i].value !== other.elements[i].value) {
|
19
|
+
return false;
|
20
|
+
}
|
21
|
+
}
|
14
22
|
}
|
23
|
+
return true;
|
15
24
|
};
|
16
25
|
tree.Selector.prototype.toCSS = function (env) {
|
17
26
|
if (this._css) { return this._css }
|
@@ -25,4 +34,4 @@ tree.Selector.prototype.toCSS = function (env) {
|
|
25
34
|
}).join('');
|
26
35
|
};
|
27
36
|
|
28
|
-
})(require('
|
37
|
+
})(require('../tree'));
|
@@ -5,7 +5,7 @@ tree.URL = function (val, paths) {
|
|
5
5
|
this.attrs = val;
|
6
6
|
} else {
|
7
7
|
// Add the base path if the URL is relative and we are in the browser
|
8
|
-
if (!/^(?:https
|
8
|
+
if (typeof(window) !== 'undefined' && !/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(val.value) && paths.length > 0) {
|
9
9
|
val.value = paths[0] + (val.value.charAt(0) === '/' ? val.value.slice(1) : val.value);
|
10
10
|
}
|
11
11
|
this.value = val;
|
@@ -22,4 +22,4 @@ tree.URL.prototype = {
|
|
22
22
|
}
|
23
23
|
};
|
24
24
|
|
25
|
-
})(require('
|
25
|
+
})(require('../tree'));
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require('
|
1
|
+
require('./tree').find = function (obj, fun) {
|
2
2
|
for (var i = 0, r; i < obj.length; i++) {
|
3
3
|
if (r = fun.call(obj, obj[i])) { return r }
|
4
4
|
}
|
5
5
|
return null;
|
6
6
|
};
|
7
|
-
require('
|
7
|
+
require('./tree').jsify = function (obj) {
|
8
8
|
if (Array.isArray(obj.value) && (obj.value.length > 1)) {
|
9
9
|
return '[' + obj.value.map(function (v) { return v.toCSS(false) }).join(', ') + ']';
|
10
10
|
} else {
|
data/lib/less/js/package.json
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
"keywords" : ["css", "parser", "lesscss", "browser"],
|
6
6
|
"author" : "Alexis Sellier <self@cloudhead.net>",
|
7
7
|
"contributors" : [],
|
8
|
-
"version" : "1.1.
|
8
|
+
"version" : "1.1.5",
|
9
9
|
"bin" : { "lessc": "./bin/lessc" },
|
10
10
|
"main" : "./lib/less/index",
|
11
11
|
"directories" : { "test": "./test" },
|
@@ -7,6 +7,9 @@
|
|
7
7
|
#yelow #rgba {
|
8
8
|
color: rgba(255, 238, 170, 0.1);
|
9
9
|
}
|
10
|
+
#yelow #argb {
|
11
|
+
color: #1affeeaa;
|
12
|
+
}
|
10
13
|
#blue #short {
|
11
14
|
color: #00f;
|
12
15
|
}
|
@@ -16,6 +19,9 @@
|
|
16
19
|
#blue #rgba {
|
17
20
|
color: rgba(0, 0, 255, 0.1);
|
18
21
|
}
|
22
|
+
#blue #argb {
|
23
|
+
color: #1a0000ff;
|
24
|
+
}
|
19
25
|
#alpha #hsla {
|
20
26
|
color: rgba(61, 45, 41, 0.6);
|
21
27
|
}
|
@@ -40,3 +40,17 @@ form[data-disabled] {
|
|
40
40
|
p::before {
|
41
41
|
color: black;
|
42
42
|
}
|
43
|
+
#issue322 {
|
44
|
+
-webkit-animation: anim2 7s infinite ease-in-out;
|
45
|
+
}
|
46
|
+
@-webkit-keyframes frames {
|
47
|
+
0% {
|
48
|
+
border: 1px;
|
49
|
+
}
|
50
|
+
5.5% {
|
51
|
+
border: 2px;
|
52
|
+
}
|
53
|
+
100% {
|
54
|
+
border: 3px;
|
55
|
+
}
|
56
|
+
}
|