90 lines
1.9 KiB
SCSS
90 lines
1.9 KiB
SCSS
/// Removes a specific item from a list.
|
|
/// @author Hugo Giraudel
|
|
/// @param {list} $list List.
|
|
/// @param {integer} $index Index.
|
|
/// @return {list} Updated list.
|
|
@function remove-nth($list, $index) {
|
|
|
|
$result: null;
|
|
|
|
@if type-of($index) != number {
|
|
@warn "$index: #{quote($index)} is not a number for `remove-nth`.";
|
|
}
|
|
@else if $index == 0 {
|
|
@warn "List index 0 must be a non-zero integer for `remove-nth`.";
|
|
}
|
|
@else if abs($index) > length($list) {
|
|
@warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
|
|
}
|
|
@else {
|
|
|
|
$result: ();
|
|
$index: if($index < 0, length($list) + $index + 1, $index);
|
|
|
|
@for $i from 1 through length($list) {
|
|
|
|
@if $i != $index {
|
|
$result: append($result, nth($list, $i));
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@return $result;
|
|
|
|
}
|
|
|
|
/// Gets a value from a map.
|
|
/// @author Hugo Giraudel
|
|
/// @param {map} $map Map.
|
|
/// @param {string} $keys Key(s).
|
|
/// @return {string} Value.
|
|
@function val($map, $keys...) {
|
|
|
|
@if nth($keys, 1) == null {
|
|
$keys: remove-nth($keys, 1);
|
|
}
|
|
|
|
@each $key in $keys {
|
|
$map: map-get($map, $key);
|
|
}
|
|
|
|
@return $map;
|
|
|
|
}
|
|
|
|
/// Gets a duration value.
|
|
/// @param {string} $keys Key(s).
|
|
/// @return {string} Value.
|
|
@function _duration($keys...) {
|
|
@return val($duration, $keys...);
|
|
}
|
|
|
|
/// Gets a font value.
|
|
/// @param {string} $keys Key(s).
|
|
/// @return {string} Value.
|
|
@function _font($keys...) {
|
|
@return val($font, $keys...);
|
|
}
|
|
|
|
/// Gets a misc value.
|
|
/// @param {string} $keys Key(s).
|
|
/// @return {string} Value.
|
|
@function _misc($keys...) {
|
|
@return val($misc, $keys...);
|
|
}
|
|
|
|
/// Gets a palette value.
|
|
/// @param {string} $keys Key(s).
|
|
/// @return {string} Value.
|
|
@function _palette($keys...) {
|
|
@return val($palette, $keys...);
|
|
}
|
|
|
|
/// Gets a size value.
|
|
/// @param {string} $keys Key(s).
|
|
/// @return {string} Value.
|
|
@function _size($keys...) {
|
|
@return val($size, $keys...);
|
|
} |