| @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); |
| } |