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