less 1.2.2 → 1.3.3

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 (197) hide show
  1. package/.npmignore +1 -0
  2. package/CHANGELOG.md +118 -0
  3. package/CONTRIBUTING.md +50 -0
  4. package/Makefile +14 -2
  5. package/benchmark/benchmark.less +11 -11
  6. package/benchmark/less-benchmark.js +1 -1
  7. package/bin/lessc +77 -21
  8. package/build/amd.js +6 -0
  9. package/build/ecma-5.js +120 -0
  10. package/build/header.js +7 -0
  11. package/build/require-rhino.js +7 -0
  12. package/build/require.js +7 -0
  13. package/lib/less/browser.js +192 -53
  14. package/lib/less/colors.js +1 -0
  15. package/lib/less/functions.js +159 -10
  16. package/lib/less/index.js +125 -56
  17. package/lib/less/lessc_helper.js +62 -0
  18. package/lib/less/parser.js +391 -154
  19. package/lib/less/rhino.js +84 -23
  20. package/lib/less/tree/anonymous.js +15 -1
  21. package/lib/less/tree/assignment.js +3 -1
  22. package/lib/less/tree/call.js +12 -6
  23. package/lib/less/tree/color.js +10 -0
  24. package/lib/less/tree/dimension.js +3 -1
  25. package/lib/less/tree/directive.js +10 -10
  26. package/lib/less/tree/element.js +8 -7
  27. package/lib/less/tree/import.js +17 -14
  28. package/lib/less/tree/media.js +121 -0
  29. package/lib/less/tree/mixin.js +133 -45
  30. package/lib/less/tree/operation.js +5 -0
  31. package/lib/less/tree/quoted.js +15 -1
  32. package/lib/less/tree/ratio.js +13 -0
  33. package/lib/less/tree/rule.js +7 -0
  34. package/lib/less/tree/ruleset.js +236 -37
  35. package/lib/less/tree/selector.js +21 -11
  36. package/lib/less/tree/unicode-descriptor.js +13 -0
  37. package/lib/less/tree/url.js +16 -14
  38. package/lib/less/tree/variable.js +13 -1
  39. package/lib/less/tree.js +28 -0
  40. package/package.json +13 -3
  41. package/test/browser/common.js +74 -0
  42. package/test/browser/css/relative-urls/urls.css +36 -0
  43. package/test/browser/css/rootpath/urls.css +36 -0
  44. package/test/browser/css/rootpath-relative/urls.css +36 -0
  45. package/test/browser/css/urls.css +36 -0
  46. package/test/browser/jasmine-html.js +681 -0
  47. package/test/browser/jasmine.css +82 -0
  48. package/test/browser/jasmine.js +2600 -0
  49. package/test/browser/less/imports/urls.less +4 -0
  50. package/test/browser/less/imports/urls2.less +4 -0
  51. package/test/browser/less/relative-urls/urls.less +33 -0
  52. package/test/browser/less/rootpath/urls.less +33 -0
  53. package/test/browser/less/rootpath-relative/urls.less +33 -0
  54. package/test/browser/less/urls.less +33 -0
  55. package/test/browser/phantom-runner.js +139 -0
  56. package/test/browser/runner-browser.js +3 -0
  57. package/test/browser/runner-main.js +15 -0
  58. package/test/browser/runner-relative-urls.js +4 -0
  59. package/test/browser/runner-rootpath-relative.js +5 -0
  60. package/test/browser/runner-rootpath.js +4 -0
  61. package/test/browser/template.htm +10 -0
  62. package/test/browser-test-prepare.js +29 -0
  63. package/test/css/charsets.css +1 -0
  64. package/test/css/colors.css +22 -0
  65. package/test/css/comments.css +7 -0
  66. package/test/css/css-3.css +57 -2
  67. package/test/css/css-escapes.css +4 -0
  68. package/test/css/css.css +11 -11
  69. package/test/css/debug/linenumbers-all.css +43 -0
  70. package/test/css/debug/linenumbers-comments.css +35 -0
  71. package/test/css/debug/linenumbers-mediaquery.css +35 -0
  72. package/test/css/functions.css +59 -2
  73. package/test/css/ie-filters.css +7 -3
  74. package/test/css/import-once.css +3 -0
  75. package/test/css/import.css +7 -9
  76. package/test/css/javascript.css +3 -2
  77. package/test/css/media.css +168 -0
  78. package/test/css/mixins-args.css +35 -4
  79. package/test/css/mixins-guards.css +13 -0
  80. package/test/css/mixins-important.css +21 -0
  81. package/test/css/mixins-named-args.css +27 -0
  82. package/test/css/mixins-pattern.css +4 -6
  83. package/test/css/mixins.css +50 -0
  84. package/test/css/scope.css +20 -0
  85. package/test/css/selectors.css +76 -0
  86. package/test/css/static-urls/urls.css +42 -0
  87. package/test/css/strings.css +2 -2
  88. package/test/css/urls.css +42 -0
  89. package/test/css/variables.css +0 -1
  90. package/test/css/whitespace.css +4 -0
  91. package/test/less/charsets.less +3 -0
  92. package/test/less/colors.less +27 -0
  93. package/test/less/comments.less +12 -0
  94. package/test/less/css-3.less +54 -6
  95. package/test/less/css-escapes.less +6 -1
  96. package/test/less/css.less +14 -12
  97. package/test/less/debug/import/test.less +25 -0
  98. package/test/less/debug/linenumbers.less +23 -0
  99. package/test/less/errors/bad-variable-declaration1.less +1 -0
  100. package/test/less/errors/bad-variable-declaration1.txt +2 -0
  101. package/test/less/errors/comment-in-selector.less +1 -0
  102. package/test/less/errors/comment-in-selector.txt +2 -0
  103. package/test/less/errors/import-missing.less +1 -0
  104. package/test/less/errors/import-missing.txt +3 -0
  105. package/test/less/errors/import-no-semi.less +1 -0
  106. package/test/less/errors/import-no-semi.txt +2 -0
  107. package/test/less/errors/import-subfolder1.less +1 -0
  108. package/test/less/errors/import-subfolder1.txt +3 -0
  109. package/test/less/errors/import-subfolder2.less +1 -0
  110. package/test/less/errors/import-subfolder2.txt +2 -0
  111. package/test/less/errors/imports/import-subfolder1.less +1 -0
  112. package/test/less/errors/imports/import-subfolder2.less +1 -0
  113. package/test/less/errors/imports/import-test.less +4 -0
  114. package/test/less/errors/imports/subfolder/mixin-not-defined.less +1 -0
  115. package/test/less/errors/imports/subfolder/parse-error-curly-bracket.less +1 -0
  116. package/test/less/errors/javascript-error.less +3 -0
  117. package/test/less/errors/javascript-error.txt +4 -0
  118. package/test/less/errors/mixed-mixin-definition-args-1.less +6 -0
  119. package/test/less/errors/mixed-mixin-definition-args-1.txt +4 -0
  120. package/test/less/errors/mixed-mixin-definition-args-2.less +6 -0
  121. package/test/less/errors/mixed-mixin-definition-args-2.txt +4 -0
  122. package/test/less/errors/mixin-not-defined.less +11 -0
  123. package/test/less/errors/mixin-not-defined.txt +3 -0
  124. package/test/less/errors/mixin-not-matched.less +6 -0
  125. package/test/less/errors/mixin-not-matched.txt +3 -0
  126. package/test/less/errors/mixin-not-matched2.less +6 -0
  127. package/test/less/errors/mixin-not-matched2.txt +3 -0
  128. package/test/less/errors/parse-error-curly-bracket.less +1 -0
  129. package/test/less/errors/parse-error-curly-bracket.txt +2 -0
  130. package/test/less/errors/parse-error-missing-bracket.less +2 -0
  131. package/test/less/errors/parse-error-missing-bracket.txt +2 -0
  132. package/test/less/errors/parse-error-with-import.less +13 -0
  133. package/test/less/errors/parse-error-with-import.txt +4 -0
  134. package/test/less/errors/property-ie5-hack.less +3 -0
  135. package/test/less/errors/property-ie5-hack.txt +4 -0
  136. package/test/less/errors/recursive-variable.less +1 -0
  137. package/test/less/errors/recursive-variable.txt +2 -0
  138. package/test/less/functions.less +64 -2
  139. package/test/less/ie-filters.less +7 -0
  140. package/test/less/import/deeper/import-once-test-a.less +1 -0
  141. package/test/less/import/import-and-relative-paths-test.less +6 -0
  142. package/test/less/import/import-charset-test.less +1 -0
  143. package/test/less/import/import-once-test-c.less +6 -0
  144. package/test/less/import/import-test-a.less +1 -0
  145. package/test/less/import/import-test-c.less +0 -1
  146. package/test/less/import/imports/font.less +8 -0
  147. package/test/less/import/imports/logo.less +5 -0
  148. package/test/less/import/urls.less +1 -0
  149. package/test/less/import-once.less +4 -0
  150. package/test/less/import.less +2 -1
  151. package/test/less/javascript.less +4 -2
  152. package/test/less/media.less +169 -1
  153. package/test/less/mixins-args.less +54 -11
  154. package/test/less/mixins-guards.less +30 -0
  155. package/test/less/mixins-important.less +4 -0
  156. package/test/less/mixins-named-args.less +36 -0
  157. package/test/less/mixins-pattern.less +3 -0
  158. package/test/less/mixins.less +47 -0
  159. package/test/less/scope.less +48 -1
  160. package/test/less/selectors.less +88 -0
  161. package/test/less/static-urls/urls.less +33 -0
  162. package/test/less/strings.less +1 -1
  163. package/test/less/urls.less +33 -0
  164. package/test/less/variables.less +0 -1
  165. package/test/less/whitespace.less +7 -0
  166. package/test/less-test.js +145 -36
  167. package/bench.css +0 -5943
  168. package/benchmark/b1.less +0 -3980
  169. package/dist/less-1.1.0.js +0 -2695
  170. package/dist/less-1.1.0.min.js +0 -16
  171. package/dist/less-1.1.1.js +0 -2710
  172. package/dist/less-1.1.1.min.js +0 -16
  173. package/dist/less-1.1.2.js +0 -2712
  174. package/dist/less-1.1.2.min.js +0 -16
  175. package/dist/less-1.1.3.js +0 -2721
  176. package/dist/less-1.1.3.min.js +0 -16
  177. package/dist/less-1.1.4.js +0 -2769
  178. package/dist/less-1.1.4.min.js +0 -16
  179. package/dist/less-1.1.5.js +0 -2805
  180. package/dist/less-1.1.5.min.js +0 -9
  181. package/dist/less-1.1.6.js +0 -3004
  182. package/dist/less-1.1.6.min.js +0 -9
  183. package/dist/less-1.2.0.js +0 -3293
  184. package/dist/less-1.2.0.min.js +0 -9
  185. package/dist/less-1.2.1.js +0 -3318
  186. package/dist/less-1.2.1.min.js +0 -9
  187. package/dist/less-1.2.2.js +0 -3337
  188. package/dist/less-1.2.2.min.js +0 -9
  189. package/dist/less-rhino-1.1.3.js +0 -2460
  190. package/dist/less-rhino-1.1.5.js +0 -2481
  191. package/foo.less +0 -2
  192. package/lib/less/cssmin.js +0 -355
  193. package/test/html/index.html +0 -10
  194. package/test/html/less.js +0 -3333
  195. package/test/html/lib.less +0 -2
  196. package/test/html/styles.less +0 -8
  197. package/x.less +0 -4
@@ -0,0 +1,42 @@
1
+ @import "import/../css/background.css";
2
+
3
+ @import "import/import-test-d.css";
4
+ @font-face {
5
+ src: url("/fonts/garamond-pro.ttf");
6
+ src: local(Futura-Medium), url(fonts.svg#MyGeometricModern) format("svg");
7
+ }
8
+ #shorthands {
9
+ background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
10
+ }
11
+ #misc {
12
+ background-image: url(images/image.jpg);
13
+ }
14
+ #data-uri {
15
+ background: url(data:image/png;charset=utf-8;base64,
16
+ kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
17
+ k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
18
+ kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
19
+ background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
20
+ background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
21
+ }
22
+ #svg-data-uri {
23
+ background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
24
+ }
25
+ .comma-delimited {
26
+ background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
27
+ }
28
+ .values {
29
+ url: url('Trebuchet');
30
+ }
31
+ #logo {
32
+ width: 100px;
33
+ height: 100px;
34
+ background: url('import/imports/../assets/logo.png');
35
+ }
36
+ @font-face {
37
+ font-family: xecret;
38
+ src: url('import/imports/../assets/xecret.ttf');
39
+ }
40
+ #secret {
41
+ font-family: xecret, sans-serif;
42
+ }
@@ -13,7 +13,6 @@
13
13
  .values {
14
14
  font-family: 'Trebuchet', 'Trebuchet', 'Trebuchet';
15
15
  color: #888888 !important;
16
- url: url('Trebuchet');
17
16
  multi: something 'A', B, C, 'Trebuchet';
18
17
  }
19
18
  .variable-names {
@@ -36,3 +36,7 @@
36
36
  solid
37
37
  black;
38
38
  }
39
+ .sel .newline_ws .tab_ws {
40
+ color: white;
41
+ background-position: 45 -23;
42
+ }
@@ -0,0 +1,3 @@
1
+ @charset "UTF-8";
2
+
3
+ @import "import/import-charset-test";
@@ -43,6 +43,10 @@
43
43
  color: rgb(200, 200, 200);
44
44
  }
45
45
 
46
+ #333333 {
47
+ color: rgb(20%, 20%, 20%);
48
+ }
49
+
46
50
  #808080 {
47
51
  color: hsl(50, 0%, 50%);
48
52
  }
@@ -63,3 +67,26 @@
63
67
  color: blue2;
64
68
  border: 2px solid superred;
65
69
  }
70
+
71
+ .transparent {
72
+ color: transparent;
73
+ background-color: rgba(0, 0, 0, 0);
74
+ }
75
+ #alpha {
76
+ @colorvar: rgba(150, 200, 150, 0.7);
77
+ #fromvar {
78
+ opacity: alpha(@colorvar);
79
+ }
80
+ #short {
81
+ opacity: alpha(#aaa);
82
+ }
83
+ #long {
84
+ opacity: alpha(#bababa);
85
+ }
86
+ #rgba {
87
+ opacity: alpha(rgba(50, 120, 95, 0.2));
88
+ }
89
+ #hsl {
90
+ opacity: alpha(hsl(120, 100%, 50%));
91
+ }
92
+ }
@@ -61,5 +61,17 @@
61
61
  -moz-border-radius: 2px * 4 /* moz only with operation */;
62
62
  }
63
63
 
64
+ .mixin_def_with_colors(@a: white, // in
65
+ @b: 1px //put in @b - causes problems! --->
66
+ ) // the
67
+ when (@a = white) {
68
+ .test {
69
+ color: @b;
70
+ }
71
+ }
72
+ .mixin_def_with_colors();
73
+
64
74
  #last { color: blue }
65
75
  //
76
+
77
+ /* *//* { *//* *//* *//* */#div { color:#A33; }/* } */
@@ -1,19 +1,21 @@
1
- .comma-delimited {
2
- background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
1
+ .comma-delimited {
3
2
  text-shadow: -1px -1px 1px red, 6px 5px 5px yellow;
4
3
  -moz-box-shadow: 0pt 0pt 2px rgba(255, 255, 255, 0.4) inset,
5
4
  0pt 4px 6px rgba(255, 255, 255, 0.4) inset;
6
5
  }
7
6
  @font-face {
8
7
  font-family: Headline;
9
- src: local(Futura-Medium),
10
- url(fonts.svg#MyGeometricModern) format("svg");
8
+ unicode-range: U+??????, U+0???, U+0-7F, U+A5;
11
9
  }
12
10
  .other {
13
11
  -moz-transform: translate(0, 11em) rotate(-90deg);
12
+ transform: rotateX(45deg);
13
+ }
14
+ .item[data-cra_zy-attr1b-ut3=bold] {
15
+ font-weight: bold;
14
16
  }
15
17
  p:not([class*="lead"]) {
16
- color: black;
18
+ color: black;
17
19
  }
18
20
 
19
21
  input[type="text"].class#id[attr=32]:not(1) {
@@ -24,7 +26,7 @@ div#id.class[a=1][b=2].class:not(1) {
24
26
  color: white;
25
27
  }
26
28
 
27
- ul.comma > li:not(:only-child)::after {
29
+ ul.comma > li:not(:only-child)::after {
28
30
  color: white;
29
31
  }
30
32
 
@@ -63,3 +65,49 @@ p::before {
63
65
  5.5% { border: 2px }
64
66
  100% { border: 3px }
65
67
  }
68
+
69
+ @keyframes fontbulger1 {
70
+ to {
71
+ font-size: 15px;
72
+ }
73
+ from,to {
74
+ font-size: 12px;
75
+ }
76
+ 0%,100% {
77
+ font-size: 12px;
78
+ }
79
+ }
80
+
81
+ .units {
82
+ font: 1.2rem/2rem;
83
+ font: 8vw/9vw;
84
+ font: 10vh/12vh;
85
+ font: 12vm/15vm;
86
+ font: 12vmin/15vmin;
87
+ font: 1.2ch/1.5ch;
88
+ }
89
+
90
+ @supports ( box-shadow: 2px 2px 2px black ) or
91
+ ( -moz-box-shadow: 2px 2px 2px black ) {
92
+ .outline {
93
+ box-shadow: 2px 2px 2px black;
94
+ -moz-box-shadow: 2px 2px 2px black;
95
+ }
96
+ }
97
+
98
+ @-x-document url-prefix(""github.com"") {
99
+ h1 {
100
+ color: red;
101
+ }
102
+ }
103
+
104
+ @viewport {
105
+ font-size: 10px;
106
+ }
107
+ @namespace foo url(http://www.example.com);
108
+
109
+ foo|h1 { color: blue; }
110
+ foo|* { color: yellow; }
111
+ |h1 { color: red; }
112
+ *|h1 { color: green; }
113
+ h1 { color: green; }
@@ -25,4 +25,9 @@
25
25
  /* This hideous test of hideousness checks for the selector "blockquote" with various permutations of hex escapes */
26
26
  \62\6c\6f \63 \6B \0071 \000075o\74 e {
27
27
  color: silver;
28
- }
28
+ }
29
+
30
+ [ng\:cloak],
31
+ ng\:form {
32
+ display: none;
33
+ }
@@ -36,7 +36,6 @@ div#id {
36
36
 
37
37
  @font-face {
38
38
  font-family: 'Garamond Pro';
39
- src: url("/fonts/garamond-pro.ttf");
40
39
  }
41
40
 
42
41
  a:hover, a:link {
@@ -52,7 +51,7 @@ q:lang(no) {
52
51
  }
53
52
 
54
53
  p + h1 {
55
- font-size: 2.2em;
54
+ font-size: +2.2em;
56
55
  }
57
56
 
58
57
  #shorthands {
@@ -61,13 +60,13 @@ p + h1 {
61
60
  font: 100%/16px Arial;
62
61
  margin: 1px 0;
63
62
  padding: 0 auto;
64
- background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
65
63
  }
66
64
 
67
65
  #more-shorthands {
68
66
  margin: 0;
69
67
  padding: 1px 0 2px 0;
70
68
  font: normal small/20px 'Trebuchet MS', Verdana, sans-serif;
69
+ font: 0/0 a;
71
70
  }
72
71
 
73
72
  .misc {
@@ -75,9 +74,11 @@ p + h1 {
75
74
  display: -moz-inline-stack;
76
75
  width: .1em;
77
76
  background-color: #009998;
78
- background-image: url(images/image.jpg);
79
77
  background: -webkit-gradient(linear, left top, left bottom, from(red), to(blue));
80
78
  margin: ;
79
+ .nested-multiple {
80
+ multiple-semi-colons: yes;;;;;;
81
+ };
81
82
  filter: alpha(opacity=100);
82
83
  }
83
84
 
@@ -87,14 +88,15 @@ p + h1 {
87
88
  height: 20px ! important;
88
89
  }
89
90
 
90
- #data-uri {
91
- background: url(data:image/png;charset=utf-8;base64,
92
- kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
93
- k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
94
- kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
95
- background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
91
+ .def-font(@name) {
92
+ @font-face {
93
+ font-family: @name
94
+ }
96
95
  }
97
96
 
98
- #svg-data-uri {
99
- background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
97
+ .def-font(font-a);
98
+ .def-font(font-b);
99
+
100
+ .æøå {
101
+ margin: 0;
100
102
  }
@@ -0,0 +1,25 @@
1
+ @charset "ISO-8859-1";
2
+
3
+ .mixin_import1() {
4
+ @media all {
5
+ .tst {
6
+ color: black;
7
+ @media screen {
8
+ color: red;
9
+ .tst3 {
10
+ color: white;
11
+ }
12
+ }
13
+ }
14
+ }
15
+ }
16
+
17
+ .mixin_import2() {
18
+ .tst2 {
19
+ color: white;
20
+ }
21
+ }
22
+
23
+ .tst3 {
24
+ color: grey;
25
+ }
@@ -0,0 +1,23 @@
1
+ @charset "UTF-8";
2
+
3
+ @import "import/test.less";
4
+
5
+ .start() {
6
+ .test2 {
7
+ color: red;
8
+ }
9
+ }
10
+
11
+ .mix() {
12
+ color: black;
13
+ }
14
+
15
+ .test1 {
16
+ .mix();
17
+ }
18
+
19
+ .start();
20
+
21
+ .mixin_import1();
22
+
23
+ .mixin_import2();
@@ -0,0 +1 @@
1
+ @@demo: "hi";
@@ -0,0 +1,2 @@
1
+ ParseError: Syntax Error on line 1 in {path}bad-variable-declaration1.less:1:0
2
+ 1 @@demo: "hi";
@@ -0,0 +1 @@
1
+ #gaga /* Comment */ span { color: red }
@@ -0,0 +1,2 @@
1
+ ParseError: Syntax Error on line 1 in {path}comment-in-selector.less:1:20
2
+ 1 #gaga /* Comment */ span { color: red }
@@ -0,0 +1 @@
1
+ @import "file-does-not-exist.less";
@@ -0,0 +1,3 @@
1
+ FileError: 'file-does-not-exist.less' wasn't found.
2
+ in {path}import-missing.less:1:0
3
+ 1 @import "file-does-not-exist.less";
@@ -0,0 +1 @@
1
+ @import "this-statement-is-invalid.less"
@@ -0,0 +1,2 @@
1
+ ParseError: Syntax Error on line 1 in {path}import-no-semi.less:1:0
2
+ 1 @import "this-statement-is-invalid.less"
@@ -0,0 +1 @@
1
+ @import "imports/import-subfolder1.less";
@@ -0,0 +1,3 @@
1
+ NameError: .mixin-not-defined is undefined in {pathrel}mixin-not-defined.less:11:0
2
+ 10
3
+ 11 .mixin-not-defined();
@@ -0,0 +1 @@
1
+ @import "imports/import-subfolder2.less";
@@ -0,0 +1,2 @@
1
+ ParseError: missing opening `{` in {pathrel}parse-error-curly-bracket.less:1:1
2
+ 1 }}
@@ -0,0 +1 @@
1
+ @import "subfolder/mixin-not-defined.less";
@@ -0,0 +1 @@
1
+ @import "subfolder/parse-error-curly-bracket.less";
@@ -0,0 +1,4 @@
1
+ .someclass
2
+ {
3
+ font-weight: bold;
4
+ }
@@ -0,0 +1 @@
1
+ @import "../../mixin-not-defined.less";
@@ -0,0 +1 @@
1
+ @import "../../parse-error-curly-bracket.less";
@@ -0,0 +1,3 @@
1
+ .scope {
2
+ var: `this.foo.toJS()`;
3
+ }
@@ -0,0 +1,4 @@
1
+ SyntaxError: JavaScript evaluation error: 'TypeError: Cannot call method 'toJS' of undefined' in {path}javascript-error.less:2:26
2
+ 1 .scope {
3
+ 2 var: `this.foo.toJS()`;
4
+ 3 }
@@ -0,0 +1,6 @@
1
+ .mixin(@a : 4, @b : 3, @c: 2) {
2
+ will: fail;
3
+ }
4
+ .mixin-test {
5
+ .mixin(@a: 5; @b: 6, @c: 7);
6
+ }
@@ -0,0 +1,4 @@
1
+ SyntaxError: Cannot mix ; and , as delimiter types in {path}mixed-mixin-definition-args-1.less:5:29
2
+ 4 .mixin-test {
3
+ 5 .mixin(@a: 5; @b: 6, @c: 7);
4
+ 6 }
@@ -0,0 +1,6 @@
1
+ .mixin(@a : 4, @b : 3, @c: 2) {
2
+ will: fail;
3
+ }
4
+ .mixin-test {
5
+ .mixin(@a: 5, @b: 6; @c: 7);
6
+ }
@@ -0,0 +1,4 @@
1
+ SyntaxError: Cannot mix ; and , as delimiter types in {path}mixed-mixin-definition-args-2.less:5:25
2
+ 4 .mixin-test {
3
+ 5 .mixin(@a: 5, @b: 6; @c: 7);
4
+ 6 }
@@ -0,0 +1,11 @@
1
+
2
+ .error-is-further-on() {
3
+ }
4
+
5
+ .pad-here-to-reproduce-error-in() {
6
+ }
7
+
8
+ .the-import-subfolder-test() {
9
+ }
10
+
11
+ .mixin-not-defined();
@@ -0,0 +1,3 @@
1
+ NameError: .mixin-not-defined is undefined in {path}mixin-not-defined.less:11:0
2
+ 10
3
+ 11 .mixin-not-defined();
@@ -0,0 +1,6 @@
1
+ @saxofon:trumpete;
2
+
3
+ .mixin(saxofon) {
4
+ }
5
+
6
+ .mixin(@saxofon);
@@ -0,0 +1,3 @@
1
+ RuntimeError: No matching definition was found for `.mixin(trumpete)` in {path}mixin-not-matched.less:6:0
2
+ 5
3
+ 6 .mixin(@saxofon);
@@ -0,0 +1,6 @@
1
+ @saxofon:trumpete;
2
+
3
+ .mixin(@a, @b) {
4
+ }
5
+
6
+ .mixin(@a: @saxofon);
@@ -0,0 +1,3 @@
1
+ RuntimeError: No matching definition was found for `.mixin(@a:trumpete)` in {path}mixin-not-matched2.less:6:0
2
+ 5
3
+ 6 .mixin(@a: @saxofon);
@@ -0,0 +1,2 @@
1
+ ParseError: missing opening `{` in {path}parse-error-curly-bracket.less:1:1
2
+ 1 }}
@@ -0,0 +1,2 @@
1
+ body {
2
+ background-color: #fff;
@@ -0,0 +1,2 @@
1
+ ParseError: missing closing `}` in {path}parse-error-missing-bracket.less:3:0
2
+ 2 background-color: #fff;
@@ -0,0 +1,13 @@
1
+ @import 'import/import-test.less';
2
+
3
+ body
4
+ {
5
+ font-family: arial, sans-serif;
6
+ }
7
+
8
+ nonsense;
9
+
10
+ .clickable
11
+ {
12
+ cursor: pointer;
13
+ }
@@ -0,0 +1,4 @@
1
+ ParseError: Syntax Error on line 8 in {path}parse-error-with-import.less:8:8
2
+ 7
3
+ 8 nonsense;
4
+ 9
@@ -0,0 +1,3 @@
1
+ .test {
2
+ display/*/: block; /*sorry for IE5*/
3
+ }
@@ -0,0 +1,4 @@
1
+ ParseError: Syntax Error on line 2 in {path}property-ie5-hack.less:2:2
2
+ 1 .test {
3
+ 2 display/*/: block; /*sorry for IE5*/
4
+ 3 }
@@ -0,0 +1 @@
1
+ @bodyColor: darken(@bodyColor, 30%);
@@ -0,0 +1,2 @@
1
+ NameError: Recursive variable definition for @bodyColor in {path}recursive-variable.less:1:19
2
+ 1 @bodyColor: darken(@bodyColor, 30%);
@@ -1,10 +1,12 @@
1
1
  #functions {
2
2
  @var: 10;
3
+ @colors: #000, #fff;
3
4
  color: _color("evil red"); // #660000
4
5
  width: increment(15);
5
6
  height: undefined("self");
6
7
  border-width: add(2, 3);
7
8
  variable: increment(@var);
9
+ background: linear-gradient(@colors);
8
10
  }
9
11
 
10
12
  #built-in {
@@ -17,24 +19,72 @@
17
19
  greyscale: greyscale(#203c31);
18
20
  spin-p: spin(hsl(340, 50%, 50%), 40);
19
21
  spin-n: spin(hsl(30, 50%, 50%), -40);
22
+ luma-white: luma(#fff);
23
+ luma-black: luma(#000);
24
+ luma-black-alpha: luma(rgba(0,0,0,0.5));
25
+ luma-red: luma(#ff0000);
26
+ luma-green: luma(#00ff00);
27
+ luma-blue: luma(#0000ff);
28
+ luma-yellow: luma(#ffff00);
29
+ luma-cyan: luma(#00ffff);
30
+ luma-white-alpha: luma(rgba(255,255,255,0.5));
31
+ contrast-filter: contrast(30%);
32
+ contrast-white: contrast(#fff);
33
+ contrast-black: contrast(#000);
34
+ contrast-red: contrast(#ff0000);
35
+ contrast-green: contrast(#00ff00);
36
+ contrast-blue: contrast(#0000ff);
37
+ contrast-yellow: contrast(#ffff00);
38
+ contrast-cyan: contrast(#00ffff);
39
+ contrast-light: contrast(#fff, #111111, #eeeeee);
40
+ contrast-dark: contrast(#000, #111111, #eeeeee);
41
+ contrast-light-thresh: contrast(#fff, #111111, #eeeeee, 0.5);
42
+ contrast-dark-thresh: contrast(#000, #111111, #eeeeee, 0.5);
43
+ contrast-high-thresh: contrast(#555, #111111, #eeeeee, 0.6);
44
+ contrast-low-thresh: contrast(#555, #111111, #eeeeee, 0.1);
20
45
  format: %("rgb(%d, %d, %d)", @r, 128, 64);
21
46
  format-string: %("hello %s", "world");
22
47
  format-multiple: %("hello %s %d", "earth", 2);
23
48
  format-url-encode: %('red is %A', #ff0000);
24
49
  eformat: e(%("rgb(%d, %d, %d)", @r, 128, 64));
50
+
51
+ unitless: unit(12px);
52
+ unit: unit(13px + 1px, em);
25
53
 
26
54
  hue: hue(hsl(98, 12%, 95%));
27
55
  saturation: saturation(hsl(98, 12%, 95%));
28
56
  lightness: lightness(hsl(98, 12%, 95%));
57
+ red: red(#f00);
58
+ green: green(#0f0);
59
+ blue: blue(#00f);
29
60
  rounded: round(@r/3);
61
+ rounded-two: round(@r/3, 2);
30
62
  roundedpx: round(10px / 3);
63
+ roundedpx-three: round(10px / 3, 3);
64
+ rounded-percentage: round(10.2%);
65
+ ceil: ceil(10.1px);
66
+ floor: floor(12.9px);
31
67
  percentage: percentage(10px / 50);
32
68
  color: color("#ff0011");
69
+ tint: tint(#777777, 13);
70
+ tint-full: tint(#777777, 100);
71
+ tint-percent: tint(#777777, 13%);
72
+ shade: shade(#777777, 13);
73
+ shade-full: shade(#777777, 100);
74
+ shade-percent: shade(#777777, 13%);
75
+
76
+ hsv: hsv(5, 50%, 30%);
77
+ hsva: hsva(3, 50%, 30%, 0.2);
78
+
79
+ mix: mix(#ff0000, #ffff00, 80);
80
+ mix-0: mix(#ff0000, #ffff00, 0);
81
+ mix-100: mix(#ff0000, #ffff00, 100);
82
+ mix-weightless: mix(#ff0000, #ffff00);
33
83
 
34
84
  .is-a {
35
85
  color: iscolor(#ddd);
36
- color: iscolor(red);
37
- color: iscolor(rgb(0, 0, 0));
86
+ color1: iscolor(red);
87
+ color2: iscolor(rgb(0, 0, 0));
38
88
  keyword: iskeyword(hello);
39
89
  number: isnumber(32);
40
90
  string: isstring("hello");
@@ -47,3 +97,15 @@
47
97
  #alpha {
48
98
  alpha: darken(hsla(25, 50%, 50%, 0.6), 10%);
49
99
  }
100
+
101
+ #blendmodes {
102
+ multiply: multiply(#f60000, #f60000);
103
+ screen: screen(#f60000, #0000f6);
104
+ overlay: overlay(#f60000, #0000f6);
105
+ softlight: softlight(#f60000, #ffffff);
106
+ hardlight: hardlight(#f60000, #0000f6);
107
+ difference: difference(#f60000, #0000f6);
108
+ exclusion: exclusion(#f60000, #0000f6);
109
+ average: average(#f60000, #0000f6);
110
+ negation: negation(#f60000, #313131);
111
+ }
@@ -5,4 +5,11 @@
5
5
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity = 20);
6
6
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=@fat);
7
7
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#333333", endColorstr=@cloudhead, GradientType=@fat);
8
+ }
9
+ .evalTest(@arg) {
10
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=@arg);
11
+ }
12
+ .evalTest1 {
13
+ .evalTest(30);
14
+ .evalTest(5);
8
15
  }
@@ -0,0 +1 @@
1
+ @import-once "../import-once-test-c";