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.
Files changed (112) hide show
  1. data/.gitmodules +0 -3
  2. data/.travis.yml +10 -0
  3. data/README.md +1 -1
  4. data/Rakefile +2 -0
  5. data/bin/lessc +21 -2
  6. data/less.gemspec +5 -3
  7. data/lib/less/defaults.rb +13 -0
  8. data/lib/less/js/CHANGELOG +41 -0
  9. data/lib/less/js/Makefile +21 -2
  10. data/lib/less/js/benchmark/benchmark.less +11 -11
  11. data/lib/less/js/benchmark/less-benchmark.js +3 -5
  12. data/lib/less/js/bin/lessc +52 -18
  13. data/lib/less/js/build/amd.js +6 -0
  14. data/lib/less/js/build/require-rhino.js +7 -0
  15. data/lib/less/js/dist/{less-1.0.44.js → less-1.1.4.js} +159 -45
  16. data/lib/less/js/dist/less-1.1.4.min.js +16 -0
  17. data/lib/less/js/dist/less-1.1.5.js +2805 -0
  18. data/lib/less/js/dist/less-1.1.5.min.js +9 -0
  19. data/lib/less/js/dist/less-1.1.6.js +3004 -0
  20. data/lib/less/js/dist/less-1.1.6.min.js +9 -0
  21. data/lib/less/js/dist/less-1.2.0.js +3293 -0
  22. data/lib/less/js/dist/less-1.2.0.min.js +9 -0
  23. data/lib/less/js/dist/less-1.2.1.js +3318 -0
  24. data/lib/less/js/dist/less-1.2.1.min.js +9 -0
  25. data/lib/less/js/dist/less-1.2.2.js +3337 -0
  26. data/lib/less/js/dist/less-1.2.2.min.js +9 -0
  27. data/lib/less/js/dist/less-1.3.0.js +3478 -0
  28. data/lib/less/js/dist/less-1.3.0.min.js +9 -0
  29. data/lib/less/js/dist/less-rhino-1.1.3.js +2460 -0
  30. data/lib/less/js/dist/less-rhino-1.1.5.js +2481 -0
  31. data/lib/less/js/lib/less/browser.js +38 -27
  32. data/lib/less/js/lib/less/colors.js +151 -0
  33. data/lib/less/js/lib/less/cssmin.js +355 -0
  34. data/lib/less/js/lib/less/functions.js +61 -7
  35. data/lib/less/js/lib/less/index.js +48 -37
  36. data/lib/less/js/lib/less/parser.js +327 -120
  37. data/lib/less/js/lib/less/rhino.js +62 -0
  38. data/lib/less/js/lib/less/tree/alpha.js +1 -1
  39. data/lib/less/js/lib/less/tree/anonymous.js +1 -1
  40. data/lib/less/js/lib/less/tree/assignment.js +17 -0
  41. data/lib/less/js/lib/less/tree/call.js +7 -4
  42. data/lib/less/js/lib/less/tree/color.js +9 -6
  43. data/lib/less/js/lib/less/tree/comment.js +1 -1
  44. data/lib/less/js/lib/less/tree/condition.js +42 -0
  45. data/lib/less/js/lib/less/tree/dimension.js +16 -1
  46. data/lib/less/js/lib/less/tree/directive.js +4 -2
  47. data/lib/less/js/lib/less/tree/element.js +20 -5
  48. data/lib/less/js/lib/less/tree/expression.js +2 -2
  49. data/lib/less/js/lib/less/tree/import.js +16 -14
  50. data/lib/less/js/lib/less/tree/javascript.js +1 -1
  51. data/lib/less/js/lib/less/tree/keyword.js +12 -2
  52. data/lib/less/js/lib/less/tree/media.js +114 -0
  53. data/lib/less/js/lib/less/tree/mixin.js +49 -20
  54. data/lib/less/js/lib/less/tree/operation.js +1 -1
  55. data/lib/less/js/lib/less/tree/paren.js +16 -0
  56. data/lib/less/js/lib/less/tree/quoted.js +2 -2
  57. data/lib/less/js/lib/less/tree/rule.js +8 -4
  58. data/lib/less/js/lib/less/tree/ruleset.js +49 -12
  59. data/lib/less/js/lib/less/tree/selector.js +18 -4
  60. data/lib/less/js/lib/less/tree/url.js +2 -2
  61. data/lib/less/js/lib/less/tree/value.js +1 -1
  62. data/lib/less/js/lib/less/tree/variable.js +5 -3
  63. data/lib/less/js/lib/less/tree.js +6 -2
  64. data/lib/less/js/package.json +2 -2
  65. data/lib/less/js/test/css/colors.css +16 -0
  66. data/lib/less/js/test/css/comments.css +9 -5
  67. data/lib/less/js/test/css/css-3.css +18 -2
  68. data/lib/less/js/test/css/css-escapes.css +1 -1
  69. data/lib/less/js/test/css/css.css +11 -4
  70. data/lib/less/js/test/css/functions.css +13 -0
  71. data/lib/less/js/test/css/ie-filters.css +5 -0
  72. data/lib/less/js/test/css/import.css +12 -3
  73. data/lib/less/js/test/css/media.css +60 -2
  74. data/lib/less/js/test/css/mixins-args.css +17 -2
  75. data/lib/less/js/test/css/mixins-guards.css +58 -0
  76. data/lib/less/js/test/css/mixins-important.css +17 -0
  77. data/lib/less/js/test/css/mixins-pattern.css +4 -6
  78. data/lib/less/js/test/css/mixins.css +21 -0
  79. data/lib/less/js/test/css/operations.css +3 -0
  80. data/lib/less/js/test/css/parens.css +1 -1
  81. data/lib/less/js/test/css/rulesets.css +6 -2
  82. data/lib/less/js/test/css/scope.css +6 -6
  83. data/lib/less/js/test/css/selectors.css +38 -1
  84. data/lib/less/js/test/css/strings.css +6 -4
  85. data/lib/less/js/test/css/variables.css +3 -0
  86. data/lib/less/js/test/css/whitespace.css +5 -3
  87. data/lib/less/js/test/less/colors.less +19 -0
  88. data/lib/less/js/test/less/comments.less +8 -6
  89. data/lib/less/js/test/less/css-3.less +10 -0
  90. data/lib/less/js/test/less/css.less +4 -0
  91. data/lib/less/js/test/less/functions.less +15 -1
  92. data/lib/less/js/test/less/ie-filters.less +8 -0
  93. data/lib/less/js/test/less/import/import-test-e.less +2 -0
  94. data/lib/less/js/test/less/import.less +4 -1
  95. data/lib/less/js/test/less/media.less +55 -1
  96. data/lib/less/js/test/less/mixins-args.less +20 -1
  97. data/lib/less/js/test/less/mixins-guards.less +94 -0
  98. data/lib/less/js/test/less/mixins-important.less +18 -0
  99. data/lib/less/js/test/less/mixins-pattern.less +3 -0
  100. data/lib/less/js/test/less/mixins.less +20 -0
  101. data/lib/less/js/test/less/operations.less +4 -0
  102. data/lib/less/js/test/less/selectors.less +31 -0
  103. data/lib/less/js/test/less/strings.less +2 -0
  104. data/lib/less/js/test/less/variables.less +4 -0
  105. data/lib/less/js/test/less-test.js +3 -5
  106. data/lib/less/loader.rb +24 -25
  107. data/lib/less/parser.rb +32 -6
  108. data/lib/less/version.rb +1 -1
  109. data/lib/less.rb +7 -8
  110. data/spec/less/faulty/faulty.less +3 -0
  111. data/spec/less/parser_spec.rb +28 -2
  112. 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 || v.toCSS();
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('less/tree'));
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, this.value.eval(context), this.important, this.index);
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('less/tree'));
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 ruleset = new(tree.Ruleset)(this.selectors, this.rules.slice(0));
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 > 1) {
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
- for (var s = 0; s < this.selectors.length; s++) {
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 ? ',' : (paths.length > 3 ? ',\n' : ', '));
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('less/tree'));
216
+ })(require('../tree'));
@@ -7,11 +7,25 @@ tree.Selector = function (elements) {
7
7
  }
8
8
  };
9
9
  tree.Selector.prototype.match = function (other) {
10
- if (this.elements[0].value === other.elements[0].value) {
11
- return true;
12
- } else {
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('less/tree'));
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?:\/|file:\/|data:\/)?\//.test(val.value) && paths.length > 0 && typeof(window) !== 'undefined') {
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('less/tree'));
25
+ })(require('../tree'));
@@ -21,4 +21,4 @@ tree.Value.prototype = {
21
21
  }
22
22
  };
23
23
 
24
- })(require('less/tree'));
24
+ })(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 { message: "variable " + name + " is undefined",
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('less/tree'));
26
+ })(require('../tree'));
@@ -1,13 +1,17 @@
1
- require('less/tree').find = function (obj, fun) {
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
- require('less/tree').jsify = function (obj) {
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'));
@@ -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.1.3",
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.2.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, .lots, .comments {
48
- color: grey, /* blue */ orange;
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: blue;
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 red, 6px 5px 5px yellow;
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), li:nth-child(-5n), li:nth-child(-n+2) {
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,7 @@
8
8
  background: red;
9
9
  }
10
10
  .\34 04 strong {
11
- color: fuchsia;
11
+ color: #ff00ff;
12
12
  font-weight: bold;
13
13
  }
14
14
  .trailingTest\+ {
@@ -8,7 +8,9 @@ div {
8
8
  * {
9
9
  min-width: 45em;
10
10
  }
11
- h1, h2 > a > p, h3 {
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, a:link {
38
+ a:hover,
39
+ a:link {
37
40
  color: #999;
38
41
  }
39
- p, p:first-child {
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(red), to(blue));
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);
@@ -0,0 +1,5 @@
1
+ .nav {
2
+ filter: progid:dximagetransform.microsoft.alpha(opacity=20);
3
+ filter: progid:dximagetransform.microsoft.alpha(opacity=0);
4
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr="#333333", endColorstr="#000000", GradientType=0);
5
+ }
@@ -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: red;
7
+ color: #ff0000;
4
8
  }
5
9
  .mixin {
6
10
  height: 10px;
7
- color: red;
11
+ color: #ff0000;
8
12
  }
9
13
  #import-test {
10
14
  height: 10px;
11
- color: red;
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, header > h1 {
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 black;
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 black;
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
+ }