less 2.0.4 → 2.1.0
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/.gitmodules +0 -3
- data/.travis.yml +10 -0
- data/README.md +1 -1
- data/Rakefile +2 -0
- data/bin/lessc +21 -2
- data/less.gemspec +5 -3
- data/lib/less/defaults.rb +13 -0
- data/lib/less/js/CHANGELOG +41 -0
- data/lib/less/js/Makefile +21 -2
- data/lib/less/js/benchmark/benchmark.less +11 -11
- data/lib/less/js/benchmark/less-benchmark.js +3 -5
- data/lib/less/js/bin/lessc +52 -18
- data/lib/less/js/build/amd.js +6 -0
- data/lib/less/js/build/require-rhino.js +7 -0
- data/lib/less/js/dist/{less-1.0.44.js → less-1.1.4.js} +159 -45
- data/lib/less/js/dist/less-1.1.4.min.js +16 -0
- data/lib/less/js/dist/less-1.1.5.js +2805 -0
- data/lib/less/js/dist/less-1.1.5.min.js +9 -0
- data/lib/less/js/dist/less-1.1.6.js +3004 -0
- data/lib/less/js/dist/less-1.1.6.min.js +9 -0
- data/lib/less/js/dist/less-1.2.0.js +3293 -0
- data/lib/less/js/dist/less-1.2.0.min.js +9 -0
- data/lib/less/js/dist/less-1.2.1.js +3318 -0
- data/lib/less/js/dist/less-1.2.1.min.js +9 -0
- data/lib/less/js/dist/less-1.2.2.js +3337 -0
- data/lib/less/js/dist/less-1.2.2.min.js +9 -0
- data/lib/less/js/dist/less-1.3.0.js +3478 -0
- data/lib/less/js/dist/less-1.3.0.min.js +9 -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 +38 -27
- data/lib/less/js/lib/less/colors.js +151 -0
- data/lib/less/js/lib/less/cssmin.js +355 -0
- data/lib/less/js/lib/less/functions.js +61 -7
- data/lib/less/js/lib/less/index.js +48 -37
- data/lib/less/js/lib/less/parser.js +327 -120
- data/lib/less/js/lib/less/rhino.js +62 -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 +7 -4
- 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/condition.js +42 -0
- data/lib/less/js/lib/less/tree/dimension.js +16 -1
- data/lib/less/js/lib/less/tree/directive.js +4 -2
- data/lib/less/js/lib/less/tree/element.js +20 -5
- data/lib/less/js/lib/less/tree/expression.js +2 -2
- data/lib/less/js/lib/less/tree/import.js +16 -14
- data/lib/less/js/lib/less/tree/javascript.js +1 -1
- data/lib/less/js/lib/less/tree/keyword.js +12 -2
- data/lib/less/js/lib/less/tree/media.js +114 -0
- data/lib/less/js/lib/less/tree/mixin.js +49 -20
- data/lib/less/js/lib/less/tree/operation.js +1 -1
- data/lib/less/js/lib/less/tree/paren.js +16 -0
- data/lib/less/js/lib/less/tree/quoted.js +2 -2
- data/lib/less/js/lib/less/tree/rule.js +8 -4
- data/lib/less/js/lib/less/tree/ruleset.js +49 -12
- data/lib/less/js/lib/less/tree/selector.js +18 -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 +5 -3
- data/lib/less/js/lib/less/tree.js +6 -2
- data/lib/less/js/package.json +2 -2
- data/lib/less/js/test/css/colors.css +16 -0
- data/lib/less/js/test/css/comments.css +9 -5
- data/lib/less/js/test/css/css-3.css +18 -2
- data/lib/less/js/test/css/css-escapes.css +1 -1
- data/lib/less/js/test/css/css.css +11 -4
- data/lib/less/js/test/css/functions.css +13 -0
- data/lib/less/js/test/css/ie-filters.css +5 -0
- data/lib/less/js/test/css/import.css +12 -3
- data/lib/less/js/test/css/media.css +60 -2
- data/lib/less/js/test/css/mixins-args.css +17 -2
- data/lib/less/js/test/css/mixins-guards.css +58 -0
- data/lib/less/js/test/css/mixins-important.css +17 -0
- data/lib/less/js/test/css/mixins-pattern.css +4 -6
- data/lib/less/js/test/css/mixins.css +21 -0
- data/lib/less/js/test/css/operations.css +3 -0
- data/lib/less/js/test/css/parens.css +1 -1
- data/lib/less/js/test/css/rulesets.css +6 -2
- data/lib/less/js/test/css/scope.css +6 -6
- data/lib/less/js/test/css/selectors.css +38 -1
- data/lib/less/js/test/css/strings.css +6 -4
- data/lib/less/js/test/css/variables.css +3 -0
- data/lib/less/js/test/css/whitespace.css +5 -3
- data/lib/less/js/test/less/colors.less +19 -0
- data/lib/less/js/test/less/comments.less +8 -6
- 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/functions.less +15 -1
- data/lib/less/js/test/less/ie-filters.less +8 -0
- data/lib/less/js/test/less/import/import-test-e.less +2 -0
- data/lib/less/js/test/less/import.less +4 -1
- data/lib/less/js/test/less/media.less +55 -1
- data/lib/less/js/test/less/mixins-args.less +20 -1
- data/lib/less/js/test/less/mixins-guards.less +94 -0
- data/lib/less/js/test/less/mixins-important.less +18 -0
- data/lib/less/js/test/less/mixins-pattern.less +3 -0
- data/lib/less/js/test/less/mixins.less +20 -0
- data/lib/less/js/test/less/operations.less +4 -0
- data/lib/less/js/test/less/selectors.less +31 -0
- data/lib/less/js/test/less/strings.less +2 -0
- data/lib/less/js/test/less/variables.less +4 -0
- data/lib/less/js/test/less-test.js +3 -5
- data/lib/less/loader.rb +24 -25
- data/lib/less/parser.rb +32 -6
- data/lib/less/version.rb +1 -1
- data/lib/less.rb +7 -8
- data/spec/less/faulty/faulty.less +3 -0
- data/spec/less/parser_spec.rb +28 -2
- metadata +321 -149
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
(function (tree) {
|
|
3
|
+
|
|
4
|
+
tree.Paren = function (node) {
|
|
5
|
+
this.value = node;
|
|
6
|
+
};
|
|
7
|
+
tree.Paren.prototype = {
|
|
8
|
+
toCSS: function (env) {
|
|
9
|
+
return '(' + this.value.toCSS(env) + ')';
|
|
10
|
+
},
|
|
11
|
+
eval: function (env) {
|
|
12
|
+
return new(tree.Paren)(this.value.eval(env));
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
})(require('../tree'));
|
|
@@ -20,10 +20,10 @@ tree.Quoted.prototype = {
|
|
|
20
20
|
return new(tree.JavaScript)(exp, that.index, true).eval(env).value;
|
|
21
21
|
}).replace(/@\{([\w-]+)\}/g, function (_, name) {
|
|
22
22
|
var v = new(tree.Variable)('@' + name, that.index).eval(env);
|
|
23
|
-
return v.value
|
|
23
|
+
return ('value' in v) ? v.value : v.toCSS();
|
|
24
24
|
});
|
|
25
25
|
return new(tree.Quoted)(this.quote + value + this.quote, value, this.escaped, this.index);
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
})(require('
|
|
29
|
+
})(require('../tree'));
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
(function (tree) {
|
|
2
2
|
|
|
3
|
-
tree.Rule = function (name, value, important, index) {
|
|
3
|
+
tree.Rule = function (name, value, important, index, inline) {
|
|
4
4
|
this.name = name;
|
|
5
5
|
this.value = (value instanceof tree.Value) ? value : new(tree.Value)([value]);
|
|
6
6
|
this.important = important ? ' ' + important.trim() : '';
|
|
7
7
|
this.index = index;
|
|
8
|
+
this.inline = inline || false;
|
|
8
9
|
|
|
9
10
|
if (name.charAt(0) === '@') {
|
|
10
11
|
this.variable = true;
|
|
@@ -15,12 +16,15 @@ tree.Rule.prototype.toCSS = function (env) {
|
|
|
15
16
|
else {
|
|
16
17
|
return this.name + (env.compress ? ':' : ': ') +
|
|
17
18
|
this.value.toCSS(env) +
|
|
18
|
-
this.important + ";";
|
|
19
|
+
this.important + (this.inline ? "" : ";");
|
|
19
20
|
}
|
|
20
21
|
};
|
|
21
22
|
|
|
22
23
|
tree.Rule.prototype.eval = function (context) {
|
|
23
|
-
return new(tree.Rule)(this.name,
|
|
24
|
+
return new(tree.Rule)(this.name,
|
|
25
|
+
this.value.eval(context),
|
|
26
|
+
this.important,
|
|
27
|
+
this.index, this.inline);
|
|
24
28
|
};
|
|
25
29
|
|
|
26
30
|
tree.Shorthand = function (a, b) {
|
|
@@ -35,4 +39,4 @@ tree.Shorthand.prototype = {
|
|
|
35
39
|
eval: function () { return this }
|
|
36
40
|
};
|
|
37
41
|
|
|
38
|
-
})(require('
|
|
42
|
+
})(require('../tree'));
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
(function (tree) {
|
|
2
2
|
|
|
3
|
-
tree.Ruleset = function (selectors, rules) {
|
|
3
|
+
tree.Ruleset = function (selectors, rules, strictImports) {
|
|
4
4
|
this.selectors = selectors;
|
|
5
5
|
this.rules = rules;
|
|
6
6
|
this._lookups = {};
|
|
7
|
+
this.strictImports = strictImports;
|
|
7
8
|
};
|
|
8
9
|
tree.Ruleset.prototype = {
|
|
9
10
|
eval: function (env) {
|
|
10
|
-
var
|
|
11
|
+
var selectors = this.selectors && this.selectors.map(function (s) { return s.eval(env) });
|
|
12
|
+
var ruleset = new(tree.Ruleset)(selectors, this.rules.slice(0), this.strictImports);
|
|
11
13
|
|
|
12
14
|
ruleset.root = this.root;
|
|
15
|
+
ruleset.allowImports = this.allowImports;
|
|
13
16
|
|
|
14
17
|
// push the current ruleset to the frames stack
|
|
15
18
|
env.frames.unshift(ruleset);
|
|
16
19
|
|
|
17
20
|
// Evaluate imports
|
|
18
|
-
if (ruleset.root) {
|
|
21
|
+
if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {
|
|
19
22
|
for (var i = 0; i < ruleset.rules.length; i++) {
|
|
20
23
|
if (ruleset.rules[i] instanceof tree.Import) {
|
|
21
24
|
Array.prototype.splice
|
|
@@ -90,7 +93,7 @@ tree.Ruleset.prototype = {
|
|
|
90
93
|
if (rule !== self) {
|
|
91
94
|
for (var j = 0; j < rule.selectors.length; j++) {
|
|
92
95
|
if (match = selector.match(rule.selectors[j])) {
|
|
93
|
-
if (selector.elements.length >
|
|
96
|
+
if (selector.elements.length > rule.selectors[j].elements.length) {
|
|
94
97
|
Array.prototype.push.apply(rules, rule.find(
|
|
95
98
|
new(tree.Selector)(selector.elements.slice(1)), self));
|
|
96
99
|
} else {
|
|
@@ -120,11 +123,7 @@ tree.Ruleset.prototype = {
|
|
|
120
123
|
if (context.length === 0) {
|
|
121
124
|
paths = this.selectors.map(function (s) { return [s] });
|
|
122
125
|
} else {
|
|
123
|
-
|
|
124
|
-
for (var c = 0; c < context.length; c++) {
|
|
125
|
-
paths.push(context[c].concat([this.selectors[s]]));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
126
|
+
this.joinSelectors(paths, context, this.selectors);
|
|
128
127
|
}
|
|
129
128
|
}
|
|
130
129
|
|
|
@@ -132,7 +131,7 @@ tree.Ruleset.prototype = {
|
|
|
132
131
|
for (var i = 0; i < this.rules.length; i++) {
|
|
133
132
|
rule = this.rules[i];
|
|
134
133
|
|
|
135
|
-
if (rule.rules || (rule instanceof tree.Directive)) {
|
|
134
|
+
if (rule.rules || (rule instanceof tree.Directive) || (rule instanceof tree.Media)) {
|
|
136
135
|
rulesets.push(rule.toCSS(paths, env));
|
|
137
136
|
} else if (rule instanceof tree.Comment) {
|
|
138
137
|
if (!rule.silent) {
|
|
@@ -164,7 +163,8 @@ tree.Ruleset.prototype = {
|
|
|
164
163
|
return p.map(function (s) {
|
|
165
164
|
return s.toCSS(env);
|
|
166
165
|
}).join('').trim();
|
|
167
|
-
}).join(env.compress ? ',' :
|
|
166
|
+
}).join( env.compress ? ',' : ',\n');
|
|
167
|
+
|
|
168
168
|
css.push(selector,
|
|
169
169
|
(env.compress ? '{' : ' {\n ') +
|
|
170
170
|
rules.join(env.compress ? '' : '\n ') +
|
|
@@ -174,6 +174,43 @@ tree.Ruleset.prototype = {
|
|
|
174
174
|
css.push(rulesets);
|
|
175
175
|
|
|
176
176
|
return css.join('') + (env.compress ? '\n' : '');
|
|
177
|
+
},
|
|
178
|
+
|
|
179
|
+
joinSelectors: function (paths, context, selectors) {
|
|
180
|
+
for (var s = 0; s < selectors.length; s++) {
|
|
181
|
+
this.joinSelector(paths, context, selectors[s]);
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
|
|
185
|
+
joinSelector: function (paths, context, selector) {
|
|
186
|
+
var before = [], after = [], beforeElements = [],
|
|
187
|
+
afterElements = [], hasParentSelector = false, el;
|
|
188
|
+
|
|
189
|
+
for (var i = 0; i < selector.elements.length; i++) {
|
|
190
|
+
el = selector.elements[i];
|
|
191
|
+
if (el.combinator.value.charAt(0) === '&') {
|
|
192
|
+
hasParentSelector = true;
|
|
193
|
+
}
|
|
194
|
+
if (hasParentSelector) afterElements.push(el);
|
|
195
|
+
else beforeElements.push(el);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (! hasParentSelector) {
|
|
199
|
+
afterElements = beforeElements;
|
|
200
|
+
beforeElements = [];
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if (beforeElements.length > 0) {
|
|
204
|
+
before.push(new(tree.Selector)(beforeElements));
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
if (afterElements.length > 0) {
|
|
208
|
+
after.push(new(tree.Selector)(afterElements));
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
for (var c = 0; c < context.length; c++) {
|
|
212
|
+
paths.push(before.concat(context[c]).concat(after));
|
|
213
|
+
}
|
|
177
214
|
}
|
|
178
215
|
};
|
|
179
|
-
})(require('
|
|
216
|
+
})(require('../tree'));
|
|
@@ -7,11 +7,25 @@ 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;
|
|
24
|
+
};
|
|
25
|
+
tree.Selector.prototype.eval = function (env) {
|
|
26
|
+
return new(tree.Selector)(this.elements.map(function (e) {
|
|
27
|
+
return e.eval(env);
|
|
28
|
+
}));
|
|
15
29
|
};
|
|
16
30
|
tree.Selector.prototype.toCSS = function (env) {
|
|
17
31
|
if (this._css) { return this._css }
|
|
@@ -25,4 +39,4 @@ tree.Selector.prototype.toCSS = function (env) {
|
|
|
25
39
|
}).join('');
|
|
26
40
|
};
|
|
27
41
|
|
|
28
|
-
})(require('
|
|
42
|
+
})(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,6 +1,6 @@
|
|
|
1
1
|
(function (tree) {
|
|
2
2
|
|
|
3
|
-
tree.Variable = function (name, index) { this.name = name, this.index = index };
|
|
3
|
+
tree.Variable = function (name, index, file) { this.name = name, this.index = index, this.file = file };
|
|
4
4
|
tree.Variable.prototype = {
|
|
5
5
|
eval: function (env) {
|
|
6
6
|
var variable, v, name = this.name;
|
|
@@ -15,10 +15,12 @@ tree.Variable.prototype = {
|
|
|
15
15
|
}
|
|
16
16
|
})) { return variable }
|
|
17
17
|
else {
|
|
18
|
-
throw {
|
|
18
|
+
throw { type: 'Name',
|
|
19
|
+
message: "variable " + name + " is undefined",
|
|
20
|
+
filename: this.file,
|
|
19
21
|
index: this.index };
|
|
20
22
|
}
|
|
21
23
|
}
|
|
22
24
|
};
|
|
23
25
|
|
|
24
|
-
})(require('
|
|
26
|
+
})(require('../tree'));
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
(function (tree) {
|
|
2
|
+
|
|
3
|
+
tree.find = function (obj, fun) {
|
|
2
4
|
for (var i = 0, r; i < obj.length; i++) {
|
|
3
5
|
if (r = fun.call(obj, obj[i])) { return r }
|
|
4
6
|
}
|
|
5
7
|
return null;
|
|
6
8
|
};
|
|
7
|
-
|
|
9
|
+
tree.jsify = function (obj) {
|
|
8
10
|
if (Array.isArray(obj.value) && (obj.value.length > 1)) {
|
|
9
11
|
return '[' + obj.value.map(function (v) { return v.toCSS(false) }).join(', ') + ']';
|
|
10
12
|
} else {
|
|
11
13
|
return obj.toCSS(false);
|
|
12
14
|
}
|
|
13
15
|
};
|
|
16
|
+
|
|
17
|
+
})(require('./tree'));
|
data/lib/less/js/package.json
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"keywords" : ["css", "parser", "lesscss", "browser"],
|
|
6
6
|
"author" : "Alexis Sellier <self@cloudhead.net>",
|
|
7
7
|
"contributors" : [],
|
|
8
|
-
"version" : "1.
|
|
8
|
+
"version" : "1.3.0",
|
|
9
9
|
"bin" : { "lessc": "./bin/lessc" },
|
|
10
10
|
"main" : "./lib/less/index",
|
|
11
11
|
"directories" : { "test": "./test" },
|
|
12
|
-
"engines" : { "node": ">=0.
|
|
12
|
+
"engines" : { "node": ">=0.4.0" }
|
|
13
13
|
}
|
|
@@ -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 +46,13 @@
|
|
|
40
46
|
#00ff00 {
|
|
41
47
|
color: #00ff00;
|
|
42
48
|
}
|
|
49
|
+
.lightenblue {
|
|
50
|
+
color: #3333ff;
|
|
51
|
+
}
|
|
52
|
+
.darkenblue {
|
|
53
|
+
color: #0000cc;
|
|
54
|
+
}
|
|
55
|
+
.unknowncolors {
|
|
56
|
+
color: blue2;
|
|
57
|
+
border: 2px solid superred;
|
|
58
|
+
}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
Comment
|
|
9
9
|
|
|
10
10
|
*/
|
|
11
|
-
/*
|
|
11
|
+
/*
|
|
12
12
|
* Comment Test
|
|
13
|
-
*
|
|
13
|
+
*
|
|
14
14
|
* - cloudhead (http://cloudhead.net)
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
@@ -44,9 +44,13 @@
|
|
|
44
44
|
color: grey;
|
|
45
45
|
}
|
|
46
46
|
*/
|
|
47
|
-
.selector,
|
|
48
|
-
|
|
47
|
+
.selector,
|
|
48
|
+
.lots,
|
|
49
|
+
.comments {
|
|
50
|
+
color: #808080, /* blue */ #ffa500;
|
|
51
|
+
-webkit-border-radius: 2px /* webkit only */;
|
|
52
|
+
-moz-border-radius: 8px /* moz only with operation */;
|
|
49
53
|
}
|
|
50
54
|
#last {
|
|
51
|
-
color:
|
|
55
|
+
color: #0000ff;
|
|
52
56
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.comma-delimited {
|
|
2
2
|
background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
|
|
3
|
-
text-shadow: -1px -1px 1px
|
|
3
|
+
text-shadow: -1px -1px 1px #ff0000, 6px 5px 5px #ffff00;
|
|
4
4
|
-moz-box-shadow: 0pt 0pt 2px rgba(255, 255, 255, 0.4) inset, 0pt 4px 6px rgba(255, 255, 255, 0.4) inset;
|
|
5
5
|
}
|
|
6
6
|
@font-face {
|
|
@@ -25,7 +25,9 @@ ul.comma > li:not(:only-child)::after {
|
|
|
25
25
|
ol.comma > li:nth-last-child(2)::after {
|
|
26
26
|
color: white;
|
|
27
27
|
}
|
|
28
|
-
li:nth-child(4n+1),
|
|
28
|
+
li:nth-child(4n+1),
|
|
29
|
+
li:nth-child(-5n),
|
|
30
|
+
li:nth-child(-n+2) {
|
|
29
31
|
color: white;
|
|
30
32
|
}
|
|
31
33
|
a[href^="http://"] {
|
|
@@ -40,3 +42,17 @@ form[data-disabled] {
|
|
|
40
42
|
p::before {
|
|
41
43
|
color: black;
|
|
42
44
|
}
|
|
45
|
+
#issue322 {
|
|
46
|
+
-webkit-animation: anim2 7s infinite ease-in-out;
|
|
47
|
+
}
|
|
48
|
+
@-webkit-keyframes frames {
|
|
49
|
+
0% {
|
|
50
|
+
border: 1px;
|
|
51
|
+
}
|
|
52
|
+
5.5% {
|
|
53
|
+
border: 2px;
|
|
54
|
+
}
|
|
55
|
+
100% {
|
|
56
|
+
border: 3px;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -8,7 +8,9 @@ div {
|
|
|
8
8
|
* {
|
|
9
9
|
min-width: 45em;
|
|
10
10
|
}
|
|
11
|
-
h1,
|
|
11
|
+
h1,
|
|
12
|
+
h2 > a > p,
|
|
13
|
+
h3 {
|
|
12
14
|
color: none;
|
|
13
15
|
}
|
|
14
16
|
div.class {
|
|
@@ -33,10 +35,12 @@ div#id {
|
|
|
33
35
|
font-family: 'Garamond Pro';
|
|
34
36
|
src: url("/fonts/garamond-pro.ttf");
|
|
35
37
|
}
|
|
36
|
-
a:hover,
|
|
38
|
+
a:hover,
|
|
39
|
+
a:link {
|
|
37
40
|
color: #999;
|
|
38
41
|
}
|
|
39
|
-
p,
|
|
42
|
+
p,
|
|
43
|
+
p:first-child {
|
|
40
44
|
text-transform: none;
|
|
41
45
|
}
|
|
42
46
|
q:lang(no) {
|
|
@@ -64,7 +68,7 @@ p + h1 {
|
|
|
64
68
|
width: .1em;
|
|
65
69
|
background-color: #009998;
|
|
66
70
|
background-image: url(images/image.jpg);
|
|
67
|
-
background: -webkit-gradient(linear, left top, left bottom, from(
|
|
71
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), to(#0000ff));
|
|
68
72
|
margin: ;
|
|
69
73
|
filter: alpha(opacity=100);
|
|
70
74
|
}
|
|
@@ -80,3 +84,6 @@ p + h1 {
|
|
|
80
84
|
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
|
|
81
85
|
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
|
|
82
86
|
}
|
|
87
|
+
#svg-data-uri {
|
|
88
|
+
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
|
|
89
|
+
}
|
|
@@ -24,6 +24,19 @@
|
|
|
24
24
|
lightness: 95%;
|
|
25
25
|
rounded: 11;
|
|
26
26
|
roundedpx: 3px;
|
|
27
|
+
percentage: 20%;
|
|
28
|
+
color: #ff0011;
|
|
29
|
+
}
|
|
30
|
+
#built-in .is-a {
|
|
31
|
+
color: true;
|
|
32
|
+
color: true;
|
|
33
|
+
color: true;
|
|
34
|
+
keyword: true;
|
|
35
|
+
number: true;
|
|
36
|
+
string: true;
|
|
37
|
+
pixel: true;
|
|
38
|
+
percent: true;
|
|
39
|
+
em: true;
|
|
27
40
|
}
|
|
28
41
|
#alpha {
|
|
29
42
|
alpha: rgba(153, 94, 51, 0.6);
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
@import "import-test-d.css";
|
|
2
|
+
|
|
3
|
+
@import url(http://fonts.googleapis.com/css?family=Open+Sans);
|
|
4
|
+
|
|
5
|
+
@import url(something.css) screen and (color) and (max-width: 600px);
|
|
2
6
|
#import {
|
|
3
|
-
color:
|
|
7
|
+
color: #ff0000;
|
|
4
8
|
}
|
|
5
9
|
.mixin {
|
|
6
10
|
height: 10px;
|
|
7
|
-
color:
|
|
11
|
+
color: #ff0000;
|
|
8
12
|
}
|
|
9
13
|
#import-test {
|
|
10
14
|
height: 10px;
|
|
11
|
-
color:
|
|
15
|
+
color: #ff0000;
|
|
12
16
|
width: 10px;
|
|
13
17
|
height: 30%;
|
|
14
18
|
}
|
|
19
|
+
@media screen and (max-width: 600px) {
|
|
20
|
+
body {
|
|
21
|
+
width: 100%;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
.class .sub {
|
|
6
6
|
width: 42;
|
|
7
7
|
}
|
|
8
|
-
.top,
|
|
8
|
+
.top,
|
|
9
|
+
header > h1 {
|
|
9
10
|
color: #444444;
|
|
10
11
|
}
|
|
11
12
|
}
|
|
@@ -14,8 +15,65 @@
|
|
|
14
15
|
max-width: 480;
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
|
-
@media all and (orientation:portrait) {
|
|
18
|
+
@media all and (orientation: portrait) {
|
|
18
19
|
aside {
|
|
19
20
|
float: none;
|
|
20
21
|
}
|
|
21
22
|
}
|
|
23
|
+
@media handheld and (min-width: 42), screen and (min-width: 20em) {
|
|
24
|
+
body {
|
|
25
|
+
max-width: 480px;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
@media print {
|
|
29
|
+
body {
|
|
30
|
+
padding: 20px;
|
|
31
|
+
}
|
|
32
|
+
body header {
|
|
33
|
+
background-color: red;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
@media print and (orientation: landscape) {
|
|
37
|
+
body {
|
|
38
|
+
margin-left: 20px;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
@media a, b and c {
|
|
42
|
+
body {
|
|
43
|
+
width: 95%;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
@media a and x, b and c and x, a and y, b and c and y {
|
|
47
|
+
body {
|
|
48
|
+
width: 100%;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
.a {
|
|
52
|
+
background: black;
|
|
53
|
+
}
|
|
54
|
+
@media handheld {
|
|
55
|
+
.a {
|
|
56
|
+
background: white;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
@media handheld and (max-width: 100px) {
|
|
60
|
+
.a {
|
|
61
|
+
background: red;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
.b {
|
|
65
|
+
background: black;
|
|
66
|
+
}
|
|
67
|
+
@media handheld {
|
|
68
|
+
.b {
|
|
69
|
+
background: white;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
@media handheld and (max-width: 200px) {
|
|
73
|
+
.b {
|
|
74
|
+
background: red;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
@media only screen and (max-width: 200px) {
|
|
78
|
+
width: 480px;
|
|
79
|
+
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
color: blue;
|
|
7
7
|
width: 10px;
|
|
8
8
|
height: 99%;
|
|
9
|
-
border: 2px dotted
|
|
9
|
+
border: 2px dotted #000000;
|
|
10
10
|
}
|
|
11
11
|
.one-arg {
|
|
12
12
|
width: 15px;
|
|
@@ -54,8 +54,23 @@ body {
|
|
|
54
54
|
color: red;
|
|
55
55
|
}
|
|
56
56
|
.arguments {
|
|
57
|
-
border: 1px solid
|
|
57
|
+
border: 1px solid #000000;
|
|
58
|
+
width: 1px;
|
|
58
59
|
}
|
|
59
60
|
.arguments2 {
|
|
60
61
|
border: 0px;
|
|
62
|
+
width: 0px;
|
|
63
|
+
}
|
|
64
|
+
.arguments3 {
|
|
65
|
+
border: 0px;
|
|
66
|
+
width: 0px;
|
|
67
|
+
}
|
|
68
|
+
.arguments4 {
|
|
69
|
+
border: 0 1 2 3 4;
|
|
70
|
+
rest: 1 2 3 4;
|
|
71
|
+
width: 0;
|
|
72
|
+
}
|
|
73
|
+
.edge-case {
|
|
74
|
+
border: "{";
|
|
75
|
+
width: "{";
|
|
61
76
|
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
.light1 {
|
|
2
|
+
color: white;
|
|
3
|
+
margin: 1px;
|
|
4
|
+
}
|
|
5
|
+
.light2 {
|
|
6
|
+
color: black;
|
|
7
|
+
margin: 1px;
|
|
8
|
+
}
|
|
9
|
+
.max1 {
|
|
10
|
+
width: 6;
|
|
11
|
+
}
|
|
12
|
+
.max2 {
|
|
13
|
+
width: 8;
|
|
14
|
+
}
|
|
15
|
+
.glob1 {
|
|
16
|
+
margin: auto auto;
|
|
17
|
+
}
|
|
18
|
+
.ops1 {
|
|
19
|
+
height: gt-or-eq;
|
|
20
|
+
height: lt-or-eq;
|
|
21
|
+
}
|
|
22
|
+
.ops2 {
|
|
23
|
+
height: gt-or-eq;
|
|
24
|
+
height: not-eq;
|
|
25
|
+
}
|
|
26
|
+
.ops3 {
|
|
27
|
+
height: lt-or-eq;
|
|
28
|
+
height: not-eq;
|
|
29
|
+
}
|
|
30
|
+
.default1 {
|
|
31
|
+
content: default;
|
|
32
|
+
}
|
|
33
|
+
.test1 {
|
|
34
|
+
content: "true.";
|
|
35
|
+
}
|
|
36
|
+
.test2 {
|
|
37
|
+
content: "false.";
|
|
38
|
+
}
|
|
39
|
+
.test3 {
|
|
40
|
+
content: "false.";
|
|
41
|
+
}
|
|
42
|
+
.test4 {
|
|
43
|
+
content: "false.";
|
|
44
|
+
}
|
|
45
|
+
.test5 {
|
|
46
|
+
content: "false.";
|
|
47
|
+
}
|
|
48
|
+
.bool1 {
|
|
49
|
+
content: true and true;
|
|
50
|
+
content: true;
|
|
51
|
+
content: false, true;
|
|
52
|
+
content: false and true and true, true;
|
|
53
|
+
content: false, true and true;
|
|
54
|
+
content: false, false, true;
|
|
55
|
+
content: false, true and true and true, false;
|
|
56
|
+
content: not false;
|
|
57
|
+
content: not false and false, not false;
|
|
58
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.class {
|
|
2
|
+
border: 1;
|
|
3
|
+
boxer: 1;
|
|
4
|
+
border: 2 !important;
|
|
5
|
+
boxer: 2 !important;
|
|
6
|
+
border: 3;
|
|
7
|
+
boxer: 3;
|
|
8
|
+
border: 4 !important;
|
|
9
|
+
boxer: 4 !important;
|
|
10
|
+
border: 5;
|
|
11
|
+
boxer: 5;
|
|
12
|
+
border: 0 !important;
|
|
13
|
+
boxer: 0 !important;
|
|
14
|
+
border: 9 !important;
|
|
15
|
+
border: 9;
|
|
16
|
+
boxer: 9;
|
|
17
|
+
}
|