SassyStrings 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
}
|