less 2.0.7 → 2.0.8beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
}
|