SassyLists 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +1 -0
- data/lib/SassyLists.rb +3 -21
- data/stylesheets/SassyLists/_chunk.scss +20 -20
- data/stylesheets/SassyLists/_count-values.scss +13 -13
- data/stylesheets/SassyLists/_debug.scss +18 -18
- data/stylesheets/SassyLists/_first.scss +10 -10
- data/stylesheets/SassyLists/_insert-nth.scss +24 -23
- data/stylesheets/SassyLists/_is-symmetrical.scss +14 -14
- data/stylesheets/SassyLists/_last-index.scss +13 -12
- data/stylesheets/SassyLists/_last.scss +10 -10
- data/stylesheets/SassyLists/_loop.scss +13 -12
- data/stylesheets/SassyLists/_prepend.scss +14 -13
- data/stylesheets/SassyLists/_purge.scss +11 -10
- data/stylesheets/SassyLists/_random-value.scss +12 -11
- data/stylesheets/SassyLists/_remove-duplicates.scss +12 -11
- data/stylesheets/SassyLists/_remove-nth.scss +21 -20
- data/stylesheets/SassyLists/_remove.scss +17 -16
- data/stylesheets/SassyLists/_replace-nth.scss +24 -23
- data/stylesheets/SassyLists/_replace.scss +18 -17
- data/stylesheets/SassyLists/_reverse.scss +14 -14
- data/stylesheets/SassyLists/_slice.scss +27 -26
- data/stylesheets/SassyLists/_sort.scss +28 -16
- data/stylesheets/SassyLists/_sum.scss +15 -14
- data/stylesheets/SassyLists/_to-string.scss +14 -13
- data/stylesheets/_SassyLists.scss +7 -75
- metadata +3 -4
- data/readme.md +0 -30
data/CHANGELOG.md
CHANGED
data/lib/SassyLists.rb
CHANGED
@@ -1,32 +1,14 @@
|
|
1
|
-
# All gems that are required for this extension to work should go here.
|
2
|
-
# These are the requires you would normally put in your config.rb file
|
3
|
-
# By default, you should always included Compass. Do not include your
|
4
|
-
# extension.
|
5
|
-
require 'compass'
|
6
|
-
|
7
1
|
require 'compass'
|
8
2
|
extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
9
3
|
Compass::Frameworks.register('SassyLists', :path => extension_path)
|
10
4
|
|
11
|
-
#
|
12
|
-
# Replace MyExtension with the name of your extension
|
13
|
-
# Letters, numbers, and underscores only
|
14
|
-
# Version is a number. If a version contains alphas, it will be created as
|
15
|
-
# a prerelease version
|
5
|
+
# Version is a number. If a version contains alphas, it will be created as a prerelease version
|
16
6
|
# Date is in the form of YYYY-MM-DD
|
17
7
|
module SassyLists
|
18
|
-
VERSION = "0.2.
|
19
|
-
DATE = "2013-10-
|
8
|
+
VERSION = "0.2.2"
|
9
|
+
DATE = "2013-10-29"
|
20
10
|
end
|
21
11
|
|
22
|
-
# This is where any custom SassScript should be placed. The functions will be
|
23
|
-
# available on require of your extension without the need for users to import
|
24
|
-
# any partials. Uncomment below.
|
25
|
-
|
26
|
-
# module Sass::Script::Functions
|
27
|
-
#
|
28
|
-
# end
|
29
|
-
|
30
12
|
module Sass::Script::Functions
|
31
13
|
def random(max = Sass::Script::Number.new(100))
|
32
14
|
Sass::Script::Number.new(rand(max.value), max.numerator_units, max.denominator_units)
|
@@ -1,31 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
// Chunks $list into $size large lists
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#chunk
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example chunk(a b c d e, 2) => a b, c d, e
|
6
|
+
// @example chunk(a b c d e, 3) => a b c, d e
|
7
|
+
// -------------------------------------------------------------------------------
|
8
|
+
// @param $list [List] : list
|
9
|
+
// @param $size [Number] : length of lists
|
10
|
+
// -------------------------------------------------------------------------------
|
11
|
+
// @return [List]
|
12
|
+
|
13
13
|
@function chunk($list, $size) {
|
14
|
-
$n: ceil(length($list) / $size);
|
15
|
-
$
|
14
|
+
$n-lists: ceil(length($list) / $size);
|
15
|
+
$tmp-index: 0;
|
16
16
|
$result: ();
|
17
17
|
|
18
|
-
@for $i from 1 through $n {
|
19
|
-
$
|
18
|
+
@for $i from 1 through $n-lists {
|
19
|
+
$tmp-list: ();
|
20
20
|
|
21
|
-
@for $j from 1 + $
|
21
|
+
@for $j from 1 + $tmp-index through $size + $tmp-index {
|
22
22
|
@if $j <= length($list) {
|
23
|
-
$
|
23
|
+
$tmp-list: append($tmp-list, nth($list, $j));
|
24
24
|
}
|
25
25
|
}
|
26
26
|
|
27
|
-
$result: append($result, $
|
28
|
-
$
|
27
|
+
$result: append($result, $tmp-list);
|
28
|
+
$tmp-index: $tmp-index + $size;
|
29
29
|
}
|
30
30
|
|
31
31
|
@return $result;
|
@@ -1,16 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
// Counts the number of occurrences of each value of $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#count-values
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `replace-nth()`
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @example count-values(a b c d e) => a 1, b 1, c 1, d 1, e 1
|
8
|
+
// @example count-values(a b c a d b a e) => a 3, b 2, c 1, d 1, e 1
|
9
|
+
// -------------------------------------------------------------------------------
|
10
|
+
// @param $list [List] : list
|
11
|
+
// -------------------------------------------------------------------------------
|
12
|
+
// @return [List]
|
13
|
+
|
14
14
|
@function count-values($list) {
|
15
15
|
$keys : ();
|
16
16
|
$counts : ();
|
@@ -1,16 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
// Returns $list as a string
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#debug
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example debug(a b c d e) => [ a, b, c, d, e ]
|
6
|
+
// @example debug(a b (c d e)) => [ a, b, [ c, d, e ] ]
|
7
|
+
// -------------------------------------------------------------------------------
|
8
|
+
// @param $list [List] : list
|
9
|
+
// @param $type [Boolean] : enable/disable variables type
|
10
|
+
// @param $root [Boolean] : strictly internal boolean for recursivity
|
11
|
+
// -------------------------------------------------------------------------------
|
12
|
+
// @return [String]
|
13
|
+
|
14
14
|
@function debug($list, $type: true, $root: true) {
|
15
15
|
@if length($list) == 1 {
|
16
16
|
@return if($type, quote("(#{type-of($list)}) #{$list}"), quote("#{$list}"));
|
@@ -44,11 +44,11 @@
|
|
44
44
|
}
|
45
45
|
|
46
46
|
/**
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
// Mixin displaying clean debug
|
48
|
+
// -------------------------------------------------------------------------------
|
49
|
+
// @param $list [List] : list
|
50
|
+
// @param $type [List] : enable/disable variables type
|
51
|
+
///
|
52
52
|
@mixin debug($list, $type: true) {
|
53
53
|
body:before {
|
54
54
|
content: debug($list, $type) !important;
|
@@ -1,13 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
// Returns first element of $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#first
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example first(a b c) => a
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @param $list [List] : list
|
8
|
+
// -------------------------------------------------------------------------------
|
9
|
+
// @return [Literal]
|
10
|
+
|
11
11
|
@function first($list) {
|
12
12
|
@return nth($list, 1);
|
13
13
|
}
|
@@ -1,38 +1,39 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
1
|
+
// Adds $value at $index in $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#insert-nth
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `purge()`
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @example insert-nth(a b c, 2, z) => a, z, b, c
|
8
|
+
// @example insert-nth(a b c, 0, z) => error
|
9
|
+
// @example insert-nth(a b c, -1, z) => error
|
10
|
+
// @example insert-nth(a b c, 10, z) => error
|
11
|
+
// -------------------------------------------------------------------------------
|
12
|
+
// @param $list [List] : list
|
13
|
+
// @param $index [Number] : index to add
|
14
|
+
// @param $value [Literal] : value to add
|
15
|
+
// -------------------------------------------------------------------------------
|
16
|
+
// @raise [Error] if $index isn't an integer
|
17
|
+
// @raise [Error] if $index is strictly lesser than 1
|
18
|
+
// @raise [Error] if $index is strictly greater than length of $list
|
19
|
+
// -------------------------------------------------------------------------------
|
20
|
+
// @return [List] | false
|
21
|
+
|
21
22
|
@function insert-nth($list, $index, $value) {
|
22
23
|
$result: false;
|
23
24
|
|
24
25
|
@if type-of($index) != number {
|
25
|
-
@warn "
|
26
|
+
@warn "List index #{quote($index)} is not a number for `insert-nth`.";
|
26
27
|
@return $result;
|
27
28
|
}
|
28
29
|
|
29
30
|
@else if $index < 1 {
|
30
|
-
@warn "List index
|
31
|
+
@warn "List index #{quote($index)} must be a non-zero integer for `insert-nth`";
|
31
32
|
@return $result;
|
32
33
|
}
|
33
34
|
|
34
35
|
@else if $index > length($list) {
|
35
|
-
@warn "List index is #{$index} but list is only #{length($list)}
|
36
|
+
@warn "List index is #{quote($index)} but list is only #{length($list)} items long for `insert-nth'.";
|
36
37
|
@return $result;
|
37
38
|
}
|
38
39
|
|
@@ -1,17 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
1
|
+
// Checks whether $list is symmetrical (one-level deep)
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#is-symmetrical
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `reverse()`
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @example is-symmetrical(a b c d e) => false
|
8
|
+
// @example is-symmetrical(a b c b a) => true
|
9
|
+
// @example is-symmetrical(a (b c d) a) => true
|
10
|
+
// -------------------------------------------------------------------------------
|
11
|
+
// @param $list [List] : list
|
12
|
+
// -------------------------------------------------------------------------------
|
13
|
+
// @return [Boolean]
|
14
|
+
|
15
15
|
@function is-symmetrical($list) {
|
16
16
|
@return reverse($list) == reverse(reverse($list));
|
17
17
|
}
|
@@ -1,17 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
// Returns last index of $value in $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#last-index
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example last-index(a b c a, a) => 4
|
6
|
+
// @example last-index(a b c, z) => null
|
7
|
+
// -------------------------------------------------------------------------------
|
8
|
+
// @param $list [List] : list
|
9
|
+
// @param $value [Literal] : value to be searched for
|
10
|
+
// -------------------------------------------------------------------------------
|
11
|
+
// @return [Number] | null
|
12
|
+
|
12
13
|
@function last-index($list, $value) {
|
13
14
|
|
14
|
-
@for $i from length($list)
|
15
|
+
@for $i from length($list)// -1 through -1 {
|
15
16
|
$i: abs($i);
|
16
17
|
|
17
18
|
@if nth($list, $i) == $value {
|
@@ -1,13 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
// Returns last element of $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#last
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example last(a b c) => c
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @param $list [List] : list
|
8
|
+
// -------------------------------------------------------------------------------
|
9
|
+
// @return [Literal]
|
10
|
+
|
11
11
|
@function last($list) {
|
12
12
|
@return nth($list, length($list));
|
13
13
|
}
|
@@ -1,15 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
// Shift indexes from $list of $value
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#loop
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example loop(a b c d e) => e, a, b, c, d
|
6
|
+
// @example loop(a b c d e, 2) => d, e, a, b, c
|
7
|
+
// @example loop(a b c d e, -2) => c, d, e, a, b
|
8
|
+
// -------------------------------------------------------------------------------
|
9
|
+
// @param $list [List] : list
|
10
|
+
// @param $value [Number] : number of position between old and new indexes
|
11
|
+
// -------------------------------------------------------------------------------
|
12
|
+
// @return [List]
|
13
|
+
|
13
14
|
@function loop($list, $value: 1) {
|
14
15
|
$result: ();
|
15
16
|
|
@@ -1,16 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
// Adds $value as first index of $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#prepend
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `purge()`
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @example prepend(a b c, z) => z, a, b, c
|
8
|
+
// @example prepend(a b c, y z) => y z, a, b, c
|
9
|
+
// -------------------------------------------------------------------------------
|
10
|
+
// @param $list [List] : list
|
11
|
+
// @param $value [Literal] : value to prepend to the list
|
12
|
+
// -------------------------------------------------------------------------------
|
13
|
+
// @return [List]
|
14
|
+
|
14
15
|
@function prepend($list, $value) {
|
15
16
|
@return purge(join($value, $list));
|
16
17
|
}
|
@@ -1,13 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
// Removes all false and null values from $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation.html#purge
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example purge(a null b false c) => a, b, c
|
6
|
+
// @example purge(a b c) => a, b, c
|
7
|
+
// -------------------------------------------------------------------------------
|
8
|
+
// @param $list [List] : list
|
9
|
+
// -------------------------------------------------------------------------------
|
10
|
+
// @return [List]
|
11
|
+
|
11
12
|
@function purge($list) {
|
12
13
|
$result: ();
|
13
14
|
|
@@ -1,14 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
// Returns a random value of $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation.html#random-value
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `rand` (Ruby)
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @example random-value(a b c d e) => c
|
8
|
+
// -------------------------------------------------------------------------------
|
9
|
+
// @param $list [List] : List
|
10
|
+
// -------------------------------------------------------------------------------
|
11
|
+
// @return [Literal]
|
12
|
+
|
12
13
|
@function random-value($list) {
|
13
14
|
@return nth($list, random(length($list)) + 1);
|
14
15
|
}
|
@@ -1,14 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
// Removes duplicate values from $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#remove-duplicates
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example remove-duplicates(a b a c b d c e) => a, b, c, d, e
|
6
|
+
// @example remove-duplicates(a b (c c c), true) => a, b, c
|
7
|
+
// -------------------------------------------------------------------------------
|
8
|
+
// @param $list [List] : list
|
9
|
+
// @param $recursive [Boolean] : enable / disable recursivity
|
10
|
+
// -------------------------------------------------------------------------------
|
11
|
+
// @return [List]
|
12
|
+
|
12
13
|
@function remove-duplicates($list, $recursive: false) {
|
13
14
|
$result: ();
|
14
15
|
|
@@ -1,23 +1,24 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
1
|
+
// Removes value from $list at index $index
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#remove-nth
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `replace-nth()`
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @example remove-nth(a b c, 2) => a, c
|
8
|
+
// @example remove-nth(a b c, 0) => error
|
9
|
+
// @example remove-nth(a b c, -1) => a, b
|
10
|
+
// @example remove-nth(a b c, 10) => error
|
11
|
+
// @example remove-nth(a b c, -10) => error
|
12
|
+
// -------------------------------------------------------------------------------
|
13
|
+
// @param $list [List] : list
|
14
|
+
// @param $index [Number] : index to remove
|
15
|
+
// -------------------------------------------------------------------------------
|
16
|
+
// @raise [Error] if $index isn't an integer
|
17
|
+
// @raise [Error] if $index is 0
|
18
|
+
// @raise [Error] if abs value of $index is strictly greater then length of $list
|
19
|
+
// -------------------------------------------------------------------------------
|
20
|
+
// @return [List] | false
|
21
|
+
|
21
22
|
@function remove-nth($list, $index) {
|
22
23
|
@return replace-nth($list, $index, "");
|
23
24
|
}
|
@@ -1,19 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
1
|
+
// Removes value(s) $value from $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#remove
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `replace()`
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @example remove(a b c, b) => a, c
|
8
|
+
// @example remove(a b c, z) => a, b, c
|
9
|
+
// @example remove(a b c b, b) => a, c b
|
10
|
+
// @example remove(a b c b, b, true) => a, c
|
11
|
+
// -------------------------------------------------------------------------------
|
12
|
+
// @param $list [List] : list
|
13
|
+
// @param $value [Literal] : value to remove
|
14
|
+
// @param $recursive [Boolean] : enable / disable recursivity
|
15
|
+
// -------------------------------------------------------------------------------
|
16
|
+
// @return [List]
|
17
|
+
|
17
18
|
@function remove($list, $value, $recursive: false) {
|
18
19
|
@return replace($list, $value, "", $recursive);
|
19
20
|
}
|
@@ -1,29 +1,30 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
1
|
+
// Replaces value at $index from $list by $value
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#replace-nth
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `purge()`
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @example replace-nth(a b c, 2, z) => a, z, c
|
8
|
+
// @example replace-nth(a b c, 0, z) => error
|
9
|
+
// @example replace-nth(a b c, 10, z) => error
|
10
|
+
// @example replace-nth(a b c, -1, z) => a, b, z
|
11
|
+
// @example replace-nth(a b c, -10, z) => error
|
12
|
+
// -------------------------------------------------------------------------------
|
13
|
+
// @param $list [List] : list
|
14
|
+
// @param $index [Number] : index to update
|
15
|
+
// @param $value [Literal] : new value for index $index
|
16
|
+
// -------------------------------------------------------------------------------
|
17
|
+
// @raise [Error] if $index isn't an integer
|
18
|
+
// @raise [Error] if $index is 0
|
19
|
+
// @raise [Error] if abs value of $index is strictly greater than length of $list
|
20
|
+
// -------------------------------------------------------------------------------
|
21
|
+
// @return [List] | false
|
22
|
+
|
22
23
|
@function replace-nth($list, $index, $value) {
|
23
24
|
$result: false;
|
24
25
|
|
25
26
|
@if type-of($index) != number {
|
26
|
-
@warn "
|
27
|
+
@warn "List index #{quote($index)} is not a number for `replace-nth`/`remove-nth`.";
|
27
28
|
@return $result;
|
28
29
|
}
|
29
30
|
|
@@ -33,7 +34,7 @@
|
|
33
34
|
}
|
34
35
|
|
35
36
|
@else if abs($index) > length($list) {
|
36
|
-
@warn "List index is #{$index} but list is only #{length($list)} item long for `replace-nth`/`remove-nth`.";
|
37
|
+
@warn "List index is #{quote($index)} but list is only #{length($list)} item long for `replace-nth`/`remove-nth`.";
|
37
38
|
@return $result;
|
38
39
|
}
|
39
40
|
|
@@ -1,20 +1,21 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
1
|
+
// Replaces $old-value by $new-value in $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation.html#replace
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `purge()`
|
6
|
+
// -------------------------------------------------------------------------------
|
7
|
+
// @example replace( (a, b, c), b, z ) => a, z, c
|
8
|
+
// @example replace( (a, b, c), y, z ) => a, b, c
|
9
|
+
// @example replace( (a, b, c a), a, z ) => z, b, c z
|
10
|
+
// @example replace( (a, b, c a), a, z, true ) => z, b, c z
|
11
|
+
// -------------------------------------------------------------------------------
|
12
|
+
// @param $list [List] : list
|
13
|
+
// @param $old-value [Literal] : value to replace
|
14
|
+
// @param $new-value [Literal] : new value for $old-value
|
15
|
+
// @param $recursive [Boolean] : enable / disable recursivity
|
16
|
+
// -------------------------------------------------------------------------------
|
17
|
+
// @return [List]
|
18
|
+
|
18
19
|
@function replace($list, $old-value, $new-value, $recursive: false) {
|
19
20
|
$result: ();
|
20
21
|
|
@@ -1,20 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
// Reverses the order of $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#reverse
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example reverse(a b c) => c, b, a
|
6
|
+
// @example reverse(a b (c a)) => c a, b, a
|
7
|
+
// @example reverse(a b (c a), true) => a c, b, a
|
8
|
+
// -------------------------------------------------------------------------------
|
9
|
+
// @param $list [List] : list
|
10
|
+
// @param $recursive [Boolean] : enable / disable recursivity
|
11
|
+
// -------------------------------------------------------------------------------
|
12
|
+
// @return [List]
|
13
|
+
|
14
14
|
@function reverse($list, $recursive: false) {
|
15
15
|
$result: ();
|
16
16
|
|
17
|
-
@for $i from length($list)
|
17
|
+
@for $i from length($list)// -1 through -1 {
|
18
18
|
$item: nth($list, abs($i));
|
19
19
|
|
20
20
|
@if length($item) > 1 and $recursive {
|
@@ -1,35 +1,36 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
1
|
+
// Slices $list between $start and $end
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#slice
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example slice(a b c d, 2, 3) => b, c
|
6
|
+
// @example slice(a b c d, 3, 2) => error
|
7
|
+
// @example slice(a b c d, 3, 5) => error
|
8
|
+
// @example slice(a b c d, -1, 3) => error
|
9
|
+
// @example slice(a b c d, 0, 3) => error
|
10
|
+
// @example slice(a b c d, 3, 3) => c
|
11
|
+
// -------------------------------------------------------------------------------
|
12
|
+
// @param $list [List] : list
|
13
|
+
// @param $start [Number] : start index
|
14
|
+
// @param $end [Number] : end index
|
15
|
+
// -------------------------------------------------------------------------------
|
16
|
+
// @raise [Error] if $start or $end aren't integers
|
17
|
+
// @raise [Error] if $start is greater than $end
|
18
|
+
// @raise [Error] if $start or $end is strictly lesser than 1
|
19
|
+
// @raise [Error] if $start is strictly greater than length of $list
|
20
|
+
// @raise [Error] if $end is strictly greater than length of $list
|
21
|
+
// -------------------------------------------------------------------------------
|
22
|
+
// @return [List] | false
|
23
|
+
|
23
24
|
@function slice($list, $start: 1, $end: length($list)) {
|
24
25
|
$result: false;
|
25
26
|
|
26
27
|
@if type-of($start) != number or type-of($end) != number {
|
27
|
-
@warn "
|
28
|
+
@warn "List indexes #{quote($start)} and #{quote($end)} must be numbers for `slice`.";
|
28
29
|
@return $result;
|
29
30
|
}
|
30
31
|
|
31
32
|
@else if $start > $end {
|
32
|
-
@warn "
|
33
|
+
@warn "Start index is #{quote($start)} but has to be lesser than or equals to the end index (#{quote($end)}) for `slice`.";
|
33
34
|
@return $result;
|
34
35
|
}
|
35
36
|
|
@@ -39,12 +40,12 @@
|
|
39
40
|
}
|
40
41
|
|
41
42
|
@else if $start > length($list) {
|
42
|
-
@warn "
|
43
|
+
@warn "Start index is #{quote($start)} but list is only #{length($list)} items long for `slice`.";
|
43
44
|
@return $result;
|
44
45
|
}
|
45
46
|
|
46
47
|
@else if $end > length($list) {
|
47
|
-
@warn "
|
48
|
+
@warn "End index is #{quote($end)} but list is only #{length($list)} items long for `slice`.";
|
48
49
|
@return $result;
|
49
50
|
}
|
50
51
|
|
@@ -1,45 +1,57 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
1
|
+
// Sorts numeric values of $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#sort
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @dependence `last()`
|
6
|
+
// @dependence `insert-nth()`
|
7
|
+
// -------------------------------------------------------------------------------
|
8
|
+
// @example sort(5 12 4.7 6 69 6) => 4.7, 5, 6, 6, 12, 69
|
9
|
+
// @example sort(5 12 4.7 "8" 6 14px 69 6) => 4.7, 5, 6, 6, 12, 69
|
10
|
+
// -------------------------------------------------------------------------------
|
11
|
+
// @param $list [List] : list
|
12
|
+
// -------------------------------------------------------------------------------
|
13
|
+
// @raise [Warning] if not unitless number found
|
14
|
+
// -------------------------------------------------------------------------------
|
15
|
+
// @return [List]
|
16
|
+
|
17
17
|
@function sort($list, $force: false) {
|
18
18
|
$result : nth($list, 1);
|
19
19
|
|
20
20
|
@if length($list) > 1 {
|
21
|
+
|
21
22
|
@for $i from 2 through length($list) {
|
22
23
|
$item: nth($list, $i);
|
24
|
+
|
23
25
|
@if type-of($item) == number {
|
26
|
+
|
24
27
|
@if unitless($item) and $force {
|
28
|
+
|
25
29
|
@if $item > last($result) {
|
26
30
|
$result: append($result, $item);
|
27
31
|
}
|
32
|
+
|
28
33
|
@else {
|
29
34
|
$index: 0;
|
35
|
+
|
30
36
|
@for $i from length($result)*-1 through -1 {
|
31
37
|
$i: abs($i);
|
38
|
+
|
32
39
|
@if $item <= nth($result, $i) {
|
33
40
|
$index: $i;
|
34
41
|
}
|
35
42
|
}
|
43
|
+
|
36
44
|
$result: insert-nth($result, $index, $item);
|
37
45
|
}
|
46
|
+
|
38
47
|
}
|
48
|
+
|
39
49
|
@else {
|
40
50
|
@warn "Not unitless number found. Omitted.";
|
41
51
|
}
|
52
|
+
|
42
53
|
}
|
54
|
+
|
43
55
|
@else {
|
44
56
|
@warn "Not integer value found. Omitted.";
|
45
57
|
}
|
@@ -1,16 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
// Sums up all unitless values in $list
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#sum
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example sum(1 2 3 4 5) => 15
|
6
|
+
// @example sum(1 a 2 b 3) => 6
|
7
|
+
// @example sum(10px 3em 5%) => 0
|
8
|
+
// @example sum(10px 3em 5%, true) => 18
|
9
|
+
// -------------------------------------------------------------------------------
|
10
|
+
// @param $list [List] : list
|
11
|
+
// @param $force [Boolean] : enable / disable parseInt
|
12
|
+
// -------------------------------------------------------------------------------
|
13
|
+
// @return [Number]
|
14
|
+
|
14
15
|
@function sum($list, $force: false) {
|
15
16
|
$result: 0;
|
16
17
|
|
@@ -18,7 +19,7 @@
|
|
18
19
|
@if type-of($item) == number {
|
19
20
|
|
20
21
|
@if $force and unit($item) {
|
21
|
-
$item: $item / ($item
|
22
|
+
$item: $item / ($item// 0 + 1);
|
22
23
|
}
|
23
24
|
|
24
25
|
@if unitless($item) {
|
@@ -1,16 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
// Joins all elements of $list with $glue
|
2
|
+
// -------------------------------------------------------------------------------
|
3
|
+
// @documentation http://sassylists.com/documentation/#to-string
|
4
|
+
// -------------------------------------------------------------------------------
|
5
|
+
// @example to-string(a b c) => abc
|
6
|
+
// @example to-string(a (b c) d) => abcd
|
7
|
+
// @example to-string(a b c, '-') => a-b-c
|
8
|
+
// -------------------------------------------------------------------------------
|
9
|
+
// @param $list [List] : list
|
10
|
+
// @param $glue [String] : value to use as a join string
|
11
|
+
// @param $root [Boolean] : strictly internal boolean for recursivity
|
12
|
+
// -------------------------------------------------------------------------------
|
13
|
+
// @return [String]
|
14
|
+
|
14
15
|
@function to-string($list, $glue: '', $root: true) {
|
15
16
|
$result: null;
|
16
17
|
|
@@ -1,78 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
* count-values($list)
|
9
|
-
* Count the number of occurrences of each value of $list
|
10
|
-
*
|
11
|
-
* debug($list)
|
12
|
-
* Returns $list as a string
|
13
|
-
*
|
14
|
-
* first($list)
|
15
|
-
* Return first element of $list
|
16
|
-
*
|
17
|
-
* insert-nth($list, $index, $value)
|
18
|
-
* Add $value at $index in $list
|
19
|
-
*
|
20
|
-
* is-symmetrical($list)
|
21
|
-
* Check if $list is symmetrical
|
22
|
-
*
|
23
|
-
* last($list)
|
24
|
-
* Return last element of $list
|
25
|
-
*
|
26
|
-
* last-index($list, $value)
|
27
|
-
* Return last index of $value in $list
|
28
|
-
*
|
29
|
-
* loop($list, $value: 1)
|
30
|
-
* Shift indexes from $list of $value
|
31
|
-
*
|
32
|
-
* prepend($list, $value)
|
33
|
-
* Add $value as first index of $list
|
34
|
-
*
|
35
|
-
* purge($list)
|
36
|
-
* Remove all false and null values from $list
|
37
|
-
*
|
38
|
-
* random-value($list)
|
39
|
-
* Return random value from $list
|
40
|
-
*
|
41
|
-
* remove($list, $value, $recursive: false)
|
42
|
-
* Remove value(s) $value from $list
|
43
|
-
*
|
44
|
-
* remove-duplicates($list, $recursive: false)
|
45
|
-
* Remove duplicate values from $list
|
46
|
-
*
|
47
|
-
* remove-nth($list, $index)
|
48
|
-
* Remove value from $list at index $index
|
49
|
-
*
|
50
|
-
* replace($list, $old-value, $new-value, $recursive: false)
|
51
|
-
* Replace $old-value by $new-value in $list
|
52
|
-
*
|
53
|
-
* replace-nth($list, $index, $value)
|
54
|
-
* Replace value at $index from $list by $value
|
55
|
-
*
|
56
|
-
* reverse($list, $recursive: false)
|
57
|
-
* Reverse the order of $list
|
58
|
-
*
|
59
|
-
* slice($list, $start: 1, $end: length($list))
|
60
|
-
* Slice $list between $start and $end
|
61
|
-
*
|
62
|
-
* sort($list)
|
63
|
-
* Sort all numeric values in $list
|
64
|
-
*
|
65
|
-
* sum($list, $force: false)
|
66
|
-
* Sum up all unitless values in $list
|
67
|
-
*
|
68
|
-
* to-string($list, $glue: '', $is-nested: false)
|
69
|
-
* Join all elements of $list with $glue
|
70
|
-
*
|
71
|
-
* ------------------------------------------------------------------------------- *
|
72
|
-
* CodePen (SCSS): http://codepen.io/HugoGiraudel/pen/loAgq
|
73
|
-
* CodePen (Sass): http://codepen.io/HugoGiraudel/pen/BskrE
|
74
|
-
* Repository: https://github.com/Team-Sass/Sass-list-functions/
|
75
|
-
* ------------------------------------------------------------------------------- */
|
1
|
+
// -------------------------------------------------------------------------------
|
2
|
+
// SassyLists - A couple of advanced Sass list functions
|
3
|
+
// -------------------------------------------------------------------------------
|
4
|
+
// Official site: http://sassylists.com/
|
5
|
+
// CodePen: http://codepen.io/HugoGiraudel/pen/loAgq
|
6
|
+
// Repository: https://github.com/Team-Sass/SassyLists/
|
7
|
+
// -------------------------------------------------------------------------------
|
76
8
|
|
77
9
|
@import "SassyLists/chunk";
|
78
10
|
@import "SassyLists/count-values";
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: SassyLists
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
12
|
+
date: 2013-10-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sass
|
@@ -50,7 +50,6 @@ executables: []
|
|
50
50
|
extensions: []
|
51
51
|
extra_rdoc_files: []
|
52
52
|
files:
|
53
|
-
- readme.md
|
54
53
|
- CHANGELOG.md
|
55
54
|
- lib/SassyLists.rb
|
56
55
|
- stylesheets/SassyLists/_chunk.scss
|
@@ -76,7 +75,7 @@ files:
|
|
76
75
|
- stylesheets/SassyLists/_sum.scss
|
77
76
|
- stylesheets/SassyLists/_to-string.scss
|
78
77
|
- stylesheets/_SassyLists.scss
|
79
|
-
homepage:
|
78
|
+
homepage: http://sassylists.com/
|
80
79
|
licenses: []
|
81
80
|
post_install_message:
|
82
81
|
rdoc_options: []
|
data/readme.md
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
SassyLists - Advanced Sass list functions
|
2
|
-
=========================================
|
3
|
-
|
4
|
-
Here are a couple of advanced Sass (SCSS) list functions you may or may not need in your projects. Including:
|
5
|
-
|
6
|
-
* `chunk()`: chunk list into size large lists
|
7
|
-
* `count-values()`: count the number of occurrences of each value of list
|
8
|
-
* `debug()`: returns list as a string
|
9
|
-
* `first()`: return first item in list
|
10
|
-
* `insert-nth()`: insert value at index
|
11
|
-
* `is-symmetrical()`: check if list is symmetrical
|
12
|
-
* `last()`: return last item in list
|
13
|
-
* `last-index()`: return last index of value in list
|
14
|
-
* `loop()`: shift indexes in list
|
15
|
-
* `prepend()`: prepend value to list
|
16
|
-
* `purge()`: remove all `false` and `null` values from list
|
17
|
-
* `remove()`: remove value in list
|
18
|
-
* `remove-duplicates()`: remove duplicate values from list
|
19
|
-
* `remove-nth()`: remove value at index
|
20
|
-
* `replace()`: replace value in list
|
21
|
-
* `replace-nth()`: replace value at index
|
22
|
-
* `reverse()`: reverse list
|
23
|
-
* `slice()`: slice list
|
24
|
-
* `sort()`: sort list
|
25
|
-
* `sum()`: sum all unitless values in list
|
26
|
-
* `to-string()`: cast list as string (JS `.join()`)
|
27
|
-
|
28
|
-
Some functions depend on other functions. If you include functions individually, make sure to check for these dependencies in their respective docs.
|
29
|
-
|
30
|
-
If you ever need to use them in one of your pen at [CodePen](http://codepen.io), just link to http://codepen.io/HugoGiraudel/pen/loAgq as an extra CSS resource. You'll have instant access to all functions.
|