@function _radial-arg-parser($G1, $G2, $pos, $shape-size) { @each $value in $G1, $G2 { $first-val: nth($value, 1); $pos-type: type-of($first-val); $spec-at-index: null; // Determine if spec was passed to mixin @if type-of($value) == list { $spec-at-index: if(index($value, at), index($value, at), false); } @if $spec-at-index { @if $spec-at-index > 1 { @for $i from 1 through ($spec-at-index - 1) { $shape-size: $shape-size nth($value, $i); } @for $i from ($spec-at-index + 1) through length($value) { $pos: $pos nth($value, $i); } } @else if $spec-at-index == 1 { @for $i from ($spec-at-index + 1) through length($value) { $pos: $pos nth($value, $i); } } $G1: null; } // If not spec calculate correct values @else { @if ($pos-type != color) or ($first-val != "transparent") { @if ($pos-type == number) or ($first-val == "center") or ($first-val == "top") or ($first-val == "right") or ($first-val == "bottom") or ($first-val == "left") { $pos: $value; @if $pos == $G1 { $G1: null; } } @else if ($first-val == "ellipse") or ($first-val == "circle") or ($first-val == "closest-side") or ($first-val == "closest-corner") or ($first-val == "farthest-side") or ($first-val == "farthest-corner") or ($first-val == "contain") or ($first-val == "cover") { $shape-size: $value; @if $value == $G1 { $G1: null; } @else if $value == $G2 { $G2: null; } } } } } @return $G1, $G2, $pos, $shape-size; }