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