diff options
Diffstat (limited to 'vendor/leafo/lessphp/tests/inputs')
36 files changed, 1903 insertions, 0 deletions
diff --git a/vendor/leafo/lessphp/tests/inputs/accessors.less.disable b/vendor/leafo/lessphp/tests/inputs/accessors.less.disable new file mode 100644 index 00000000..2990faab --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/accessors.less.disable @@ -0,0 +1,36 @@ +/* accessors */ + +#defaults { + @width: 960px; + @color: black; + .something { + @space: 10px; + @hello { + color: green; + } + } +} + +.article { color: #294366; } + +.comment { + width: #defaults[@width]; + color: .article['color']; + padding: #defaults > .something[@space]; +} + +.wow { + height: .comment['width']; + background-color: .comment['color']; + color: #defaults > .something > @hello['color']; + + padding: #defaults > non-existant['padding']; + margin: #defaults > .something['non-existant']; +} + +.mix { + #defaults; + font-size: .something[@space]; +} + + diff --git a/vendor/leafo/lessphp/tests/inputs/arity.less b/vendor/leafo/lessphp/tests/inputs/arity.less new file mode 100644 index 00000000..9998fd4a --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/arity.less @@ -0,0 +1,77 @@ + +// simple arity + +.hello(@a) { + hello: one; +} + +.hello(@a, @b) { + hello: two; +} + +.hello(@a, @b, @c) { + hello: three; +} + + +.world(@a, @b, @c) { + world: three; +} + +.world(@a, @b) { + world: two; +} + +.world(@a) { + world: one; +} + +.one { + .hello(1); + .world(1); +} + +.two { + .hello(1, 1); + .world(1, 1); +} + +.three { + .hello(1, 1, 1); + .world(1, 1, 1); +} + + +// arity with default values + +.foo(@a, @b: cool) { + foo: two @b; +} + +.foo(@a, @b: cool, @c: yeah) { + foo: three @b @c; +} + + +.baz(@a, @b, @c: yeah) { + baz: three @c; +} + +.baz(@a, @b: cool) { + baz: two @b; +} + + +.multi-foo { + .foo(1); + .foo(1, 1); + .foo(1,1,1); +} + +.multi-baz { + .baz(1); + .baz(1, 1); + .baz(1,1,1); +} + + diff --git a/vendor/leafo/lessphp/tests/inputs/attributes.less b/vendor/leafo/lessphp/tests/inputs/attributes.less new file mode 100644 index 00000000..7ede4fc4 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/attributes.less @@ -0,0 +1,41 @@ +* { color: blue; } +E { color: blue; } +E[foo] { color: blue; } +[foo] { color: blue; } +[foo] .helloWorld { color: blue; } +[foo].helloWorld { color: blue; } +E[foo="barbar"] { color: blue; } +E[foo~="hello#$@%@$#^"] { color: blue; } +E[foo^="color: green;"] { color: blue; } +E[foo$="239023"] { color: blue; } +E[foo*="29302"] { color: blue; } +E[foo|="239032"] { color: blue; } +E:root { color: blue; } + +E:nth-child(odd) { color: blue; } +E:nth-child(2n+1) { color: blue; } +E:nth-child(5) { color: blue; } +E:nth-last-child(-n+2) { color: blue; } +E:nth-of-type(2n) { color: blue; } +E:nth-last-of-type(n) { color: blue; } + +E:first-child { color: blue; } +E:last-child { color: blue; } +E:first-of-type { color: blue; } +E:last-of-type { color: blue; } +E:only-child { color: blue; } +E:only-of-type { color: blue; } +E:empty { color: blue; } + +E:lang(en) { color: blue; } +E::first-line { color: blue; } +E::before { color: blue; } + +E#id { color: blue; } +E:not(:link) { color: blue; } + +E F { color: blue; } +E > F { color: blue; } +E + F { color: blue; } +E ~ F { color: blue; } + diff --git a/vendor/leafo/lessphp/tests/inputs/builtins.less b/vendor/leafo/lessphp/tests/inputs/builtins.less new file mode 100644 index 00000000..f9301e04 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/builtins.less @@ -0,0 +1,96 @@ +// builtin + +@something: "hello world"; +@color: #112233; +@color2: rgba(44,55,66, .6); + +body { + color: @something; + + @num: 7 / 6; + num-basic: @num + 4; + num-floor: floor(@num) + 4px; + num-ceil: ceil(@num) + 4px; + + @num2: 2 / 3; + num2: @num2; + num2-round: round(@num2); + num2-floor: floor(@num2); + num2-ceil: ceil(@num2); + + round-lit: round(10px / 3); + + rgba1: rgbahex(@color); + rgba2: rgbahex(@color2); + argb: argb(@color2); +} + + +format { + @r: 32; + format: %("rgb(%d, %d, %d)", @r, 128, 64); + format-string: %("hello %s", "world"); + format-multiple: %("hello %s %d", "earth", 2); + format-url-encode: %('red is %A', #ff0000); + eformat: e(%("rgb(%d, %d, %d)", @r, 128, 64)); +} + + +#functions { + str1: isstring("hello"); + str2: isstring(one, two); + + num1: isnumber(2323px); + num2: isnumber(2323); + num3: isnumber(4/5); + num4: isnumber("hello"); + + col1: iscolor(red); + col2: iscolor(hello); + col3: iscolor(rgba(0,0,0,0.3)); + col4: iscolor(#fff); + + key1: iskeyword(hello); + key2: iskeyword(3D); + + px1: ispixel(10px); + px2: ispixel(10); + + per1: ispercentage(10%); + per2: ispercentage(10); + + em1: isem(10em); + em2: isem(10); + + ex1: extract(1 2 3 4, 2); + ex2: extract(1 2, 1); + ex3: extract(1, 1); + + @list: 1,2,3,4; + + ex4: extract(@list, 2); + + pow: pow(2,4); + pi: pi(); + mod: mod(14,10); + + tan: tan(1); + cos: cos(1); + sin: sin(1); + + atan: atan(1); + acos: acos(1); + asin: asin(1); + + sqrt: sqrt(8); +} + + +#unit { + @unit: "em"; + unit-lit: unit(10px); + unit-arg: unit(10px, "s"); + unit-arg2: unit(10px, @unit); + unit-math: unit(0.07407s) * 100%; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/colors.less b/vendor/leafo/lessphp/tests/inputs/colors.less new file mode 100644 index 00000000..7fd47a3c --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/colors.less @@ -0,0 +1,154 @@ + +body { + color:rgb(red(#f00), red(#0F0), red(#00f)); + color:rgb(red(#f00), green(#0F0), blue(#00f)); + color:rgb(red(#0ff), green(#f0f), blue(#ff0)); + + color: hsl(34, 50%, 40%); + color: hsla(34, 50%, 40%, 0.3); + + lighten1: lighten(#efefef, 10%); + lighten2: lighten(rgb(23, 53, 231), 22%); + lighten3: lighten(rgba(212, 103, 88, 0.5), 10%); + + darken1: darken(#efefef, 10%); + darken2: darken(rgb(23, 53, 231), 22%); + darken3: darken(rgba(23, 53, 231, 0.5), 10%); + + saturate1: saturate(#efefef, 10%); + saturate2: saturate(rgb(23, 53, 231), 22%); + saturate3: saturate(rgba(23, 53, 231, 0.5), 10%); + + desaturate1: desaturate(#efefef, 10%); + desaturate2: desaturate(rgb(23, 53, 231), 22%); + desaturate3: desaturate(rgba(23, 53, 231, 0.5), 10%); + + spin1: spin(#efefef, 12); + spin2: spin(rgb(23, 53, 231), 15); + spin3: spin(rgba(23, 53, 231, 0.5), 19); + + spin2: spin(#efefef, -12); + spin3: spin(rgb(23, 53, 231), -15); + spin4: spin(rgba(23, 53, 231, 0.5), -19); + + one1: fadein(#abcdef, 10%); + one2: fadeout(#abcdef, -10%); + + two1: fadeout(#029f23, 10%); + two2: fadein(#029f23, -10%); + + + three1: fadein(rgba(1,2,3, 0.5), 10%); + three2: fadeout(rgba(1,2,3, 0.5), -10%); + + four1: fadeout(rgba(1,2,3, 0), 10%); + four2: fadein(rgba(1,2,3, 0), -10%); + + hue: hue(rgb(34,20,40)); + sat: saturation(rgb(34,20,40)); + lit: lightness(rgb(34,20,40)); + + @old: #34fa03; + @new: hsl(hue(@old), 45%, 90%); + what: @new; + + zero1: saturate(#123456, -100%); + zero2: saturate(#123456, 100%); + zero3: saturate(#000000, 100%); + zero4: saturate(#ffffff, 100%); + + zero5: lighten(#123456, -100%); + zero6: lighten(#123456, 100%); + zero7: lighten(#000000, 100%); + zero8: lighten(#ffffff, 100%); + + zero9: spin(#123456, -100); + zeroa: spin(#123456, 100); + zerob: spin(#000000, 100); + zeroc: spin(#ffffff, 100); +} + + +alpha { + // g: alpha(red); + g1: alpha(rgba(0,0,0,0)); + g2: alpha(rgb(155,55,0)); +} + +fade { + f1: fade(red, 50%); + f2: fade(#fff, 20%); + f3: fade(rgba(34,23,64,0.4), 50%); +} + +@a: rgb(255,255,255); +@b: rgb(0,0,0); + +.mix { + color1: mix(@a, @b, 50%); + color2: mix(@a, @b); + color3: mix(rgba(5,3,1,0.3), rgba(6,3,2, 0.8), 50%); +} + +.contrast { + color1: contrast(#000, red, blue); + color2: contrast(#fff, red, blue); +} + +.percent { + per: percentage(0.5); +} + +// color keywords + +.colorz { + color1: whitesmoke - 10; + color2: spin(red, 34); + color3: spin(blah); +} + + + +// purposfuly whacky to match less.js + +@color: #fcf8e3; + +body { + start: @color; + spin: spin(@color, -10); // #fcf4e3 + chained: darken(spin(@color, -10), 3%); // gives #fbeed5, should be #fbefd5 + direct: darken(#fcf4e3, 3%); // #fbefd5 +} + +// spin around +pre { + @errorBackground: #f2dede; + spin: spin(@errorBackground, -10); +} + +dd { + @white: #fff; + background-color: mix(@white, darken(@white, 10%), 60%); +} + +// math + +.ops { + c1: red * 0.3; + c2: green / 2; + c3: purple % 7; + c4: 4 * salmon; + c5: 1 + salmon; + + c6: 132 / red; + c7: 132 - red; + c8: 132- red; +} + +.transparent { + r: red(transparent); + g: green(transparent); + b: blue(transparent); + a: alpha(transparent); +} + diff --git a/vendor/leafo/lessphp/tests/inputs/compile_on_mixin.less b/vendor/leafo/lessphp/tests/inputs/compile_on_mixin.less new file mode 100644 index 00000000..79d628f4 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/compile_on_mixin.less @@ -0,0 +1,39 @@ + +@mixin { + height: 22px; + ul { + height: 20px; + li { + @color: red; + height: 10px; + div span, link { + margin: 10px; + color: @color; + } + } + + div, p { + border: 1px; + &.hello { + color: green; + } + + :what { + color: blue; + } + } + + + a { + b { + color: blue; + } + } + } +} + + + +body { + @mixin; +} diff --git a/vendor/leafo/lessphp/tests/inputs/data-uri.less b/vendor/leafo/lessphp/tests/inputs/data-uri.less new file mode 100644 index 00000000..0cfa941a --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/data-uri.less @@ -0,0 +1,7 @@ +.small { + background: data-uri("../hi.less"); +} + +.large { + background: data-uri('../../../lessc.inc.php'); +} diff --git a/vendor/leafo/lessphp/tests/inputs/directives.less b/vendor/leafo/lessphp/tests/inputs/directives.less new file mode 100644 index 00000000..1b3a9b58 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/directives.less @@ -0,0 +1,28 @@ + +@hello: "utf-8"; +@charset @hello; + +@-moz-document url-prefix(){ + div { + color: red; + } +} + +@page :left { margin-left: 4cm; } +@page :right { margin-left: 3cm; } +@page { margin: 2cm } + +@-ms-viewport { + width: device-width; +} +@-moz-viewport { + width: device-width; +} +@-o-viewport { + width: device-width; +} +@viewport { + width: device-width; +} + + diff --git a/vendor/leafo/lessphp/tests/inputs/escape.less b/vendor/leafo/lessphp/tests/inputs/escape.less new file mode 100644 index 00000000..5c15e786 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/escape.less @@ -0,0 +1,18 @@ + +body { + @hello: "world"; + e1: e("this is simple"); + e2: e("this is simple", "cool lad"); + e3: e(1232); + e4: e(@hello); + e5: e("one" + 'more'); + + t1: ~"eating rice"; + t2: ~"string cheese"; + t3: a b c ~"string me" d e f; + t4: ~"string @{hello}"; +} + +.class { + filter: ~"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png')"; +} diff --git a/vendor/leafo/lessphp/tests/inputs/font_family.less b/vendor/leafo/lessphp/tests/inputs/font_family.less new file mode 100644 index 00000000..d1dfb72d --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/font_family.less @@ -0,0 +1,28 @@ + +@font-directory: 'fonts/'; +@some-family: Gentium; + +@font-face: maroon; // won't collide with @font-face { } + +@font-face { + font-family: Graublau Sans Web; + src: url(@{font-directory}GraublauWeb.otf) format("opentype"); +} + +@font-face { + font-family: @some-family; + src: url('@{font-directory}Gentium.ttf'); +} + +@font-face { + font-family: @some-family; + src: url("@{font-directory}GentiumItalic.ttf"); + font-style: italic; +} + +h2 { + font-family: @some-family; + crazy: @font-face; +} + + diff --git a/vendor/leafo/lessphp/tests/inputs/guards.less b/vendor/leafo/lessphp/tests/inputs/guards.less new file mode 100644 index 00000000..fc4e344e --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/guards.less @@ -0,0 +1,74 @@ + +.simple(@hi) when (@hi) { + simple: yellow; +} + + +.something(@hi) when (@hi = cool) { + something: red; +} + +.another(@x) when (@x > 10) { + another: green; +} + + +.flipped(@x) when (@x =< 10) { + flipped: teal; +} + +.yeah(@arg) when (isnumber(@arg)) { + yeah-number: purple @arg; +} + + +.yeah(@arg) when (ispixel(@arg)) { + yeah-pixel: silver; +} + + +.hello(@arg) when not (@arg) { + hello: orange; +} + +dd { + .simple(true); +} + +b { + .something(cool); + .something(birthday); +} + +img { + .another(12); + .flipped(2); +} + +body { + .yeah(232px); + .yeah(232); +} + +.something(@x) when (@x) and (@y), not (@x = what) { + something-complex: blue @x; +} + +div { + @y: true; + .something(true); + +} + +.coloras(@g) when (iscolor(@g)) { + color: true @g; +} + +link { + .coloras(red); + .coloras(#fff); + .coloras(#fffddd); + .coloras(rgb(0,0,0)); + .coloras(rgba(0,0,0, .34)); +} + diff --git a/vendor/leafo/lessphp/tests/inputs/hacks.less b/vendor/leafo/lessphp/tests/inputs/hacks.less new file mode 100644 index 00000000..e69b7bf9 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/hacks.less @@ -0,0 +1,6 @@ +// css hacks + +:root .alert-message, :root .btn { + border-radius: 0 \0; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/hi.less b/vendor/leafo/lessphp/tests/inputs/hi.less new file mode 100644 index 00000000..9a3d8198 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/hi.less @@ -0,0 +1,5 @@ + +div:before { + content: "hi!"; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/ie.less b/vendor/leafo/lessphp/tests/inputs/ie.less new file mode 100644 index 00000000..37a5f1f6 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/ie.less @@ -0,0 +1,12 @@ + +foo { + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr=#c0ff3300, endColorstr=#ff000000); + filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr=#c0ff3300, endColorstr=#ff000001); +} + + +foo { + filter: alpha(opacity=20); + filter: alpha(opacity=20, enabled=true); + filter: blaznicate(foo=bar, baz=bang bip, bart=#fa4600); +} diff --git a/vendor/leafo/lessphp/tests/inputs/import.less b/vendor/leafo/lessphp/tests/inputs/import.less new file mode 100644 index 00000000..a5005674 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/import.less @@ -0,0 +1,56 @@ + +@import 'file1.less'; // file found and imported + +@import "not-found"; + +@import "something.css" media; +@import url("something.css") media; +@import url(something.css) media, screen, print; + +@color: maroon; + +@import url(file2); // found and imported + +body { + line-height: 10em; + @colors; +} + +div { + @color: fuchsia; + @import "file2"; +} + + +.mixin-import() { + @import "file3"; +} + +.one { + .mixin-import(); + color: blue; +} + +.two { + .mixin-import(); +} + + +#merge-import-mixins { + @import "a"; + @import "b"; + div { .just-a-class; } +} + + +@import "inner/file1"; + + +// test bubbling variables up from imports, while preserving order + +pre { + color: @someValue; +} + +@import "file3"; + diff --git a/vendor/leafo/lessphp/tests/inputs/interpolation.less b/vendor/leafo/lessphp/tests/inputs/interpolation.less new file mode 100644 index 00000000..8aad0004 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/interpolation.less @@ -0,0 +1,47 @@ + +@cool-hello: "yes"; +@cool-yes: "okay"; +@var: "hello"; + +div { + interp1: ~"@{cool-hello}"; + interp2: ~"@{cool-@{var}}"; + interp3: ~"@{cool-@{cool-@{var}}}"; +} + +// interpolation in selectors + +@hello: 10; +@world: "yeah"; + +@{hello}@{world} { + color: blue; +} + +@{hello} { + color: blue; +} + +hello world @{hello} { + color: red; +} + +#@{world} { + color: "hello @{hello}"; +} + + +@num: 3; + +[prop], +[prop="value@{num}"], +[prop*="val@{num}"], +[|prop~="val@{num}"], +[*|prop$="val@{num}"], +[ns|prop^="val@{num}"], +[@{num}^="val@{num}"], +[@{num}=@{num}], +[@{num}] { + attributes: yes; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/keyframes.less b/vendor/leafo/lessphp/tests/inputs/keyframes.less new file mode 100644 index 00000000..e65a38b9 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/keyframes.less @@ -0,0 +1,52 @@ +@keyframes 'bounce' { + from { + top: 100px; + animation-timing-function: ease-out; + } + + 25% { + top: 50px; + animation-timing-function: ease-in; + } + + 50% { + top: 100px; + animation-timing-function: ease-out; + } + + 75% { + top: 75px; + animation-timing-function: ease-in; + } + + to { + top: 100px; + } +} + +@-webkit-keyframes flowouttoleft { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(-100%) scale(.7); } +} + +div { + animation-name: 'diagonal-slide'; + animation-duration: 5s; + animation-iteration-count: 10; +} + +@keyframes 'diagonal-slide' { + + from { + left: 0; + top: 0; + } + + to { + left: 100px; + top: 100px; + } + +} + diff --git a/vendor/leafo/lessphp/tests/inputs/math.less b/vendor/leafo/lessphp/tests/inputs/math.less new file mode 100644 index 00000000..db59d356 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/math.less @@ -0,0 +1,122 @@ + +.unary { + // all operators are parsable as unary operators, anything + // but - throws an error right now though, + + // this gives two numbers + sub: 10 -5; + // add: 10 +5; // error + // div: 10 /5; // error + // mul: 10 *5; // error +} + +.spaces { + // we can make the parser do math by leaving out the + // space after the first value, or putting spaces on both sides + + sub1: 10-5; + sub2: 10 - 5; + + add1: 10+5; + add2: 10 + 5; + + // div: 10/5; // this wont work, read on + div: 10 / 5; + + mul1: 10*5; + mul2: 10 * 5; +} + +// these properties have divison not in parenthases +.supress-division { + border-radius: 10px / 10px; + border-radius: 10px/12px; + border-radius: hello (10px/10px) world; + @x: 10px; + font: @x/30 sans-serif; + font: 10px / 20px sans-serif; + font: 10px/22px sans-serif; + border-radius:0 15px 15px 15px / 0 50% 50% 50%; +} + + +.parens { + // if you are unsure, then just wrap the expression in parentheses and it will + // always evaluate. + + // notice we no longer have unary operators, and these will evaluate + sub: (10 -5); + add: (10 +5); + div1: (10 /5); + div2: (10/5); // no longer interpreted as the shorthand + mul: (10 *5); +} + +.keyword-names { + // watch out when doing math with keywords, - is a valid keyword character + @a: 100; + @b: 25; + @a-: "hello"; + height: @a-@b; // here we get "hello" 25, not 75 +} + + +.negation { + neg1: -(1px); + neg2: 0-(1px); + + @something: 10; + neg3: -@something; +} + + +// and now here are the tests + +.test { + single1: (5); + single2: 5+(5); + single3: (5)+((5)); + + parens: (5 +(5)) -2; + // parens: ((5 +(5)) -2); // FAILS - fixme + + math1: (5 + 5)*(2 / 1); + math2: (5+5)*(2/1); + + complex1: 2 * (4 * (2 + (1 + 6))) - 1; + complex2: ((2+3)*(2+3) / (9-4)) + 1; + complex3: (2px + 4px) 1em 2px 2; + + @var: (2 * 2); + var1: (2 * @var) 4 4 (@var * 1px); + var2: (@var * @var) * 6; + var3: 4 * (5 + 5) / 2 - (@var * 2); + + complex4: (7 * 7) + (8 * 8); +} + +.percents { + p1: 100 * 10%; + p2: 10% * 100; + p3: 10% * 10%; + + p4: 100px * 10%; // lessjs makes this px + p5: 10% * 100px; // lessjs makes this % + + p6: 20% + 10%; + p7: 20% - 10%; + + p8: 20% / 10%; +} + +.misc { + x: 10px * 4em; + y: 10 * 4em; +} + + +.cond { + c1: 10 < 10; + c2: 10 >= 10; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/media.less b/vendor/leafo/lessphp/tests/inputs/media.less new file mode 100644 index 00000000..8c16a3cf --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/media.less @@ -0,0 +1,68 @@ +@media screen, 3D { + P { color: green; } +} +@media print { + body { font-size: 10pt } +} +@media screen { + body { font-size: 13px } +} +@media screen, print { + body { line-height: 1.2 } +} + +@media all and (min-width: 0px) { + body { line-height: 1.2 } +} + +@media all and (min-width: 0) { + body { line-height: 1.2 } +} + +@media + screen and (min-width: 102.5em) and (max-width: 117.9375em), + screen and (min-width: 150em) { + body { color: blue } +} + + +@media screen and (min-height: 100px + 10px) { + body { color: red; } +} + +@cool: 100px; + +@media screen and (height: @cool) and (width: @cool + 10), (size: @cool + 20) { + body { color: red; } +} + + +// media bubbling + +@media test { + div { + height: 20px; + @media (hello) { + color: red; + + pre { + color: orange; + } + } + } +} + +// should not cross boundary +@media yeah { + @page { + @media cool { + color: red; + } + } +} + +// variable in query +@mobile: ~"(max-width: 599px)"; +@media @mobile { + .helloworld { color: blue } +} diff --git a/vendor/leafo/lessphp/tests/inputs/misc.less b/vendor/leafo/lessphp/tests/inputs/misc.less new file mode 100644 index 00000000..eb690b9a --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/misc.less @@ -0,0 +1,100 @@ + +@color: #fff; +@base_path: "/assets/images/"; +@images: @base_path + "test/"; +.topbar { background: url(@{images}topbar.png); } +.hello { test: empty-function(@images, 40%, to(@color)); } + +.css3 { + background-image: -webkit-gradient(linear, 0% 0%, 0% 90%, + from(#E9A000), to(#A37000)); +} + + +/** + +Here is a block comment + +**/ + + +// this is a comment + +.test, /*hello*/.world { + border: 1px solid red; // world + /* another property */ + color: url(http://mage-page.com); + string: "hello /* this is not a comment */"; + world: "// neither is this"; + string: 'hello /* this is not a comment */' /*what if this is a comment */; + world: '// neither is this' // hell world; + ; + what-/*something?*/ever: 100px; + background: url(/*no comment here*/); +} + + +.urls { + @var: "http://google.com"; + background1: url(@var); + background2: url(@{var}); + background3: url("@{var}"); +} + +.mix(@arg) { color: @arg; } +@aaa: aaa; +@bbb: bbb; +// make sure the opening selector isn't too greedy +.cool {.mix("@{aaa}, @{bbb}")} +.cool(); + + + +// merging of mixins +.span-17 { float: left; } +.span-17 { width: 660px; } + +.x {.span-17;} + +.hi { + pre { + color: red; + } +} + +.hi { + pre { + color: blue; + } +} + +.rad { + .hi; +} + + +hello { + numbers: 1.0 0.1 .1 1.; + numbers: 1.0s 0.1s .1s 1.s; + numbers: -1.0s -0.1s -.1s -1.s; + numbers: -1.0 -0.1 -.1 -1.; +} + + +#string { + hello: 'what\'s going on here'; + hello: 'blah blag @{ blah blah'; + + join: 3434 + "hello"; + join: 3434 + hello; +} + + +.duplicates { + hello: world; + hello: "world"; + hello: world; + hello: "what"; + hello: world; + hello: "world"; +} diff --git a/vendor/leafo/lessphp/tests/inputs/mixin_functions.less b/vendor/leafo/lessphp/tests/inputs/mixin_functions.less new file mode 100644 index 00000000..2d858ad6 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/mixin_functions.less @@ -0,0 +1,33 @@ + +@outer: 10px; +@class(@var:22px, @car: 400px + @outer) { + margin: @var; + height: @car; +} + +@group { + @f(@color) { + color: @color; + } + .cool { + border-bottom: 1px solid green; + } +} + +.class(@width:200px) { + padding: @width; +} + +body { + .class(2.0em); + @group > @f(red); + @class(10px, 10px + 2); + @group > .cool; +} + + +@lots(@a: 10px, @b: 20px, @c: 30px, @d: 40px, @e: 4px, @f:3px, @g:2px, @h: 1px) { + padding: @a @b @c @d; + margin: @e @f @g @h; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/mixin_merging.less.disable b/vendor/leafo/lessphp/tests/inputs/mixin_merging.less.disable new file mode 100644 index 00000000..86b3e0cb --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/mixin_merging.less.disable @@ -0,0 +1,100 @@ + +@tester { + p, div { height: 10px; } +} + +#test1 { + div { color: red; } + @tester; +} + + +@cool { + a,b,i { width: 1px; } +} + +#test2 { + b { color: red; } + @cool; +} + +#test3 { + @cool; + b { color: red; } +} + +@cooler { + a { margin: 1px; } +} + +#test4 { + a, div, html { color: blue; } + @cooler; +} + +@hi { + img, strong { float: right; } +} + +#test5 { + img, strong { padding: 2px; } + @hi; +} + +@nested { + div, span { + a { + color: red; + } + } +} + +#test6 { + div, span { + a { + line-height: 10px; + } + } + @nested; +} + +@broken-nesting { + div, span { + strong, b { + color: red; + } + } + +} + +#test7 { + div { + strong { + margin: 1px; + } + } + @broken-nesting; +} + + +@another-nest { + a,b { + i { + color: red; + } + + s { + color: blue; + } + } +} + +#test8 { + a, b { + i,s { + background: red; + } + } + @another-nest; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/mixins.less b/vendor/leafo/lessphp/tests/inputs/mixins.less new file mode 100644 index 00000000..768e6384 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/mixins.less @@ -0,0 +1,197 @@ + +@rounded-corners { + border-radius: 10px; +} + +.bold { + @font-size: 20px; + font-size: @font-size; + font-weight: bold; +} + +body #window { + @rounded-corners; + .bold; + line-height: @font-size * 1.5; +} + +#bundle { + .button { + display: block; + border: 1px solid black; + background-color: grey; + &:hover { background-color: white } + } +} +#header a { + color: orange; + #bundle > .button; // mixin the button class +} + +div { + @abstract { + hello: world; + b { + color: blue; + } + } + + @abstract > b; + @abstract; +} + +@poop { + big: baby; +} + +body { + div; +} + +// not using > to list mixins + +.hello { + .world { + color: blue; + } +} + +.foobar { + .hello .world; +} + + +// arguments + +.spam(@something: 100, @dad: land) { + @wow: 23434; + foo: @arguments; + bar: @arguments; +} + +.eggs { + .spam(1px, 2px); + .spam(); +} + +.first(@one, @two, @three, @four: cool) { + cool: @arguments; +} + +#hello { + .first(one, two, three); +} + +#hello-important { + .first(one, two, three) !important; +} + +.rad(@name) { + cool: @arguments; +} + +#world { + @hello: "world"; + .rad("@{hello}"); +} + +.second(@x, @y:skip, @z: me) { + things: @arguments; +} + +#another { + .second(red, blue, green); + .second(red blue green); +} + + +.another(@x, @y:skip, @z:me) { + .cool { + color: @arguments; + } +} + +#day { + .another(one,two, three); + .another(one two three); +} + + +.to-be-important() { + color: red; + @color: red; + height: 20px; + + pre { + color: @color; + } +} + +.mix-suffix { + .to-be-important() !important; +} + + + + +#search-all { + .red() { + color:#f00 !important; + } +} + +#search-all { + .green() { + color: #0f0 !important; + } +} + +.search-test { + #search-all > .red(); + #search-all > .green(); +} + + +// mixin self without infinite loop +.cowboy() { + color: blue; +} + +.cowboy { + .cowboy; +} + + +// semicolon + +.semi1(@color: red, blue, green;) { + color: @color; +} + +.semi2(@color: red, blue, green; dad) { + color: @color; +} + +.semi3(hello; world; piss) { + hello: world; +} + + + +// self referencing skipping + +.nav-divider(@color: red){ + padding: 10px; +} + +.nav { + .nav-divider { + .nav-divider(); + } +} + +.nav-divider { + .nav-divider(); +} + + diff --git a/vendor/leafo/lessphp/tests/inputs/nested.less b/vendor/leafo/lessphp/tests/inputs/nested.less new file mode 100644 index 00000000..0b62ea19 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/nested.less @@ -0,0 +1,60 @@ +#header { + color: black; + + .navigation { + font-size: 12px; + .border { + .outside { + color: blue; + } + } + } + .logo { + width: 300px; + &:hover { text-decoration: none } + } +} + +a { b { ul { li { color: green; } } } } + +this { will { not { show { } } } } + +.cool { + div & { color: green; } + p & span { color: yellow; } +} + +another { + .cool; +} + +b { + & .something { + color: blue; + } + + &.something { + color: blue; + } +} + +.foo { + .bar, .baz { + & .qux { + display: block; + } + .qux & { + display: inline; + } + .qux & .biz { + display: none; + } + } +} + +b { + hello [x="&yeah"] { + color: red; + } +} + diff --git a/vendor/leafo/lessphp/tests/inputs/pattern_matching.less b/vendor/leafo/lessphp/tests/inputs/pattern_matching.less new file mode 100644 index 00000000..c2a0da91 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/pattern_matching.less @@ -0,0 +1,157 @@ + +.demo (light, @color) { + color: lighten(@color, 10%); +} +.demo (@_, @color) { + display: block; +} + +@switch: light; + +.class { + .demo(@switch, #888); +} + +// by arity + +.mixin () { + zero: 0; +} +.mixin (@a: 1px) { + one: 1; +} +.mixin (@a) { + one-req: 1; +} +.mixin (@a: 1px, @b: 2px) { + two: 2; +} + +.mixin (@a, @b, @c) { + three-req: 3; +} + +.mixin (@a: 1px, @b: 2px, @c: 3px) { + three: 3; +} + +.zero { + .mixin(); +} + +.one { + .mixin(1); +} + +.two { + .mixin(1, 2); +} + +.three { + .mixin(1, 2, 3); +} + +// + +.mixout ('left') { + left: 1; +} + +.mixout ('right') { + right: 1; +} + +.left { + .mixout('left'); +} +.right { + .mixout('right'); +} + +// + +.border (@side, @width) { + color: black; + .border-side(@side, @width); +} +.border-side (left, @w) { + border-left: @w; +} +.border-side (right, @w) { + border-right: @w; +} + +.border-right { + .border(right, 4px); +} +.border-left { + .border(left, 4px); +} + +// + + +.border-radius (@r) { + both: @r * 10; +} +.border-radius (@r, left) { + left: @r; +} +.border-radius (@r, right) { + right: @r; +} + +.only-right { + .border-radius(33, right); +} +.only-left { + .border-radius(33, left); +} +.left-right { + .border-radius(33); +} + +.hola(hello, @hello...) { + color: blue; +} + +#hola { + .hola(hello, world); +} + +.resty(@hello, @world, @the_rest...) { + padding: @hello @world; + rest: @the_rest; +} + +.defaults(@aa, @bb:e343, @cc: "heah", ...) { + height: @aa; +} + +#defaults_1 { + .defaults(one); + .defaults(two, one); + .defaults(three, two, one); + .defaults(four, three, two, one); +} + + +.thing() { color: green; } +.thing(...) { color: blue; } +.thing { color: red; } + +#aa { + .thing(); +} + +#bb { + .thing; +} + + +#cc { + .thing(1); +} + + + diff --git a/vendor/leafo/lessphp/tests/inputs/scopes.less b/vendor/leafo/lessphp/tests/inputs/scopes.less new file mode 100644 index 00000000..42e46969 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/scopes.less @@ -0,0 +1,40 @@ + + +@a: 10; +@some { + @b: @a + 10; + div { + @c: @b + 10; + other { + @d: @c + 10; + world { + @e: @d + 10; + height: @e; + } + } + } +} + + +body { + @some; +} + +@some; + +.test(@x: 10) { + height: @x; + .test(@y: 11) { + height: @y; + .test(@z: 12) { + height: @z; + } + .test; + } + .test; +} + +pre { + .test; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/selector_expressions.less b/vendor/leafo/lessphp/tests/inputs/selector_expressions.less new file mode 100644 index 00000000..b8aa2214 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/selector_expressions.less @@ -0,0 +1,29 @@ + +@color: blue; + +something @{color}, world { + color: blue; +} + +.div { + @color: red; + (3434) { + height: 100px; + } + + cool @{color} { + height: 4000px; + } +} + +.heck(@a) { color: @a+10 } + +.spanX (@index) when (@index > 0) { + .span@{index} { .heck(@index) } + .spanX(@index - 1); +} +.spanX (0) {} + +.spanX (5); + + diff --git a/vendor/leafo/lessphp/tests/inputs/site_demos.less b/vendor/leafo/lessphp/tests/inputs/site_demos.less new file mode 100644 index 00000000..08d7f1e5 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/site_demos.less @@ -0,0 +1,120 @@ +// these are the demos from the lessphp homepage + +default { + @base: 24px; + @border-color: #B2B; + + .underline { border-bottom: 1px solid green } + + #header { + color: black; + border: 1px solid @border-color + #222222; + + .navigation { + font-size: @base / 2; + a { + .underline; + } + } + .logo { + width: 300px; + &:hover { text-decoration: none } + } + } +} + +variables { + @a: 2; + @x: @a * @a; + @y: @x + 1; + @z: @x * 2 + @y; + + @nice-blue: #5B83AD; + @light-blue: @nice-blue + #111; + + @b: @a * 10; + @c: #888; + @fonts: "Trebuchet MS", Verdana, sans-serif; + + .variables { + width: @z + 1cm; // 14cm + height: @b + @x + 0px; // 24px + color: @c; + background: @light-blue; + font-family: @fonts; + } +} + +mixins { + .bordered { + border-top: dotted 1px black; + border-bottom: solid 2px black; + } + #menu a { + color: #111; + .bordered; + } + + .post a { + color: red; + .bordered; + } +} + +nested-rules { + #header { + color: black; + + .navigation { + font-size: 12px; + } + .logo { + width: 300px; + &:hover { text-decoration: none } + } + } +} + +namespaces { + #bundle { + .button { + display: block; + border: 1px solid black; + background-color: grey; + &:hover { background-color: white } + } + } + #header a { + color: orange; + #bundle > .button; // mixin the button class + } +} + +mixin-functions { + @outer: 10px; + @class(@var:22px, @car: 400px + @outer) { + margin: @var; + height: @car; + } + + @group { + @f(@color) { + color: @color; + } + .cool { + border-bottom: 1px solid green; + } + } + + .class(@width:200px) { + padding: @width; + } + + body { + .class(2.0em); + @group > @f(red); + @class(10px, 10px + 2); + @group > .cool; + } +} + diff --git a/vendor/leafo/lessphp/tests/inputs/test-imports/a.less b/vendor/leafo/lessphp/tests/inputs/test-imports/a.less new file mode 100644 index 00000000..a00464db --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/test-imports/a.less @@ -0,0 +1,6 @@ +.just-a-class { background: red; } + +.some-mixin() { + height: 200px; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/test-imports/b.less b/vendor/leafo/lessphp/tests/inputs/test-imports/b.less new file mode 100644 index 00000000..599ed3a4 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/test-imports/b.less @@ -0,0 +1,12 @@ +.just-a-class { background: blue; } + +.hello { + .some-mixin(); +} + + +@media cool { + color: red; + .some-mixin(); +} + diff --git a/vendor/leafo/lessphp/tests/inputs/test-imports/file1.less b/vendor/leafo/lessphp/tests/inputs/test-imports/file1.less new file mode 100644 index 00000000..658de0c5 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/test-imports/file1.less @@ -0,0 +1,16 @@ + + +/** + * This is a test import file + */ + +@colors { + div.bright { + color: red; + } + + div.sad { + color: blue; + } +} + diff --git a/vendor/leafo/lessphp/tests/inputs/test-imports/file2.less b/vendor/leafo/lessphp/tests/inputs/test-imports/file2.less new file mode 100644 index 00000000..2cae8dce --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/test-imports/file2.less @@ -0,0 +1,6 @@ + +b { + color: @color; + padding: 16px; +} + diff --git a/vendor/leafo/lessphp/tests/inputs/test-imports/file3.less b/vendor/leafo/lessphp/tests/inputs/test-imports/file3.less new file mode 100644 index 00000000..28b643ea --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/test-imports/file3.less @@ -0,0 +1,7 @@ + +h2 { + background: url("../images/logo.png") no-repeat; +} + +@someValue: hello-from-file-3; + diff --git a/vendor/leafo/lessphp/tests/inputs/test-imports/inner/file1.less b/vendor/leafo/lessphp/tests/inputs/test-imports/inner/file1.less new file mode 100644 index 00000000..df654a7e --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/test-imports/inner/file1.less @@ -0,0 +1,6 @@ + +.inner { + content: "inner/file1.less" +} + +@import "file2"; // should get the one in inner diff --git a/vendor/leafo/lessphp/tests/inputs/test-imports/inner/file2.less b/vendor/leafo/lessphp/tests/inputs/test-imports/inner/file2.less new file mode 100644 index 00000000..f40d3c67 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/test-imports/inner/file2.less @@ -0,0 +1,4 @@ + +.inner { + content: "inner/file2.less" +} diff --git a/vendor/leafo/lessphp/tests/inputs/variables.less b/vendor/leafo/lessphp/tests/inputs/variables.less new file mode 100644 index 00000000..6e18eb80 --- /dev/null +++ b/vendor/leafo/lessphp/tests/inputs/variables.less @@ -0,0 +1,44 @@ +@a: 2; +@x: @a * @a; +@y: @x + 1; +@z: @y + @x * 2; +@m: @z % @y; + +@nice-blue: #5B83AD; +@light-blue: @nice-blue + #111; + +@rgb-color: rgb(20%, 15%, 80%); +@rgba-color: rgba(23,68,149,0.5); + +@b: @a * 10px; +@c: #888; +@fonts: "Trebuchet MS", Verdana, sans-serif; + +.variables { + width: @z + 1cm; // 14cm + height: @b + @x + 0px; // 24px + margin-top: -@b; // -20px + margin-bottom: 10 - -@b; // 30px + @d: @c + #001; + color: @d; + background: @light-blue; + font-family: @fonts; + margin: @m + 0px; // 3px + font: 10px/12px serif; + font: 120%/120% serif; +} + +.external { + color: @c; + border: 1px solid @rgb-color; + background: @rgba-color; +} + +@hello: 44px; +@something: "hello"; +@cool: something; + +outer1: @@something; +outer2: @@@cool; + + |