70 lines
1.8 KiB
SCSS
70 lines
1.8 KiB
SCSS
@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;
|
|
}
|