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...);
 | |
| } |