SassyLists 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +8 -4
- data/lib/SassyLists.rb +2 -2
- data/stylesheets/SassyLists/_chunk.scss +15 -3
- data/stylesheets/SassyLists/_contain.scss +1 -0
- data/stylesheets/SassyLists/_debug.scss +10 -4
- data/stylesheets/SassyLists/_explode.scss +11 -6
- data/stylesheets/SassyLists/_first.scss +6 -1
- data/stylesheets/SassyLists/_flatten.scss +8 -6
- data/stylesheets/SassyLists/_has-multiple-values.scss +11 -0
- data/stylesheets/SassyLists/_has-values.scss +11 -0
- data/stylesheets/SassyLists/_insert-nth.scss +2 -2
- data/stylesheets/SassyLists/_intersection.scss +3 -3
- data/stylesheets/SassyLists/_is-empty.scss +1 -1
- data/stylesheets/SassyLists/_is-single.scss +11 -0
- data/stylesheets/SassyLists/_is-symmetrical.scss +1 -0
- data/stylesheets/SassyLists/_last-index.scss +1 -3
- data/stylesheets/SassyLists/_last.scss +5 -1
- data/stylesheets/SassyLists/_loop.scss +7 -2
- data/stylesheets/SassyLists/_prepend.scss +4 -5
- data/stylesheets/SassyLists/_purge.scss +4 -2
- data/stylesheets/SassyLists/_random-value.scss +8 -2
- data/stylesheets/SassyLists/_range.scss +40 -0
- data/stylesheets/SassyLists/_remove-duplicates.scss +8 -3
- data/stylesheets/SassyLists/_remove-nth.scss +1 -0
- data/stylesheets/SassyLists/_remove.scss +1 -0
- data/stylesheets/SassyLists/_replace-nth.scss +6 -3
- data/stylesheets/SassyLists/_replace.scss +5 -2
- data/stylesheets/SassyLists/_reverse.scss +7 -2
- data/stylesheets/SassyLists/_shuffle.scss +6 -1
- data/stylesheets/SassyLists/_slice.scss +0 -4
- data/stylesheets/SassyLists/_sort.scss +12 -5
- data/stylesheets/SassyLists/_sum.scss +17 -11
- data/stylesheets/SassyLists/_tail.scss +1 -0
- data/stylesheets/SassyLists/_to-list.scss +13 -2
- data/stylesheets/SassyLists/_to-map.scss +11 -21
- data/stylesheets/SassyLists/_to-string.scss +13 -5
- data/stylesheets/SassyLists/_union.scss +1 -1
- data/stylesheets/SassyLists/_walk.scss +10 -5
- data/stylesheets/SassyLists/helpers/_is-number.scss +11 -0
- data/stylesheets/_SassyLists.scss +5 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bc911e8854740e20b09b1b091700972ff4f048d
|
4
|
+
data.tar.gz: 051110d6e5cce8ce43953e29f12e1c5922e3a949
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2baf6768c31fa2a54b5d339ccd43e9a1d0907277dc03a4a1ba265abf8d6623298699b7ab964ef1236f76a59085807613fa34871ab802202e505fef782b387cb
|
7
|
+
data.tar.gz: e3ad19705d8548916c12456c1312e93496d7a1963d265fa1cf54efb7b41799aa0abc016ea9d3c5d6494d4a7d2ef561822162acc29a8f07650e03d2e391b382d1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
* `2.2.0`:
|
4
|
+
* adding `sl-range()`, `sl-is-single()`, `sl-has-values()`, `sl-has-multiple-values()`
|
5
|
+
* updating `sl-sum()` and `sl-to-map()`
|
6
|
+
* making the whole library depending on most of the previously created helpers
|
7
|
+
* making most functions returning `list` type, even when returning a single value
|
3
8
|
* `2.1.1`: fixing a tiny issue with dependency checker in `preprend()`
|
4
9
|
* `2.1.0`: adding `sl-is-empty()`, `sl-to-list()` and `sl-comma-list()`
|
5
10
|
* `2.0.0`:
|
data/README.md
CHANGED
@@ -21,18 +21,22 @@ Here is a powerful toolbox providing you all the functions you need to manipulat
|
|
21
21
|
* `sl-debug()`: returns list as a string
|
22
22
|
* `sl-every()`: returns whether all items from list pass test from given function
|
23
23
|
* `sl-explode()`: explodes a string into a list using a string as a delimiter
|
24
|
-
* `sl-first()`: returns first
|
24
|
+
* `sl-first()`: returns first value in list
|
25
25
|
* `sl-flatten()`: turns multidimensional list into a one-level list
|
26
|
+
* `sl-has-values()`: checks if list is not empty
|
27
|
+
* `sl-has-multiple-values()`: checks if list has more than one value
|
26
28
|
* `sl-insert-nth()`: inserts value at index
|
27
29
|
* `sl-intersection()`: returns a list of shared values across all given lists
|
28
30
|
* `sl-is-empty()`: checks if list is empty
|
31
|
+
* `sl-is-single()`: checks if list has a single value
|
29
32
|
* `sl-is-symmetrical()`: checks if list is symmetrical
|
30
|
-
* `sl-last()`: returns last
|
33
|
+
* `sl-last()`: returns last value in list
|
31
34
|
* `sl-last-index()`: returns last index of value in list
|
32
35
|
* `sl-loop()`: shifts indexes in list
|
33
36
|
* `sl-prepend()`: prepends value to list
|
34
37
|
* `sl-purge()`: removes all `false` and `null` values from list
|
35
38
|
* `sl-random-value()`: returns random value from list
|
39
|
+
* `sl-range()`: returns a list of values between 1 and given value
|
36
40
|
* `sl-remove()`: removes value in list
|
37
41
|
* `sl-remove-duplicates()`: removes duplicate values from list
|
38
42
|
* `sl-remove-nth()`: removes value at index
|
@@ -42,14 +46,14 @@ Here is a powerful toolbox providing you all the functions you need to manipulat
|
|
42
46
|
* `sl-shuffle()`: shuffles list
|
43
47
|
* `sl-slice()`: slices list
|
44
48
|
* `sl-sort()`: sorts list
|
45
|
-
* `sl-some()`: returns whether some
|
49
|
+
* `sl-some()`: returns whether some values from list pass test from given function
|
46
50
|
* `sl-sum()`: sums all unitless values in list
|
47
51
|
* `sl-tail()`: returns anything but the first element in list
|
48
52
|
* `sl-to-list()`: casts value as list
|
49
53
|
* `sl-to-map()`: casts list as map using indexes as keys
|
50
54
|
* `sl-to-string()`: casts list as string (JS `.join()`)
|
51
55
|
* `sl-union()`: returns a list of values from given lists minus duplicates
|
52
|
-
* `sl-walk()`: applies a function to every
|
56
|
+
* `sl-walk()`: applies a function to every value of list
|
53
57
|
|
54
58
|
If you feel like an explorer, you can have a look at the code [here](https://github.com/Team-Sass/SassyLists/tree/master/stylesheets).
|
55
59
|
|
data/lib/SassyLists.rb
CHANGED
@@ -15,7 +15,7 @@ end
|
|
15
15
|
# Version is a number. If a version contains alphas, it will be created as a prerelease version
|
16
16
|
# Date is in the form of YYYY-MM-DD
|
17
17
|
module SassyLists
|
18
|
-
VERSION = "2.
|
19
|
-
DATE = "2014-07-
|
18
|
+
VERSION = "2.2.0"
|
19
|
+
DATE = "2014-07-03"
|
20
20
|
end
|
21
21
|
|
@@ -7,16 +7,20 @@
|
|
7
7
|
//
|
8
8
|
// @throws $size is not a number for `sl-chunk`.
|
9
9
|
//
|
10
|
+
// @requires sl-to-list
|
11
|
+
//
|
10
12
|
// @return {List | Null}
|
11
13
|
|
12
14
|
@function sl-chunk($list, $size) {
|
15
|
+
@if sl-missing-dependencies(sl-to-list) == true { @return null; }
|
16
|
+
|
13
17
|
@if type-of($size) != "number" {
|
14
|
-
@warn "#{$size} is not a number for `sl-chunk`.";
|
18
|
+
@warn "#{inspect($size)} is not a number for `sl-chunk`.";
|
15
19
|
@return null;
|
16
20
|
}
|
17
21
|
|
18
22
|
@if $size >= length($list) {
|
19
|
-
@return $list;
|
23
|
+
@return sl-to-list($list);
|
20
24
|
}
|
21
25
|
|
22
26
|
$index: 1;
|
@@ -30,8 +34,16 @@
|
|
30
34
|
@for $j from 1 through $size {
|
31
35
|
@if $index <= $length {
|
32
36
|
$is-orphan: $length % $size == 1 and $j == 1;
|
33
|
-
|
37
|
+
|
38
|
+
@if $is-orphan {
|
39
|
+
$tmp: nth($list, $index);
|
40
|
+
}
|
41
|
+
|
42
|
+
@else {
|
43
|
+
$tmp: append($tmp, nth($list, $index), list-separator($list));
|
44
|
+
}
|
34
45
|
}
|
46
|
+
|
35
47
|
$index: $index + 1;
|
36
48
|
}
|
37
49
|
|
@@ -6,14 +6,20 @@
|
|
6
6
|
// @param {Bool} $pre (false) - enable/disable variables type and proper indentation
|
7
7
|
// @param {Number} $level (1) - internal variable for recursion
|
8
8
|
//
|
9
|
+
// @requires sl-is-empty
|
10
|
+
// @requires sl-is-single
|
11
|
+
// @requires sl-has-multiple-values
|
12
|
+
//
|
9
13
|
// @return {String}
|
10
14
|
|
11
15
|
@function sl-debug($list, $pre: false, $level: 1) {
|
12
|
-
@if
|
16
|
+
@if sl-missing-dependencies(sl-is-empty, sl-is-single, sl-has-multiple-values) == true { @return null; }
|
17
|
+
|
18
|
+
@if sl-is-empty($list) {
|
13
19
|
@return "( )";
|
14
20
|
}
|
15
21
|
|
16
|
-
@if
|
22
|
+
@if sl-is-single($list) {
|
17
23
|
@return if($pre, "(" + type-of($list) + ") ", "") + $list;
|
18
24
|
}
|
19
25
|
|
@@ -32,7 +38,7 @@
|
|
32
38
|
$item: nth($list, $i);
|
33
39
|
$result: $result + if($pre, $indent + $tab, " ");
|
34
40
|
|
35
|
-
@if
|
41
|
+
@if sl-has-multiple-values($item) {
|
36
42
|
$result: $result
|
37
43
|
+ if($pre, "(list: " + length($item) + ") ", "")
|
38
44
|
+ sl-debug($item, $pre, $level + 1);
|
@@ -43,7 +49,7 @@
|
|
43
49
|
$result: $result + "(" + type-of($item) + ") ";
|
44
50
|
}
|
45
51
|
|
46
|
-
@if
|
52
|
+
@if sl-is-empty($item) {
|
47
53
|
$result: $result + "( )";
|
48
54
|
}
|
49
55
|
|
@@ -2,15 +2,16 @@
|
|
2
2
|
//
|
3
3
|
// @ignore Documentation: http://sassylists.com/documentation.html#sl-explode
|
4
4
|
//
|
5
|
-
// @param {String} $string
|
6
|
-
// @param {String} $
|
5
|
+
// @param {String} $string - string to explode
|
6
|
+
// @param {String} $delimiter ('') - string to use as a delimiter
|
7
|
+
// @param {String} $separator ('space') - list separator
|
7
8
|
//
|
8
9
|
// @throws $string is not a string for `sl-explode`.
|
9
10
|
// @throws $delimiter is not a string for `sl-explode`.
|
10
11
|
//
|
11
12
|
// @return {List | Null}
|
12
13
|
|
13
|
-
@function sl-explode($string, $delimiter: '') {
|
14
|
+
@function sl-explode($string, $delimiter: '', $separator: "space") {
|
14
15
|
@if type-of($string) != "string" {
|
15
16
|
@warn "`sl-explode` function expecting a string; #{type-of($string)} given.";
|
16
17
|
@return null;
|
@@ -23,6 +24,10 @@
|
|
23
24
|
|
24
25
|
$result: ();
|
25
26
|
$length: str-length($string);
|
27
|
+
|
28
|
+
@if not index("space" "comma", $separator) {
|
29
|
+
$separator: "space";
|
30
|
+
}
|
26
31
|
|
27
32
|
@if str-length($delimiter) == 0 {
|
28
33
|
@for $i from 1 through $length {
|
@@ -38,16 +43,16 @@
|
|
38
43
|
@while $running {
|
39
44
|
$index: str-index($remaining, $delimiter);
|
40
45
|
|
41
|
-
@if not $index
|
46
|
+
@if not $index {
|
42
47
|
$running: false;
|
43
48
|
}
|
44
49
|
|
45
50
|
@else {
|
46
51
|
$slice: str-slice($remaining, 1, $index - 1);
|
47
|
-
$result: append($result, $slice);
|
52
|
+
$result: append($result, $slice, $separator);
|
48
53
|
$remaining: str-slice($remaining, $index + str-length($delimiter));
|
49
54
|
}
|
50
55
|
}
|
51
56
|
|
52
|
-
@return append($result, $remaining);
|
57
|
+
@return append($result, $remaining, $separator);
|
53
58
|
}
|
@@ -6,10 +6,14 @@
|
|
6
6
|
//
|
7
7
|
// @throws Cannot find first item of empty list.
|
8
8
|
//
|
9
|
+
// @requires sl-is-empty
|
10
|
+
//
|
9
11
|
// @return {*}
|
10
12
|
|
11
13
|
@function sl-first($list) {
|
12
|
-
@if
|
14
|
+
@if sl-missing-dependencies(sl-is-empty) == true { @return null; }
|
15
|
+
|
16
|
+
@if sl-is-empty($list) {
|
13
17
|
@warn "Cannot find first item of empty list.";
|
14
18
|
@return null;
|
15
19
|
}
|
@@ -17,6 +21,7 @@
|
|
17
21
|
@return nth($list, 1);
|
18
22
|
}
|
19
23
|
|
24
|
+
// @requires sl-first
|
20
25
|
// @alias sl-first
|
21
26
|
|
22
27
|
@function sl-head($list) {
|
@@ -3,19 +3,20 @@
|
|
3
3
|
// @ignore Documentation: http://sassylists.com/documentation.html#flatten
|
4
4
|
//
|
5
5
|
// @param {List} $list - list to flatten
|
6
|
-
//
|
6
|
+
//
|
7
|
+
// @requires sl-has-multiple-values
|
8
|
+
//
|
7
9
|
// @return {List}
|
8
10
|
|
9
11
|
@function sl-flatten($list) {
|
10
|
-
|
12
|
+
@if sl-missing-dependencies(sl-has-multiple-values) == true { @return null; }
|
11
13
|
|
12
|
-
|
13
|
-
@return $list;
|
14
|
-
}
|
14
|
+
$result: ();
|
15
15
|
|
16
16
|
@each $item in $list {
|
17
|
-
@if
|
17
|
+
@if sl-has-multiple-values($item) {
|
18
18
|
$flatten: sl-flatten($item);
|
19
|
+
|
19
20
|
@each $i in $flatten {
|
20
21
|
$result: append($result, $i, list-separator($list));
|
21
22
|
}
|
@@ -29,6 +30,7 @@
|
|
29
30
|
@return $result;
|
30
31
|
}
|
31
32
|
|
33
|
+
// @requires sl-flatten
|
32
34
|
// @alias sl-flatten
|
33
35
|
|
34
36
|
@function sl-unfold($list) {
|
@@ -0,0 +1,11 @@
|
|
1
|
+
// Tests whether `$list` has at least 2 values.
|
2
|
+
//
|
3
|
+
// @ignore Documentation: http://sassylists.com/documentation.html#sl-has-multiple-values
|
4
|
+
//
|
5
|
+
// @param {List} $list - list to run test against
|
6
|
+
//
|
7
|
+
// @return {Bool}
|
8
|
+
|
9
|
+
@function sl-has-multiple-values($list) {
|
10
|
+
@return length($list) > 1;
|
11
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
// Tests whether `$list` is not empty.
|
2
|
+
//
|
3
|
+
// @ignore Documentation: http://sassylists.com/documentation.html#sl-has-values
|
4
|
+
//
|
5
|
+
// @param {List} $list - list to run test against
|
6
|
+
//
|
7
|
+
// @return {Bool}
|
8
|
+
|
9
|
+
@function sl-has-values($list) {
|
10
|
+
@return length($list) > 0;
|
11
|
+
}
|
@@ -18,8 +18,8 @@
|
|
18
18
|
|
19
19
|
$length: length($list);
|
20
20
|
|
21
|
-
@if type-of($index) != number {
|
22
|
-
@warn "List index #{$index} is not a number for `sl-insert-nth`.";
|
21
|
+
@if type-of($index) != "number" {
|
22
|
+
@warn "List index #{inspect($index)} is not a number for `sl-insert-nth`.";
|
23
23
|
@return null;
|
24
24
|
}
|
25
25
|
|
@@ -3,6 +3,7 @@
|
|
3
3
|
// @ignore Documentation: http://sassylists.com/documentation.html#sl-intersection
|
4
4
|
//
|
5
5
|
// @requires sl-remove-duplicates
|
6
|
+
// @requires sl-to-list
|
6
7
|
//
|
7
8
|
// @param {List} $list - first list
|
8
9
|
// @param {ArgList} $lists - other lists
|
@@ -26,6 +27,5 @@
|
|
26
27
|
$result: $temp;
|
27
28
|
}
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
}
|
30
|
+
@return sl-remove-duplicates($result);
|
31
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
// Tests whether `$list` has a single item.
|
2
|
+
//
|
3
|
+
// @ignore Documentation: http://sassylists.com/documentation.html#sl-is-single
|
4
|
+
//
|
5
|
+
// @param {List} $list - list to run test against
|
6
|
+
//
|
7
|
+
// @return {Bool}
|
8
|
+
|
9
|
+
@function sl-is-single($list) {
|
10
|
+
@return length($list) == 1;
|
11
|
+
}
|
@@ -6,10 +6,14 @@
|
|
6
6
|
//
|
7
7
|
// @throws Cannot find last item of empty list.
|
8
8
|
//
|
9
|
+
// @requires sl-is-empty
|
10
|
+
//
|
9
11
|
// @return {*}
|
10
12
|
|
11
13
|
@function sl-last($list) {
|
12
|
-
@if
|
14
|
+
@if sl-missing-dependencies(sl-is-empty) == true { @return null; }
|
15
|
+
|
16
|
+
@if sl-is-empty($list) {
|
13
17
|
@warn "Cannot find last item of empty list.";
|
14
18
|
@return null;
|
15
19
|
}
|
@@ -9,15 +9,19 @@
|
|
9
9
|
//
|
10
10
|
// @throws $value is not a number for `loop`.
|
11
11
|
//
|
12
|
+
// @requires sl-has-multiple-values
|
13
|
+
//
|
12
14
|
// @return {List | Null}
|
13
15
|
|
14
16
|
@function sl-loop($list, $value: 1) {
|
17
|
+
@if sl-missing-dependencies(sl-has-multiple-values) == true { @return null; }
|
18
|
+
|
15
19
|
@if type-of($value) != "number" {
|
16
|
-
@warn "#{$value} is not a number for `sl-loop`.";
|
20
|
+
@warn "#{inspect($value)} is not a number for `sl-loop`.";
|
17
21
|
@return null;
|
18
22
|
}
|
19
23
|
|
20
|
-
@if
|
24
|
+
@if not sl-has-multiple-values($list) {
|
21
25
|
@return $list;
|
22
26
|
}
|
23
27
|
|
@@ -31,6 +35,7 @@
|
|
31
35
|
@return $result;
|
32
36
|
}
|
33
37
|
|
38
|
+
// @requires sl-loop
|
34
39
|
// @alias sl-loop
|
35
40
|
|
36
41
|
@function sl-shift-indexes($list, $value: 1) {
|
@@ -3,6 +3,7 @@
|
|
3
3
|
// @ignore Documentation: http://sassylists.com/documentation.html#sl-prepend
|
4
4
|
//
|
5
5
|
// @requires sl-is-true
|
6
|
+
// @requires sl-to-list
|
6
7
|
//
|
7
8
|
// @param {List} $list - list to preprend value to
|
8
9
|
// @param {*} $value - value to prepend to the list
|
@@ -10,13 +11,11 @@
|
|
10
11
|
// @return {List}
|
11
12
|
|
12
13
|
@function sl-prepend($list, $value) {
|
13
|
-
@if sl-missing-dependencies(sl-is-true) == true { @return null; }
|
14
|
+
@if sl-missing-dependencies(sl-is-true, sl-to-list) == true { @return null; }
|
14
15
|
|
15
16
|
@if sl-is-true($value) {
|
16
|
-
|
17
|
+
$list: join($value, $list, list-separator($list));
|
17
18
|
}
|
18
19
|
|
19
|
-
@
|
20
|
-
@return $list;
|
21
|
-
}
|
20
|
+
@return sl-to-list($list);
|
22
21
|
}
|
@@ -3,13 +3,14 @@
|
|
3
3
|
// @ignore Documentation: http://sassylists.com/documentation.html#purge
|
4
4
|
//
|
5
5
|
// @requires sl-is-true
|
6
|
+
// @requires sl-to-list
|
6
7
|
//
|
7
8
|
// @param {List} $list - list to purge
|
8
9
|
//
|
9
10
|
// @return {List}
|
10
11
|
|
11
12
|
@function sl-purge($list) {
|
12
|
-
@if sl-missing-dependencies(sl-is-true) == true { @return null; }
|
13
|
+
@if sl-missing-dependencies(sl-is-true, sl-to-list) == true { @return null; }
|
13
14
|
|
14
15
|
$result: ();
|
15
16
|
|
@@ -19,9 +20,10 @@
|
|
19
20
|
}
|
20
21
|
}
|
21
22
|
|
22
|
-
@return $result;
|
23
|
+
@return sl-to-list($result);
|
23
24
|
}
|
24
25
|
|
26
|
+
// @requires sl-purge
|
25
27
|
// @alias sl-purge
|
26
28
|
|
27
29
|
@function sl-clean($list) {
|
@@ -6,23 +6,29 @@
|
|
6
6
|
//
|
7
7
|
// @throws Cannot find a random value in an empty list.
|
8
8
|
//
|
9
|
+
// @requires sl-is-empty
|
10
|
+
//
|
9
11
|
// @return {*}
|
10
12
|
|
11
13
|
@function sl-random-value($list) {
|
12
|
-
@if
|
14
|
+
@if sl-missing-dependencies(sl-is-empty) == true { @return null; }
|
15
|
+
|
16
|
+
@if sl-is-empty($list) {
|
13
17
|
@warn "Cannot find a random value in an empty list.";
|
14
18
|
@return null;
|
15
19
|
}
|
16
20
|
|
17
|
-
@return nth($list, random(length($list)));
|
21
|
+
@return nth($list, random(length($list) - 1) + 1);
|
18
22
|
}
|
19
23
|
|
24
|
+
// @requires sl-random-value
|
20
25
|
// @alias sl-random-value
|
21
26
|
|
22
27
|
@function sl-roll($list) {
|
23
28
|
@return sl-random-value($list);
|
24
29
|
}
|
25
30
|
|
31
|
+
// @requires sl-random-value
|
26
32
|
// @alias sl-random-value
|
27
33
|
|
28
34
|
@function sl-luck($list) {
|
@@ -0,0 +1,40 @@
|
|
1
|
+
// Build a list of values from 1 through `$n`.
|
2
|
+
//
|
3
|
+
// @ignore Documentation: http://sassylists.com/documentation.html#sl-range
|
4
|
+
//
|
5
|
+
// @param {Number} $n - maximum value
|
6
|
+
//
|
7
|
+
// @throws `$n` is not a number for `sl-range`.
|
8
|
+
// @throws `$n` is not unitless for `sl-range`.
|
9
|
+
// @throws `$n` is not greater than 0 for `sl-range`.
|
10
|
+
//
|
11
|
+
// @return {List | Number | Null}
|
12
|
+
|
13
|
+
@function sl-range($n) {
|
14
|
+
@if type-of($n) != "number" {
|
15
|
+
@warn "`#{inspect($n)}` is not a number for `sl-range`.";
|
16
|
+
@return null;
|
17
|
+
}
|
18
|
+
|
19
|
+
@if not unitless($n) {
|
20
|
+
@warn "`#{$n}` is not unitless for `sl-range`.";
|
21
|
+
@return null;
|
22
|
+
}
|
23
|
+
|
24
|
+
@if $n < 1 {
|
25
|
+
@warn "`#{$n}` is not greater than 0 for `sl-range`.";
|
26
|
+
@return null;
|
27
|
+
}
|
28
|
+
|
29
|
+
@if $n == 1 {
|
30
|
+
@return $n;
|
31
|
+
}
|
32
|
+
|
33
|
+
$range: ();
|
34
|
+
|
35
|
+
@for $i from 1 through $n {
|
36
|
+
$range: append($range, $i);
|
37
|
+
}
|
38
|
+
|
39
|
+
@return $range;
|
40
|
+
}
|
@@ -4,9 +4,13 @@
|
|
4
4
|
//
|
5
5
|
// @param {List} $list - list to remove duplicates from
|
6
6
|
//
|
7
|
+
// @requires sl-to-list
|
8
|
+
//
|
7
9
|
// @return {List}
|
8
10
|
|
9
11
|
@function sl-remove-duplicates($list) {
|
12
|
+
@if sl-missing-dependencies(sl-to-list) == true { @return null; }
|
13
|
+
|
10
14
|
$result: ();
|
11
15
|
|
12
16
|
@each $item in $list {
|
@@ -15,11 +19,12 @@
|
|
15
19
|
}
|
16
20
|
}
|
17
21
|
|
18
|
-
@return $result;
|
22
|
+
@return sl-to-list($result);
|
19
23
|
}
|
20
24
|
|
25
|
+
// @requires sl-remove-duplicates
|
21
26
|
// @alias sl-remove-duplicates
|
22
27
|
|
23
|
-
@function sl-unique($list
|
24
|
-
@return sl-remove-duplicates($list
|
28
|
+
@function sl-unique($list) {
|
29
|
+
@return sl-remove-duplicates($list);
|
25
30
|
}
|
@@ -4,6 +4,7 @@
|
|
4
4
|
//
|
5
5
|
// @requires sl-purge
|
6
6
|
// @requires sl-is-true
|
7
|
+
// @requires sl-to-list
|
7
8
|
//
|
8
9
|
// @param {List} $list - list to update
|
9
10
|
// @param {Number} $index - index to update
|
@@ -14,13 +15,15 @@
|
|
14
15
|
// @return {List | Null}
|
15
16
|
|
16
17
|
@function sl-replace-nth($list, $index, $value) {
|
17
|
-
@if sl-missing-dependencies(sl-purge, sl-is-true) == true { @return null; }
|
18
|
+
@if sl-missing-dependencies(sl-purge, sl-is-true, sl-to-list) == true { @return null; }
|
18
19
|
|
19
20
|
@if type-of($index) != "number" or $index == 0 or abs($index) > length($list) {
|
20
|
-
@warn "Invalid index (#{$index}) for `sl-replace-nth`.";
|
21
|
+
@warn "Invalid index (#{inspect($index)}) for `sl-replace-nth`.";
|
21
22
|
@return null;
|
22
23
|
}
|
23
24
|
|
24
25
|
$list: set-nth($list, $index, $value);
|
25
|
-
|
26
|
+
$list: if(sl-is-true($value), $list, sl-purge($list));
|
27
|
+
|
28
|
+
@return sl-to-list($list);
|
26
29
|
}
|
@@ -4,6 +4,7 @@
|
|
4
4
|
//
|
5
5
|
// @requires sl-is-true
|
6
6
|
// @requires sl-purge
|
7
|
+
// @requires sl-to-list
|
7
8
|
//
|
8
9
|
// @param {List} $list - list to update
|
9
10
|
// @param {*} $old - value to replace
|
@@ -12,7 +13,7 @@
|
|
12
13
|
// @return {List}
|
13
14
|
|
14
15
|
@function sl-replace($list, $old, $value) {
|
15
|
-
@if sl-missing-dependencies(sl-is-true, sl-purge) == true { @return null; }
|
16
|
+
@if sl-missing-dependencies(sl-is-true, sl-purge, sl-to-list) == true { @return null; }
|
16
17
|
|
17
18
|
$running: true;
|
18
19
|
|
@@ -29,5 +30,7 @@
|
|
29
30
|
|
30
31
|
}
|
31
32
|
|
32
|
-
|
33
|
+
$list: if(sl-is-true($value), $list, sl-purge($list));
|
34
|
+
|
35
|
+
@return sl-to-list($list);
|
33
36
|
}
|
@@ -4,11 +4,15 @@
|
|
4
4
|
//
|
5
5
|
// @param {List} $list - list to reverse
|
6
6
|
//
|
7
|
+
// @requires sl-to-list
|
8
|
+
//
|
7
9
|
// @return {List}
|
8
10
|
|
9
11
|
@function sl-reverse($list) {
|
12
|
+
@if sl-missing-dependencies(sl-to-list) == true { @return null; }
|
13
|
+
|
10
14
|
$length: length($list);
|
11
|
-
$end: floor($length/2);
|
15
|
+
$end: floor($length / 2);
|
12
16
|
|
13
17
|
@if $length < 2 {
|
14
18
|
@return $list;
|
@@ -20,9 +24,10 @@
|
|
20
24
|
$list: set-nth($list, -$i, $tmp);
|
21
25
|
}
|
22
26
|
|
23
|
-
@return $list;
|
27
|
+
@return sl-to-list($list);
|
24
28
|
}
|
25
29
|
|
30
|
+
// @requires sl-reverse
|
26
31
|
// @alias sl-reverse
|
27
32
|
|
28
33
|
@function sl-mirror($list) {
|
@@ -4,9 +4,13 @@
|
|
4
4
|
//
|
5
5
|
// @param {List} $list - list to shuffle
|
6
6
|
//
|
7
|
+
// @requires sl-to-list
|
8
|
+
//
|
7
9
|
// @return {List}
|
8
10
|
|
9
11
|
@function sl-shuffle($list) {
|
12
|
+
@if sl-missing-dependencies(sl-to-list) == true { @return null; }
|
13
|
+
|
10
14
|
$length: length($list);
|
11
15
|
|
12
16
|
@if $length < 2 {
|
@@ -20,9 +24,10 @@
|
|
20
24
|
$list: set-nth($list, $j, $tmp);
|
21
25
|
}
|
22
26
|
|
23
|
-
@return $list;
|
27
|
+
@return sl-to-list($list);
|
24
28
|
}
|
25
29
|
|
30
|
+
// @requires sl-shuffle
|
26
31
|
// @alias sl-shuffle
|
27
32
|
|
28
33
|
@function sl-randomize($list) {
|
@@ -3,6 +3,8 @@
|
|
3
3
|
// @ignore Documentation: http://sassylists.com/documentation.html#sl-sort
|
4
4
|
//
|
5
5
|
// @requires sl-str-compare
|
6
|
+
// @requires sl-has-multiple-values
|
7
|
+
// @requires sl-to-list
|
6
8
|
//
|
7
9
|
// @param {List} $list - list to sort
|
8
10
|
// @param {List} $order - order to respect
|
@@ -10,31 +12,36 @@
|
|
10
12
|
// @return {List}
|
11
13
|
|
12
14
|
@function sl-sort($list, $order: "!" "#" "$" "%" "&" "'" "(" ")" "*" "+" "," "-" "." "/" "[" "\\" "]" "^" "_" "{" "|" "}" "~" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z") {
|
13
|
-
@if sl-missing-dependencies(sl-str-compare) == true { @return null; }
|
15
|
+
@if sl-missing-dependencies(sl-str-compare, sl-has-multiple-values, sl-to-list) == true { @return null; }
|
14
16
|
|
15
17
|
$less: ();
|
16
18
|
$equal: ();
|
17
19
|
$large: ();
|
18
|
-
$length: length($list);
|
19
20
|
|
20
|
-
@if $
|
21
|
-
$seed: nth($list, ceil($
|
21
|
+
@if sl-has-multiple-values($list) {
|
22
|
+
$seed: nth($list, ceil(length($list) / 2));
|
23
|
+
|
22
24
|
@each $item in $list {
|
23
25
|
@if $item == $seed {
|
24
26
|
$equal: append($equal, $item, list-separator($list));
|
25
27
|
}
|
28
|
+
|
26
29
|
@else if sl-str-compare($item, $seed, $order) {
|
27
30
|
$less: append($less, $item, list-separator($list));
|
28
31
|
}
|
32
|
+
|
29
33
|
@else if not sl-str-compare($item, $seed, $order) {
|
30
34
|
$large: append($large, $item, list-separator($list));
|
31
35
|
}
|
32
36
|
}
|
37
|
+
|
33
38
|
@return join(join(sl-sort($less, $order), $equal), sl-sort($large, $order));
|
34
39
|
}
|
35
|
-
|
40
|
+
|
41
|
+
@return sl-to-list($list);
|
36
42
|
}
|
37
43
|
|
44
|
+
// @requires sl-sort
|
38
45
|
// @alias sl-sort
|
39
46
|
|
40
47
|
@function sl-order($list) {
|
@@ -2,27 +2,33 @@
|
|
2
2
|
//
|
3
3
|
// @ignore Documentation: http://sassylists.com/documentation.html#sl-sum
|
4
4
|
//
|
5
|
-
// @param {List}
|
5
|
+
// @param {List} $list - list
|
6
6
|
// @param {Bool} $force (false) - enable/disable parseInt
|
7
7
|
//
|
8
|
+
// @requires sl-every
|
9
|
+
// @requires sl-is-number
|
10
|
+
//
|
11
|
+
// @throws All items from list are not numbers for `sl-sum`.
|
12
|
+
//
|
8
13
|
// @return {Number}
|
9
14
|
|
10
15
|
@function sl-sum($list, $force: false) {
|
11
16
|
$result: 0;
|
12
17
|
|
13
|
-
@
|
14
|
-
@
|
15
|
-
|
16
|
-
|
17
|
-
$item: $item / ($item * 0 + 1);
|
18
|
-
}
|
18
|
+
@if not sl-every($list, sl-is-number) {
|
19
|
+
@warn "All items from list are not numbers for `sl-sum`.";
|
20
|
+
@return null;
|
21
|
+
}
|
19
22
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
+
@each $item in $list {
|
24
|
+
@if not unitless($item) and $force {
|
25
|
+
$item: $item / ($item * 0 + 1);
|
26
|
+
}
|
23
27
|
|
28
|
+
@if unitless($item) {
|
29
|
+
$result: $result + $item;
|
24
30
|
}
|
25
31
|
}
|
26
32
|
|
27
33
|
@return $result;
|
28
|
-
}
|
34
|
+
}
|
@@ -3,11 +3,22 @@
|
|
3
3
|
// @ignore Documentation: http://sassylists.com/documentation.html#sl-to-list
|
4
4
|
//
|
5
5
|
// @param {*} $value - value to cast to list
|
6
|
+
// @param {String} $separator (space) - separator to use
|
6
7
|
//
|
7
8
|
// @return {List}
|
8
9
|
|
9
|
-
@function sl-to-list($value) {
|
10
|
-
@
|
10
|
+
@function sl-to-list($value, $separator: list-separator($value)) {
|
11
|
+
@if type-of($value) != "list" or list-separator($value) != $separator {
|
12
|
+
$new-list: if($separator == "comma", sl-comma-list(), ());
|
13
|
+
|
14
|
+
@each $item in $value {
|
15
|
+
$new-list: append($new-list, $item, $separator);
|
16
|
+
}
|
17
|
+
|
18
|
+
@return $new-list;
|
19
|
+
}
|
20
|
+
|
21
|
+
@return $value;
|
11
22
|
}
|
12
23
|
|
13
24
|
// @requires sl-to-list
|
@@ -1,39 +1,29 @@
|
|
1
1
|
// Casts `$list` into a map, using indexes as keys (starting with `$start`).
|
2
2
|
// Useful for iterating through a list with an index variable.
|
3
|
-
// e.g. `@each $
|
3
|
+
// e.g. `@each $index, $value in to-map($list)`
|
4
4
|
//
|
5
|
-
// @author Andrey "Lolmaus" Mikhaylov
|
5
|
+
// @author Andrey "Lolmaus" Mikhaylov and Chris Eppstein
|
6
6
|
//
|
7
7
|
// @ignore Documentation: http://sassylists.com/documentation.html#sl-to-map
|
8
8
|
//
|
9
|
-
// @param {List}
|
10
|
-
//
|
9
|
+
// @param {List} $list - list to turn into map
|
10
|
+
//
|
11
|
+
// @requires sl-range
|
12
|
+
// @requires sl-is-empty
|
11
13
|
//
|
12
14
|
// @throws List cannot be empty for `sl-to-map`.
|
13
|
-
// @throws $start is not a number for `sl-to-map`.
|
14
15
|
//
|
15
16
|
// @return {Map | Null}
|
16
17
|
|
17
|
-
@function sl-to-map($list
|
18
|
-
@if
|
19
|
-
@warn "List cannot be empty for `sl-to-map`.";
|
20
|
-
@return null;
|
21
|
-
}
|
18
|
+
@function sl-to-map($list) {
|
19
|
+
@if sl-missing-dependencies(sl-range, sl-is-empty) == true { @return null; }
|
22
20
|
|
23
|
-
@if
|
24
|
-
@warn "
|
21
|
+
@if sl-is-empty($list) {
|
22
|
+
@warn "List cannot be empty for `sl-to-map`.";
|
25
23
|
@return null;
|
26
24
|
}
|
27
25
|
|
28
|
-
|
29
|
-
|
30
|
-
@for $index from 1 through length($list) {
|
31
|
-
$key: $index + $start - 1;
|
32
|
-
$value: nth($list, $index);
|
33
|
-
$map: map-merge($map, ($key: $value));
|
34
|
-
}
|
35
|
-
|
36
|
-
@return $map;
|
26
|
+
@return zip(sl-range(length($list)), $list);
|
37
27
|
}
|
38
28
|
|
39
29
|
// @requires sl-to-map
|
@@ -5,20 +5,28 @@
|
|
5
5
|
// @param {List} $list - list to cast
|
6
6
|
// @param {String} $glue ('') - value to use as a join string
|
7
7
|
//
|
8
|
+
// @requires sl-has-multiple-values
|
9
|
+
// @requires sl-last
|
10
|
+
//
|
8
11
|
// @return {String}
|
9
12
|
|
10
13
|
@function sl-to-string($list, $glue: '') {
|
14
|
+
@if sl-missing-dependencies(sl-has-multiple-values) == true { @return null; }
|
15
|
+
|
11
16
|
$result: '';
|
12
|
-
$length: length($list);
|
13
17
|
|
14
|
-
@
|
15
|
-
$
|
16
|
-
|
18
|
+
@each $item in $list {
|
19
|
+
$result: $result + if(sl-has-multiple-values($item), sl-to-string($item, $glue), $item);
|
20
|
+
|
21
|
+
@if $item != sl-last($list) {
|
22
|
+
$result: $result + $glue;
|
23
|
+
}
|
17
24
|
}
|
18
25
|
|
19
|
-
@return quote(
|
26
|
+
@return quote($result);
|
20
27
|
}
|
21
28
|
|
29
|
+
// @requires sl-to-string
|
22
30
|
// @alias sl-to-string
|
23
31
|
|
24
32
|
@function sl-stringify($list, $glue: '') {
|
@@ -6,19 +6,24 @@
|
|
6
6
|
// @param {String} $function - function to call on each value
|
7
7
|
// @param {ArgList} $args - optional function arguments
|
8
8
|
//
|
9
|
-
// @throws There is no
|
9
|
+
// @throws There is no `$function` function for `sl-walk`.
|
10
|
+
//
|
11
|
+
// @requires sl-to-map
|
12
|
+
// @requires sl-to-list
|
10
13
|
//
|
11
14
|
// @return {List | Null}
|
12
15
|
|
13
16
|
@function sl-walk($list, $function, $args...) {
|
17
|
+
@if sl-missing-dependencies(sl-to-map, sl-to-list) == true { @return null; }
|
18
|
+
|
14
19
|
@if not function-exists($function) {
|
15
|
-
@warn "There is no `#{$function}` function
|
20
|
+
@warn "There is no `#{$function}` function for `sl-walk`.";
|
16
21
|
@return null;
|
17
22
|
}
|
18
23
|
|
19
|
-
@
|
20
|
-
|
24
|
+
@each $index, $value in sl-to-map($list) {
|
25
|
+
$list: set-nth($list, $index, call($function, $value, $args...));
|
21
26
|
}
|
22
27
|
|
23
|
-
@return $list;
|
28
|
+
@return sl-to-list($list);
|
24
29
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
@import "SassyLists/helpers/missing-dependencies";
|
8
8
|
@import "SassyLists/helpers/str-compare";
|
9
9
|
@import "SassyLists/helpers/true";
|
10
|
+
@import "SassyLists/helpers/is-number";
|
10
11
|
@import "SassyLists/chunk";
|
11
12
|
@import "SassyLists/comma-list";
|
12
13
|
@import "SassyLists/contain";
|
@@ -16,9 +17,12 @@
|
|
16
17
|
@import "SassyLists/explode";
|
17
18
|
@import "SassyLists/first";
|
18
19
|
@import "SassyLists/flatten";
|
20
|
+
@import "SassyLists/has-values";
|
21
|
+
@import "SassyLists/has-multiple-values";
|
19
22
|
@import "SassyLists/insert-nth";
|
20
23
|
@import "SassyLists/intersection";
|
21
24
|
@import "SassyLists/is-empty";
|
25
|
+
@import "SassyLists/is-single";
|
22
26
|
@import "SassyLists/is-symmetrical";
|
23
27
|
@import "SassyLists/last";
|
24
28
|
@import "SassyLists/last-index";
|
@@ -26,6 +30,7 @@
|
|
26
30
|
@import "SassyLists/prepend";
|
27
31
|
@import "SassyLists/purge";
|
28
32
|
@import "SassyLists/random-value";
|
33
|
+
@import "SassyLists/range";
|
29
34
|
@import "SassyLists/remove";
|
30
35
|
@import "SassyLists/remove-duplicates";
|
31
36
|
@import "SassyLists/remove-nth";
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: SassyLists
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hugo Giraudel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sass
|
@@ -44,9 +44,12 @@ files:
|
|
44
44
|
- stylesheets/SassyLists/_explode.scss
|
45
45
|
- stylesheets/SassyLists/_first.scss
|
46
46
|
- stylesheets/SassyLists/_flatten.scss
|
47
|
+
- stylesheets/SassyLists/_has-multiple-values.scss
|
48
|
+
- stylesheets/SassyLists/_has-values.scss
|
47
49
|
- stylesheets/SassyLists/_insert-nth.scss
|
48
50
|
- stylesheets/SassyLists/_intersection.scss
|
49
51
|
- stylesheets/SassyLists/_is-empty.scss
|
52
|
+
- stylesheets/SassyLists/_is-single.scss
|
50
53
|
- stylesheets/SassyLists/_is-symmetrical.scss
|
51
54
|
- stylesheets/SassyLists/_last-index.scss
|
52
55
|
- stylesheets/SassyLists/_last.scss
|
@@ -54,6 +57,7 @@ files:
|
|
54
57
|
- stylesheets/SassyLists/_prepend.scss
|
55
58
|
- stylesheets/SassyLists/_purge.scss
|
56
59
|
- stylesheets/SassyLists/_random-value.scss
|
60
|
+
- stylesheets/SassyLists/_range.scss
|
57
61
|
- stylesheets/SassyLists/_remove-duplicates.scss
|
58
62
|
- stylesheets/SassyLists/_remove-nth.scss
|
59
63
|
- stylesheets/SassyLists/_remove.scss
|
@@ -71,6 +75,7 @@ files:
|
|
71
75
|
- stylesheets/SassyLists/_to-string.scss
|
72
76
|
- stylesheets/SassyLists/_union.scss
|
73
77
|
- stylesheets/SassyLists/_walk.scss
|
78
|
+
- stylesheets/SassyLists/helpers/_is-number.scss
|
74
79
|
- stylesheets/SassyLists/helpers/_missing-dependencies.scss
|
75
80
|
- stylesheets/SassyLists/helpers/_str-compare.scss
|
76
81
|
- stylesheets/SassyLists/helpers/_true.scss
|