62 lines
1.9 KiB
SCSS
62 lines
1.9 KiB
SCSS
@function _linear-positions-parser($pos) {
|
|
$type: type-of(nth($pos, 1));
|
|
$spec: null;
|
|
$degree: null;
|
|
$side: null;
|
|
$corner: null;
|
|
$length: length($pos);
|
|
// Parse Side and corner positions
|
|
@if ($length > 1) {
|
|
@if nth($pos, 1) == "to" { // Newer syntax
|
|
$side: nth($pos, 2);
|
|
|
|
@if $length == 2 { // eg. to top
|
|
// Swap for backwards compatability
|
|
$degree: _position-flipper(nth($pos, 2));
|
|
}
|
|
@else if $length == 3 { // eg. to top left
|
|
$corner: nth($pos, 3);
|
|
}
|
|
}
|
|
@else if $length == 2 { // Older syntax ("top left")
|
|
$side: _position-flipper(nth($pos, 1));
|
|
$corner: _position-flipper(nth($pos, 2));
|
|
}
|
|
|
|
@if ("#{$side} #{$corner}" == "left top") or ("#{$side} #{$corner}" == "top left") {
|
|
$degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
|
|
}
|
|
@else if ("#{$side} #{$corner}" == "right top") or ("#{$side} #{$corner}" == "top right") {
|
|
$degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
|
|
}
|
|
@else if ("#{$side} #{$corner}" == "right bottom") or ("#{$side} #{$corner}" == "bottom right") {
|
|
$degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
|
|
}
|
|
@else if ("#{$side} #{$corner}" == "left bottom") or ("#{$side} #{$corner}" == "bottom left") {
|
|
$degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
|
|
}
|
|
$spec: to $side $corner;
|
|
}
|
|
@else if $length == 1 {
|
|
// Swap for backwards compatability
|
|
@if $type == string {
|
|
$degree: $pos;
|
|
$spec: to _position-flipper($pos);
|
|
}
|
|
@else {
|
|
$degree: -270 - $pos; //rotate the gradient opposite from spec
|
|
$spec: $pos;
|
|
}
|
|
}
|
|
$degree: unquote($degree + ",");
|
|
$spec: unquote($spec + ",");
|
|
@return $degree $spec;
|
|
}
|
|
|
|
@function _position-flipper($pos) {
|
|
@return if($pos == left, right, null)
|
|
if($pos == right, left, null)
|
|
if($pos == top, bottom, null)
|
|
if($pos == bottom, top, null);
|
|
}
|