-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
_remove.list.function.scss
61 lines (55 loc) · 2.84 KB
/
_remove.list.function.scss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Sass.
@use "sass:list";
@use "sass:meta";
// Functions.
@use "../has/has.type.function" as has-type;
// Completed
// The `list.remove-list()` or `remove.list()` function removes element of the list type from the given `$list`.
// @param `$length` The length of the list to be removed.
// (false) An optional length of the list to remove.
// @param `$bracketed` The value of the bool type indicates the bracketed list to remove.
// true (remove bracketed), false (do not remove bracketed), only (remove only bracketed)
// @returns The returned value is a copy of `$list` without list and/or bracketed optionally of the given length.
@function list($list, $length: false, $bracketed: true) {
@if has-type.type($list, any, "==", list) {
$result: ();
@each $element in $list {
$append: true;
@if meta.type-of($element) == list {
$append: false;
@if not $bracketed and list.is-bracketed($element) {
$append: true;
} @else {
@if meta.type-of($length) == number {
$append: not (list.length($element) == $length);
}
@if $bracketed == only and not list.is-bracketed($element) {
$append: true;
}
}
}
@if $append {
$result: list.append($result, $element, list.separator($list));
}
}
@return $result;
}
@return $list;
}
// Examples.
// @debug list(('a', 'b', 'c')); // "a", "b", "c"
// @debug list(('a', 'b', 'c', ('d', 'e', 'f'))); // "a", "b", "c"
// @debug list(('a', 'b', 'c', ('d', 'e', 'f'), 'g', 'h', (1, 2, 3))); // "a", "b", "c", "g", "h"
// @debug list(('a', 'b', 'c', ('d', (1, 2, 3, (4, 5, 6)), 'e', 'f'))); // "a", "b", "c"
// length
// @debug list((a, (4, 5), b, [d, e, f], c, [1, 2], g, (6, 7, 8), h, i), 2); // a, b, [d, e, f], c, g, (6, 7, 8), h, i
// @debug list((a, (), (4, 5), b, (), [d, e, f], (), c, [1, 2], (), g, (6, 7, 8), h, i), 0); // a, (4, 5), b, [d, e, f], c, [1, 2], g, (6, 7, 8), h, i
// bracketed
// @debug list((a, (4, 5), b, c, [d, e, f], [1, 2], g, (6, 7, 8), h, i), $bracketed: true); // a, b, c, g, h, i
// @debug list((a, (4, 5), b, [d, e, f], c, [1, 2], g, (6, 7, 8), h, i), $bracketed: false); // a, b, [d, e, f], c, [1, 2], g, h, i
// @debug list((a, (4, 5), b, [d, e, f], c, [1, 2], g, (6, 7, 8), h, i), $bracketed: only); // a, (4, 5), b, c, g, (6, 7, 8), h, i
// length + bracketed
// @debug list((a, (4, 5), b, [d, e, f], c, [1, 2], g, (6, 7, 8), h, i), 2, false); // a, b, [d, e, f], c, [1, 2], g, (6, 7, 8), h, i
// @debug list((a, (4, 5), b, [d, e, f], c, [1, 2], g, (6, 7, 8), h, i), 2, only); // a, (4, 5), b, [d, e, f], c, g, (6, 7, 8), h, i
// @debug list((a, (4, 5), b, [d, e, f], c, [1, 2], g, (6, 7, 8), h, i), 2, false); // a, b, [d, e, f], c, [1, 2], g, h, i
// @debug list((a, (4, 5), b, c, [d, e, f], [1, 2], g, (6, 7, 8), h, i), $bracketed: true); // a, b, c, g, h, i