82 lines
1.8 KiB
SCSS
82 lines
1.8 KiB
SCSS
//
|
|
// Get
|
|
//
|
|
|
|
@function get($map, $keys...) {
|
|
@if length($keys) == 1 {
|
|
$keys: nth($keys, 1);
|
|
}
|
|
|
|
@if type-of($map) != 'map' or $map == null {
|
|
//@return false;
|
|
}
|
|
|
|
$warn: "#{nth($keys, 1)}";
|
|
$length: length($keys);
|
|
$get: map-get($map, nth($keys, 1));
|
|
|
|
@if $length > 1 {
|
|
@for $i from 2 through $length {
|
|
@if $get != null and type-of($get) == 'map' {
|
|
$warn: $warn + "->#{nth($keys, $i)}";
|
|
$get: map-get($get, nth($keys, $i));
|
|
|
|
@if $get == null {
|
|
@return null;
|
|
}
|
|
}
|
|
@else {
|
|
@return get-warning($warn, $get, nth($keys, $i));
|
|
}
|
|
}
|
|
}
|
|
|
|
@return $get;
|
|
}
|
|
|
|
@function has($map, $keys...) {
|
|
@if length($keys) == 1 {
|
|
$keys: nth($keys, 1);
|
|
}
|
|
|
|
@if type-of($map) != 'map' or $map == null {
|
|
//@return false;
|
|
}
|
|
|
|
$warn: "#{nth($keys, 1)}";
|
|
$length: length($keys);
|
|
$get: map-get($map, nth($keys, 1));
|
|
|
|
@if $length > 1 {
|
|
@for $i from 2 through $length {
|
|
@if $get != null and type-of($get) == 'map' {
|
|
$warn: $warn + "->#{nth($keys, $i)}";
|
|
$get: map-get($get, nth($keys, $i));
|
|
|
|
@if $get == null {
|
|
@return false;
|
|
}
|
|
}
|
|
@else {
|
|
@return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
@if $get != null {
|
|
@return true;
|
|
}
|
|
@else {
|
|
@return false;
|
|
}
|
|
}
|
|
|
|
@function get-warning($warn, $get, $key) {
|
|
@if $get == null {
|
|
@warn "Map has no value for key search `#{$warn}`";
|
|
}
|
|
@else if type-of($get) != 'map' {
|
|
@warn "Non-map value found for key search `#{$warn}`, cannot search for key `#{$key}`";
|
|
}
|
|
@return null;
|
|
} |