SassyStrings 1.1.3 → 1.1.4
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/README.md +4 -4
- data/lib/SassyStrings.rb +2 -2
- data/stylesheets/private/_all.scss +2 -2
- data/stylesheets/private/_char-at.scss +7 -15
- data/stylesheets/private/_levenshtein.scss +63 -84
- data/stylesheets/private/_str-count.scss +15 -23
- data/stylesheets/private/_str-ends-with.scss +6 -14
- data/stylesheets/private/_str-explode.scss +28 -35
- data/stylesheets/private/_str-implode.scss +10 -18
- data/stylesheets/private/_str-last-index.scss +6 -14
- data/stylesheets/private/_str-lcfirst.scss +5 -13
- data/stylesheets/private/_str-pad.scss +10 -19
- data/stylesheets/private/_str-printf.scss +9 -18
- data/stylesheets/private/_str-repeat.scss +6 -14
- data/stylesheets/private/_str-replace.scss +11 -29
- data/stylesheets/private/_str-reverse.scss +7 -15
- data/stylesheets/private/_str-rot.scss +9 -18
- data/stylesheets/private/_str-shuffle.scss +17 -31
- data/stylesheets/private/_str-starts-with.scss +5 -13
- data/stylesheets/private/_str-trim.scss +5 -13
- data/stylesheets/private/_str-ucfirst.scss +5 -13
- data/stylesheets/private/_str-word-count.scss +6 -14
- data/stylesheets/private/_stringify.scss +13 -22
- data/stylesheets/public/_all.scss +3 -2
- data/stylesheets/public/_char-at.scss +12 -28
- data/stylesheets/public/_levenshtein.scss +3 -18
- data/stylesheets/public/_str-count.scss +8 -23
- data/stylesheets/public/_str-ends-with.scss +2 -17
- data/stylesheets/public/_str-explode.scss +3 -18
- data/stylesheets/public/_str-implode.scss +5 -17
- data/stylesheets/public/_str-last-index.scss +3 -18
- data/stylesheets/public/_str-lcfirst.scss +2 -15
- data/stylesheets/public/_str-pad.scss +8 -22
- data/stylesheets/public/_str-printf.scss +2 -16
- data/stylesheets/public/_str-repeat.scss +3 -18
- data/stylesheets/public/_str-replace.scss +7 -30
- data/stylesheets/public/_str-reverse.scss +2 -15
- data/stylesheets/public/_str-rot.scss +3 -18
- data/stylesheets/public/_str-shuffle.scss +6 -17
- data/stylesheets/public/_str-starts-with.scss +2 -17
- data/stylesheets/public/_str-trim.scss +2 -15
- data/stylesheets/public/_str-ucfirst.scss +2 -15
- data/stylesheets/public/_str-word-count.scss +6 -19
- data/stylesheets/public/_stringify.scss +2 -14
- metadata +45 -39
- checksums.yaml +0 -7
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -5,9 +5,9 @@ Here is a [Compass Extension](http://compass-style.org/) providing you all funct
|
|
5
5
|
## What's in there?
|
6
6
|
|
7
7
|
* `char-at($string, $index)`: returns the character from `$string` at index `$index`
|
8
|
-
* `levenshtein($a, $b)`: returns the Levenshtein distance
|
8
|
+
* `levenshtein($a, $b)`: returns the Levenshtein distance between `$a` and `$b`
|
9
9
|
* `str-count($string, $needle)`: counts number of occurrences of `$needle` in `$string`
|
10
|
-
* `str-ends-with($string, $needle)`: returns
|
10
|
+
* `str-ends-with($string, $needle)`: returns whether `$string` ends with `$needle`
|
11
11
|
* `str-explode($string, $separator)`: explodes `$string` on `$separator` occurrences
|
12
12
|
* `str-implode($list)`: implodes `$list` into a string
|
13
13
|
* `str-last-index($string, $needle)`: returns last index of `$needle` in `$string`
|
@@ -15,12 +15,12 @@ Here is a [Compass Extension](http://compass-style.org/) providing you all funct
|
|
15
15
|
* `str-pad($string, $length, $pad: " ", $direction: left)`: pads `$string` with `$pad` to match `$length` starting from `$direction`
|
16
16
|
* `str-printf($string, $elements...)`: replaces occurrences of `%s` in `$string` by elements from `$elements`
|
17
17
|
* `str-repeat($string, $times)`: repeats `$string` `$times` times
|
18
|
-
* `str-replace($string, $old, $new: ""
|
18
|
+
* `str-replace($string, $old, $new: "")`: replaces `$old` by `$new` in `$string` respecting `$case-sensitive`
|
19
19
|
* `str-reverse($string)`: reverses string
|
20
20
|
* `str-rot($string, $rot: 13)`: rotates letters in `$string` of `$rot` position in alphabet
|
21
21
|
* `str-shuffle($string)`: shuffles letters in string
|
22
22
|
* `str-split($string)`: splits `$string` into a list of characters
|
23
|
-
* `str-starts-
|
23
|
+
* `str-starts-with($string, $needle)`: returns whether `$string` starts with `$needle`
|
24
24
|
* `str-trim($string)`: removes white spaces before and after `$string`
|
25
25
|
* `str-ucfirst($string)`: turns first letter of `$string` into upper case
|
26
26
|
* `str-word-count($string)`: counts number of words in `$string`
|
data/lib/SassyStrings.rb
CHANGED
@@ -4,8 +4,8 @@ extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
|
4
4
|
Compass::Frameworks.register("SassyStrings", :path => "#{File.dirname(__FILE__)}/..")
|
5
5
|
|
6
6
|
module SassyStrings
|
7
|
-
VERSION = "1.1.
|
8
|
-
DATE = "2014-
|
7
|
+
VERSION = "1.1.4"
|
8
|
+
DATE = "2014-12-31"
|
9
9
|
end
|
10
10
|
|
11
11
|
# Sassy String Functions
|
@@ -1,7 +1,7 @@
|
|
1
1
|
//* ----------------------------------------------------- */
|
2
2
|
// Private files
|
3
|
-
// Use at your own risk
|
4
3
|
//* ----------------------------------------------------- */
|
4
|
+
|
5
5
|
@import "char-at";
|
6
6
|
@import "levenshtein";
|
7
7
|
@import "str-count";
|
@@ -21,4 +21,4 @@
|
|
21
21
|
@import "str-trim";
|
22
22
|
@import "str-ucfirst";
|
23
23
|
@import "str-word-count";
|
24
|
-
@import "stringify";
|
24
|
+
@import "stringify";
|
@@ -1,16 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
* @since 1.2.0
|
7
|
-
* ---
|
8
|
-
* @param {string} $string - string to check
|
9
|
-
* @param {string} $index - index to inspect
|
10
|
-
* ---
|
11
|
-
* @return {string}
|
12
|
-
*/
|
13
|
-
|
1
|
+
/// Return character from `$string` at `$index`.
|
2
|
+
/// @since 1.2.0
|
3
|
+
/// @param {String} $string - string to check
|
4
|
+
/// @param {String} $index - index to inspect
|
5
|
+
/// @return {String}
|
14
6
|
@function _ss-char-at($string, $index) {
|
15
|
-
|
16
|
-
}
|
7
|
+
@return str-slice($string, $index, $index);
|
8
|
+
}
|
@@ -1,105 +1,84 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
* @since 1.2.0
|
7
|
-
* ---
|
8
|
-
* @param {string} $a - first string
|
9
|
-
* @param {string} $b - second string
|
10
|
-
* ---
|
11
|
-
* @return {number}
|
12
|
-
*/
|
1
|
+
/// Calculating Levenshtein distance between strings `$a` and `$b`.
|
2
|
+
/// @since 1.2.0
|
3
|
+
/// @param {String} $a - first string
|
4
|
+
/// @param {String} $b - second string
|
5
|
+
/// @return {Number}
|
13
6
|
@function _ss-levenshtein($a, $b) {
|
14
|
-
|
15
|
-
|
7
|
+
$a: to-lower-case($a);
|
8
|
+
$b: to-lower-case($b);
|
16
9
|
|
17
|
-
|
18
|
-
|
10
|
+
$n: str-length($a);
|
11
|
+
$m: str-length($b);
|
19
12
|
|
20
|
-
|
21
|
-
|
13
|
+
$matrix: _ss-matrix($n + 1, $m + 1);
|
14
|
+
$cost: _ss-matrix($n, $m);
|
22
15
|
|
23
|
-
|
24
|
-
|
25
|
-
|
16
|
+
@if $a == $b { @return 0; }
|
17
|
+
@if $n == 0 { @return $m; }
|
18
|
+
@if $m == 0 { @return $n; }
|
26
19
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
}
|
38
|
-
}
|
20
|
+
@for $i from 0 through $n {
|
21
|
+
@for $j from 0 through $m {
|
22
|
+
$v: if($i == 0, $j, if($j == 0, $i, 0));
|
23
|
+
@if $v != 0 {
|
24
|
+
$matrix: _ss-set-matrix($matrix, $i + 1, $j + 1, $v);
|
25
|
+
}
|
26
|
+
@if $i != 0 and $j != 0 {
|
27
|
+
$v: if(str-slice($a, $i, $i) == str-slice($b, $j, $j), 0, 1);
|
28
|
+
@if $v != 0 {
|
29
|
+
$cost: _ss-set-matrix($cost, $i, $j, $v);
|
39
30
|
}
|
31
|
+
}
|
40
32
|
}
|
33
|
+
}
|
41
34
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
}
|
35
|
+
@for $i from 2 through length($matrix) {
|
36
|
+
@for $j from 2 through length(nth($matrix, $i)) {
|
37
|
+
$matrix: _ss-set-matrix($matrix, $i, $j, min(_ss-e($matrix, $i - 1, $j) + 1, _ss-e($matrix, $i, $j - 1) + 1, _ss-e($matrix, $i - 1, $j - 1) + _ss-e($cost, $i - 1, $j - 1)));
|
46
38
|
}
|
39
|
+
}
|
47
40
|
|
48
|
-
|
41
|
+
@return _ss-e($matrix, length($matrix), length(nth($matrix, 1)));
|
49
42
|
}
|
50
43
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
* @param {number} $x - x coord
|
58
|
-
* @param {number} $y - y coord
|
59
|
-
* ---
|
60
|
-
* @return {number}
|
61
|
-
*/
|
62
|
-
|
44
|
+
/// Helper to target an element in a matrix
|
45
|
+
/// @access private
|
46
|
+
/// @param {Number} $m - matrix
|
47
|
+
/// @param {Number} $x - x coord
|
48
|
+
/// @param {Number} $y - y coord
|
49
|
+
/// @return {Number}
|
63
50
|
@function _ss-e($m, $x, $y) {
|
64
|
-
|
51
|
+
@return nth(nth($m, $x), $y);
|
65
52
|
}
|
66
53
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
* @param {number} $x - number of cols
|
73
|
-
* @param {number} $y - number of lines
|
74
|
-
* ---
|
75
|
-
* @return {list}
|
76
|
-
*/
|
77
|
-
|
54
|
+
/// Helper instanciation a matrix of $x by $y
|
55
|
+
/// @access private
|
56
|
+
/// @param {Number} $x - number of cols
|
57
|
+
/// @param {Number} $y - number of lines
|
58
|
+
/// @return {List}
|
78
59
|
@function _ss-matrix($x, $y) {
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
60
|
+
$matrix: ();
|
61
|
+
|
62
|
+
@for $i from 1 through $x {
|
63
|
+
$tmp: ();
|
64
|
+
|
65
|
+
@for $y from 1 through $y {
|
66
|
+
$tmp: append($tmp, 0)
|
86
67
|
}
|
87
|
-
@return $matrix;
|
88
|
-
}
|
89
68
|
|
90
|
-
|
91
|
-
|
92
|
-
* ---
|
93
|
-
* @access private
|
94
|
-
* ---
|
95
|
-
* @param {number} $matrix - matrix to update
|
96
|
-
* @param {number} $x - x coord
|
97
|
-
* @param {number} $y - y coord
|
98
|
-
* @param {number} $value - value to assign at $matrix[$x, $y]
|
99
|
-
* ---
|
100
|
-
* @return [list]
|
101
|
-
*/
|
69
|
+
$matrix: append($matrix, $tmp);
|
70
|
+
}
|
102
71
|
|
72
|
+
@return $matrix;
|
73
|
+
}
|
74
|
+
|
75
|
+
/// Helper assigning $value at $matrix[$x, $y]
|
76
|
+
/// @access private
|
77
|
+
/// @param {Number} $matrix - matrix to update
|
78
|
+
/// @param {Number} $x - x coord
|
79
|
+
/// @param {Number} $y - y coord
|
80
|
+
/// @param {Number} $value - value to assign at $matrix[$x, $y]
|
81
|
+
/// @return {List}
|
103
82
|
@function _ss-set-matrix($matrix, $x, $y, $value) {
|
104
83
|
@return set-nth($matrix, $x, set-nth(nth($matrix, $x), $y, $value));
|
105
|
-
}
|
84
|
+
}
|
@@ -1,27 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
* @since 1.2.0
|
7
|
-
* ---
|
8
|
-
* @param {string} $string - string
|
9
|
-
* @param {string} $needle - substring to count in $string
|
10
|
-
* ---
|
11
|
-
* @return {number}
|
12
|
-
*/
|
13
|
-
|
1
|
+
/// Count the number of occurrences of `$needle` in `$string`.
|
2
|
+
/// @since 1.2.0
|
3
|
+
/// @param {String} $string - string
|
4
|
+
/// @param {String} $needle - substring to count in `$string`
|
5
|
+
/// @return {Number}
|
14
6
|
@function _ss-str-count($string, $needle) {
|
15
|
-
|
16
|
-
|
7
|
+
$index: str-index($string, $needle);
|
8
|
+
$result: if($index, 1, 0);
|
17
9
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
}
|
10
|
+
@if $index {
|
11
|
+
@for $i from $index + str-length($needle) through str-length($string) {
|
12
|
+
@if str-slice($string, $i, $i + str-length($needle) - 1) == $needle {
|
13
|
+
$result: $result + 1;
|
14
|
+
}
|
24
15
|
}
|
16
|
+
}
|
25
17
|
|
26
|
-
|
27
|
-
}
|
18
|
+
@return $result;
|
19
|
+
}
|
@@ -1,16 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
* @since 1.2.0
|
7
|
-
* ---
|
8
|
-
* @param {string} $string - string to check
|
9
|
-
* @param {string} $needle - substring to check
|
10
|
-
* ---
|
11
|
-
* @return {bool}
|
12
|
-
*/
|
13
|
-
|
1
|
+
/// Check whether `$string` ends with `$needle`.
|
2
|
+
/// @since 1.2.0
|
3
|
+
/// @param {String} $string - string to check
|
4
|
+
/// @param {String} $needle - substring to check
|
5
|
+
/// @return {Bool}
|
14
6
|
@function _ss-str-ends-with($string, $needle) {
|
15
|
-
|
7
|
+
@return str-slice($string, -1 * str-length($needle)) == $needle;
|
16
8
|
}
|
@@ -1,41 +1,34 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
* @param {string} $delimiter - string to use as a delimiter to split $string
|
10
|
-
* ---
|
11
|
-
* @return {list}
|
12
|
-
*/
|
1
|
+
/// Split `$string` into several parts using `$delimiter`.
|
2
|
+
/// @since 1.2.0
|
3
|
+
/// @param {String} $string - string to split
|
4
|
+
/// @param {String} $delimiter ('') - string to use as a delimiter to split `$string`
|
5
|
+
/// @return {List}
|
6
|
+
@function _ss-str-explode($string, $delimiter: "") {
|
7
|
+
$result: ();
|
8
|
+
$length: str-length($string);
|
13
9
|
|
14
|
-
@
|
15
|
-
$
|
16
|
-
|
17
|
-
|
18
|
-
@if str-length($delimiter) == 0 {
|
19
|
-
@for $i from 1 through $length {
|
20
|
-
$result: append($result, str-slice($string, $i, $i));
|
21
|
-
}
|
22
|
-
@return $result;
|
10
|
+
@if str-length($delimiter) == 0 {
|
11
|
+
@for $i from 1 through $length {
|
12
|
+
$result: append($result, str-slice($string, $i, $i));
|
23
13
|
}
|
24
14
|
|
25
|
-
$
|
26
|
-
|
15
|
+
@return $result;
|
16
|
+
}
|
17
|
+
|
18
|
+
$running: true;
|
19
|
+
$remaining: $string;
|
20
|
+
|
21
|
+
@while $running {
|
22
|
+
$index: str-index($remaining, $delimiter);
|
27
23
|
|
28
|
-
@
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
}
|
35
|
-
@else {
|
36
|
-
$running: false;
|
37
|
-
}
|
24
|
+
@if $index {
|
25
|
+
$slice: str-slice($remaining, 1, $index - 1);
|
26
|
+
$result: append($result, $slice);
|
27
|
+
$remaining: str-slice($remaining, $index + str-length($delimiter));
|
28
|
+
} @else {
|
29
|
+
$running: false;
|
38
30
|
}
|
31
|
+
}
|
39
32
|
|
40
|
-
|
41
|
-
}
|
33
|
+
@return append($result, $remaining);
|
34
|
+
}
|
@@ -1,21 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
* ---
|
6
|
-
* @since 1.2.0
|
7
|
-
* ---
|
8
|
-
* @param {list} $list - list to convert to string
|
9
|
-
* ---
|
10
|
-
* @return {string}
|
11
|
-
*/
|
12
|
-
|
1
|
+
/// Implode `$list` into a string.
|
2
|
+
/// @since 1.2.0
|
3
|
+
/// @param {List} $list - list to convert to string
|
4
|
+
/// @return {String}
|
13
5
|
@function _ss-str-implode($list) {
|
14
|
-
|
6
|
+
$result: "";
|
15
7
|
|
16
|
-
|
17
|
-
|
18
|
-
|
8
|
+
@each $item in $list {
|
9
|
+
$result: $result + if(length($item) > 1, str-implode($item), $item);
|
10
|
+
}
|
19
11
|
|
20
|
-
|
21
|
-
}
|
12
|
+
@return $result;
|
13
|
+
}
|
@@ -1,16 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
* @since 1.2.0
|
7
|
-
* ---
|
8
|
-
* @param {string} $string - string to search in
|
9
|
-
* @param {string} $needle - substring to search for
|
10
|
-
* ---
|
11
|
-
* @return {number}
|
12
|
-
*/
|
13
|
-
|
1
|
+
/// Return last index of `$needle` in `$string`.
|
2
|
+
/// @since 1.2.0
|
3
|
+
/// @param {String} $string - string to search in
|
4
|
+
/// @param {String} $needle - substring to search for
|
5
|
+
/// @return {Number}
|
14
6
|
@function _ss-str-last-index($string, $needle) {
|
15
7
|
$index: str-index($string, $needle);
|
16
8
|
$result: $index;
|
@@ -24,4 +16,4 @@
|
|
24
16
|
}
|
25
17
|
|
26
18
|
@return $result;
|
27
|
-
}
|
19
|
+
}
|