Browse Source

Added -compass-space-list, first-value-of, color-stops. Added border-radius test.

master
Michael Hellein 11 years ago
parent
commit
04f5b84ef3
  1. 1
      lib/compass/_functions.scss
  2. 4
      lib/compass/css3/_border-radius.scss
  3. 4
      lib/compass/functions/_cross_browser_support.scss
  4. 15
      lib/compass/functions/_gradient_support.scss
  5. 17
      lib/compass/functions/_lists.scss
  6. 13
      test/css3/borderRadiusSpec.js
  7. 7
      test/css3/imagesSpec.js
  8. 25
      test/functionsSpec.js

1
lib/compass/_functions.scss

@ -1,2 +1,3 @@
@import "functions/lists";
@import "functions/cross_browser_support";
@import "functions/gradient_support";

4
lib/compass/css3/_border-radius.scss

@ -47,7 +47,7 @@ $default-border-radius: 5px !default;
not(-o),
not(-ms),
not(-khtml),
not official
not(official)
);
@include experimental("border-radius", $radius unquote("/") $vertical-radius,
-moz,
@ -76,7 +76,7 @@ $default-border-radius: 5px !default;
not(-o),
not(-ms),
not(-khtml),
not official
not(official)
);
@include experimental("border-#{$vert}-#{$horz}-radius", $radius,
not(-moz),

4
lib/compass/functions/_cross_browser_support.scss

@ -31,7 +31,9 @@
@each $item in $properties {
@if $item == null {}
@else {
$item: #{$prefix}-#{$item};
@if prefixed($prefix, $item) {
$item: #{$prefix}-#{$item};
}
@if $props {
$props: $props, $item;
}

15
lib/compass/functions/_gradient_support.scss

@ -0,0 +1,15 @@
/*
* A partial implementation of the Ruby gradient support functions from Compass:
* https://github.com/Compass/compass/blob/v0.12.2/lib/compass/sass_extensions/functions/gradient_support.rb
*/
@function color-stops($item1, $item2:null, $item3:null, $item4:null, $item5:null, $item6:null, $item7:null, $item8:null, $item9:null) {
$items: $item2, $item3, $item4, $item5, $item6, $item7, $item8, $item9;
$full: $item1;
@each $item in $items {
@if $item != null {
$full: $full, $item;
}
}
@return $full;
}

17
lib/compass/functions/_lists.scss

@ -17,7 +17,18 @@
@return nth($list, $place);
}
// compass_list and compass_space_list can't be implemented in sass script
// compass_list can't be implemented in sass script
@function -compass-space-list($item1, $item2:null, $item3:null, $item4:null, $item5:null, $item6:null, $item7:null, $item8:null, $item9:null) {
$items: $item2, $item3, $item4, $item5, $item6, $item7, $item8, $item9;
$full: $item1;
@each $item in $items {
@if $item != null {
$full: $full $item;
}
}
@return $full;
}
@function -compass-list-size($list) {
@return length($list);
@ -51,3 +62,7 @@
}
@return $full;
}
@function first-value-of($list) {
@return nth($list, 1);
}

13
test/css3/borderRadiusSpec.js

@ -0,0 +1,13 @@
var render = require('../helper/render');
var ruleset = require('../helper/ruleset');
describe("CSS3 Border Radius", function () {
it("should generate a border radius", function (done) {
render(ruleset('$experimental-support-for-mozilla: false; $experimental-support-for-opera: false; @include border-radius(0, 0);'), function(output, err) {
expect(output).toBe(ruleset('-webkit-border-radius:0 0;border-radius:0 / 0;'));
done();
}, ['compass/css3/border-radius']);
});
});

7
test/css3/imagesSpec.js

@ -17,4 +17,11 @@ describe("CSS3 Images", function () {
}, ['compass/css3/images']);
});
it("should generate multiple backgrounds of different types", function (done) {
render(ruleset('$support-for-original-webkit-gradients: false; $experimental-support-for-mozilla: false; $experimental-support-for-opera: false; @include background(#fff, url(1.gif), linear-gradient(white, black));'), function(output, err) {
expect(output).toBe(ruleset('background:#fff,url(1.gif),-webkit-linear-gradient(#ffffff, #000000);background:#fff,url(1.gif),linear-gradient(#ffffff, #000000);'));
done();
}, ['compass/css3/images']);
});
});

25
test/functionsSpec.js

@ -46,6 +46,20 @@ describe("List Functions", function () {
});
});
it("should get the first value of a list", function(done) {
render('$list: one, two, three, four;' + property('first-value-of($list)'), function(output, err) {
expect(output).toBe(property('one'));
done();
});
});
it("should create a space-delimited list", function(done) {
render(property('-compass-space-list(a, b, c)'), function(output, err) {
expect(output).toBe(property('a b c'));
done();
});
});
});
describe("Cross Browser Functions", function () {
@ -107,3 +121,14 @@ describe("Cross Browser Functions", function () {
});
});
describe("Gradient Functions", function () {
it("should prefix a list with color stops", function(done) {
render(property('prefix(-webkit, linear-gradient(-45deg, color-stops(rgb(0,0,0) 25%, transparent 75%, transparent)), linear-gradient(-45deg, color-stops(#000 25%, transparent 75%, transparent)))'), function(output, err) {
expect(output).toBe(property('-webkit-linear-gradient(-45deg, #000000 25%, transparent 75%, transparent),-webkit-linear-gradient(-45deg, #000 25%, transparent 75%, transparent)'));
done();
});
});
});
Loading…
Cancel
Save