SassyStrings 1.0.1 → 1.1.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -0
- data/README.md +5 -0
- data/lib/SassyStrings.rb +2 -2
- data/stylesheets/_SassyStrings.scss +2 -20
- data/stylesheets/private/_all.scss +24 -0
- data/stylesheets/private/_char-at.scss +16 -0
- data/stylesheets/private/_levenshtein.scss +105 -0
- data/stylesheets/private/_str-count.scss +27 -0
- data/stylesheets/private/_str-ends-with.scss +16 -0
- data/stylesheets/private/_str-explode.scss +41 -0
- data/stylesheets/private/_str-implode.scss +21 -0
- data/stylesheets/private/_str-last-index.scss +27 -0
- data/stylesheets/private/_str-lcfirst.scss +15 -0
- data/stylesheets/private/_str-pad.scss +36 -0
- data/stylesheets/private/_str-printf.scss +29 -0
- data/stylesheets/private/_str-repeat.scss +22 -0
- data/stylesheets/private/_str-replace.scss +33 -0
- data/stylesheets/private/_str-reverse.scss +21 -0
- data/stylesheets/private/_str-rot.scss +39 -0
- data/stylesheets/private/_str-shuffle.scss +36 -0
- data/stylesheets/private/_str-starts-with.scss +16 -0
- data/stylesheets/private/_str-trim.scss +31 -0
- data/stylesheets/private/_str-ucfirst.scss +15 -0
- data/stylesheets/{functions → private}/_str-word-count.scss +5 -6
- data/stylesheets/private/_stringify.scss +26 -0
- data/stylesheets/public/_all.scss +23 -0
- data/stylesheets/public/_char-at.scss +31 -0
- data/stylesheets/public/_levenshtein.scss +26 -0
- data/stylesheets/public/_str-count.scss +26 -0
- data/stylesheets/public/_str-ends-with.scss +26 -0
- data/stylesheets/public/_str-explode.scss +26 -0
- data/stylesheets/public/_str-implode.scss +19 -0
- data/stylesheets/{functions → public}/_str-last-index.scss +5 -12
- data/stylesheets/public/_str-lcfirst.scss +20 -0
- data/stylesheets/public/_str-pad.scss +33 -0
- data/stylesheets/public/_str-printf.scss +21 -0
- data/stylesheets/public/_str-repeat.scss +26 -0
- data/stylesheets/public/_str-replace.scss +39 -0
- data/stylesheets/public/_str-reverse.scss +20 -0
- data/stylesheets/public/_str-rot.scss +26 -0
- data/stylesheets/public/_str-shuffle.scss +18 -0
- data/stylesheets/public/_str-starts-with.scss +26 -0
- data/stylesheets/public/_str-trim.scss +20 -0
- data/stylesheets/{functions → public}/_str-ucfirst.scss +6 -2
- data/stylesheets/public/_str-word-count.scss +20 -0
- data/stylesheets/public/_stringify.scss +15 -0
- metadata +44 -22
- data/stylesheets/functions/_char-at.scss +0 -25
- data/stylesheets/functions/_levenshtein.scss +0 -99
- data/stylesheets/functions/_str-count.scss +0 -31
- data/stylesheets/functions/_str-ends-with.scss +0 -20
- data/stylesheets/functions/_str-explode.scss +0 -45
- data/stylesheets/functions/_str-implode.scss +0 -15
- data/stylesheets/functions/_str-lcfirst.scss +0 -14
- data/stylesheets/functions/_str-pad.scss +0 -45
- data/stylesheets/functions/_str-printf.scss +0 -28
- data/stylesheets/functions/_str-repeat.scss +0 -26
- data/stylesheets/functions/_str-replace.scss +0 -47
- data/stylesheets/functions/_str-reverse.scss +0 -20
- data/stylesheets/functions/_str-rot.scss +0 -43
- data/stylesheets/functions/_str-shuffle.scss +0 -26
- data/stylesheets/functions/_str-starts-with.scss +0 -20
- data/stylesheets/functions/_str-trim.scss +0 -30
- data/stylesheets/functions/_stringify.scss +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d70bcfa2579e805f82da0912eef6f090541410bf
|
4
|
+
data.tar.gz: 1dc25991030d97b6a074736f6c8586be02c6e6e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57479ce6911600c434b4ae2d69e8e5d2e19e110885d77156b2980d346990392f2cd0c4605ddef84d1c6949c6653e959c27ce7dcd1545483ca48484e0f1458473
|
7
|
+
data.tar.gz: fe84136981c67e4782df41f6d19eaa51f7ab6765aced5c0d10643eef55fb81bd316519011f1c879860d5018da734009f07f59e11deff92b6175f1447c740202c
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -47,3 +47,8 @@ Some functions depend on other functions. If you include functions individually,
|
|
47
47
|
## Credits
|
48
48
|
|
49
49
|
Huge thanks to [Marc Mintel](http://twitter.com/marcmintel) for his help.
|
50
|
+
|
51
|
+
## Advanced usage
|
52
|
+
|
53
|
+
If you experience naming conflicts or want to add your own error handling and dependency checker feel free to use the functions in `stylesheets/private`.
|
54
|
+
These functions do not add any kind of error handling so use them at your own risk!
|
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.0
|
8
|
-
DATE = "2014-
|
7
|
+
VERSION = "1.1.0"
|
8
|
+
DATE = "2014-09-28"
|
9
9
|
end
|
10
10
|
|
11
11
|
# Sassy String Functions
|
@@ -4,23 +4,5 @@
|
|
4
4
|
// Repository: https://github.com/HugoGiraudel/SassyStrings/
|
5
5
|
// -------------------------------------------------------------------------------
|
6
6
|
|
7
|
-
@import
|
8
|
-
@import
|
9
|
-
@import "functions/str-count";
|
10
|
-
@import "functions/str-ends-with";
|
11
|
-
@import "functions/str-explode";
|
12
|
-
@import "functions/str-implode";
|
13
|
-
@import "functions/str-last-index";
|
14
|
-
@import "functions/str-lcfirst";
|
15
|
-
@import "functions/str-pad";
|
16
|
-
@import "functions/str-printf";
|
17
|
-
@import "functions/str-repeat";
|
18
|
-
@import "functions/str-replace";
|
19
|
-
@import "functions/str-reverse";
|
20
|
-
@import "functions/str-rot";
|
21
|
-
@import "functions/str-shuffle";
|
22
|
-
@import "functions/str-starts-with";
|
23
|
-
@import "functions/str-trim";
|
24
|
-
@import "functions/str-ucfirst";
|
25
|
-
@import "functions/str-word-count";
|
26
|
-
@import "functions/stringify";
|
7
|
+
@import 'private/all';
|
8
|
+
@import 'public/all';
|
@@ -0,0 +1,24 @@
|
|
1
|
+
//* ----------------------------------------------------- */
|
2
|
+
// Private files
|
3
|
+
// Use at your own risk
|
4
|
+
//* ----------------------------------------------------- */
|
5
|
+
@import "char-at";
|
6
|
+
@import "levenshtein";
|
7
|
+
@import "str-count";
|
8
|
+
@import "str-ends-with";
|
9
|
+
@import "str-explode";
|
10
|
+
@import "str-implode";
|
11
|
+
@import "str-last-index";
|
12
|
+
@import "str-lcfirst";
|
13
|
+
@import "str-pad";
|
14
|
+
@import "str-printf";
|
15
|
+
@import "str-repeat";
|
16
|
+
@import "str-replace";
|
17
|
+
@import "str-reverse";
|
18
|
+
@import "str-rot";
|
19
|
+
@import "str-shuffle";
|
20
|
+
@import "str-starts-with";
|
21
|
+
@import "str-trim";
|
22
|
+
@import "str-ucfirst";
|
23
|
+
@import "str-word-count";
|
24
|
+
@import "stringify";
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/*
|
2
|
+
* Return character from $string at $index
|
3
|
+
* ---
|
4
|
+
* @access private
|
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
|
+
|
14
|
+
@function _ss-char-at($string, $index) {
|
15
|
+
@return str-slice($string, $index, $index);
|
16
|
+
}
|
@@ -0,0 +1,105 @@
|
|
1
|
+
/*
|
2
|
+
* Calculating Levenshtein distance between two strings
|
3
|
+
* ---
|
4
|
+
* @access private
|
5
|
+
* ---
|
6
|
+
* @since 1.2.0
|
7
|
+
* ---
|
8
|
+
* @param {string} $a - first string
|
9
|
+
* @param {string} $b - second string
|
10
|
+
* ---
|
11
|
+
* @return {number}
|
12
|
+
*/
|
13
|
+
@function _ss-levenshtein($a, $b) {
|
14
|
+
$a: to-lower-case($a);
|
15
|
+
$b: to-lower-case($b);
|
16
|
+
|
17
|
+
$n: str-length($a);
|
18
|
+
$m: str-length($b);
|
19
|
+
|
20
|
+
$matrix: _ss-matrix($n + 1, $m + 1);
|
21
|
+
$cost: _ss-matrix($n, $m);
|
22
|
+
|
23
|
+
@if $a == $b { @return 0; }
|
24
|
+
@if $n == 0 { @return $m; }
|
25
|
+
@if $m == 0 { @return $n; }
|
26
|
+
|
27
|
+
@for $i from 0 through $n {
|
28
|
+
@for $j from 0 through $m {
|
29
|
+
$v: if($i == 0, $j, if($j == 0, $i, 0));
|
30
|
+
@if $v != 0 {
|
31
|
+
$matrix: _ss-set-matrix($matrix, $i + 1, $j + 1, $v);
|
32
|
+
}
|
33
|
+
@if $i != 0 and $j != 0 {
|
34
|
+
$v: if(str-slice($a, $i, $i) == str-slice($b, $j, $j), 0, 1);
|
35
|
+
@if $v != 0 {
|
36
|
+
$cost: _ss-set-matrix($cost, $i, $j, $v);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
@for $i from 2 through length($matrix) {
|
43
|
+
@for $j from 2 through length(nth($matrix, $i)) {
|
44
|
+
$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)));
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
@return _ss-e($matrix, length($matrix), length(nth($matrix, 1)));
|
49
|
+
}
|
50
|
+
|
51
|
+
/*
|
52
|
+
* Helper to target an element in a matrix
|
53
|
+
* ---
|
54
|
+
* @access private
|
55
|
+
* ---
|
56
|
+
* @param {number} $m - matrix
|
57
|
+
* @param {number} $x - x coord
|
58
|
+
* @param {number} $y - y coord
|
59
|
+
* ---
|
60
|
+
* @return {number}
|
61
|
+
*/
|
62
|
+
|
63
|
+
@function _ss-e($m, $x, $y) {
|
64
|
+
@return nth(nth($m, $x), $y);
|
65
|
+
}
|
66
|
+
|
67
|
+
/*
|
68
|
+
* Helper instanciation a matrix of $x by $y
|
69
|
+
* ---
|
70
|
+
* @access private
|
71
|
+
* ---
|
72
|
+
* @param {number} $x - number of cols
|
73
|
+
* @param {number} $y - number of lines
|
74
|
+
* ---
|
75
|
+
* @return {list}
|
76
|
+
*/
|
77
|
+
|
78
|
+
@function _ss-matrix($x, $y) {
|
79
|
+
$matrix: ();
|
80
|
+
@for $i from 1 through $x {
|
81
|
+
$tmp: ();
|
82
|
+
@for $y from 1 through $y {
|
83
|
+
$tmp: append($tmp, 0)
|
84
|
+
}
|
85
|
+
$matrix: append($matrix, $tmp);
|
86
|
+
}
|
87
|
+
@return $matrix;
|
88
|
+
}
|
89
|
+
|
90
|
+
/*
|
91
|
+
* Helper assigning $value at $matrix[$x, $y]
|
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
|
+
*/
|
102
|
+
|
103
|
+
@function _ss-set-matrix($matrix, $x, $y, $value) {
|
104
|
+
@return set-nth($matrix, $x, set-nth(nth($matrix, $x), $y, $value));
|
105
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
/*
|
2
|
+
* Count the number of occurrences of $needle in $string
|
3
|
+
* ---
|
4
|
+
* @access private
|
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
|
+
|
14
|
+
@function _ss-str-count($string, $needle) {
|
15
|
+
$index: str-index($string, $needle);
|
16
|
+
$result: if($index, 1, 0);
|
17
|
+
|
18
|
+
@if $index {
|
19
|
+
@for $i from $index + str-length($needle) through str-length($string) {
|
20
|
+
@if str-slice($string, $i, $i + str-length($needle) - 1) == $needle {
|
21
|
+
$result: $result + 1;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
@return $result;
|
27
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/*
|
2
|
+
* Check whether $string ends with $needle
|
3
|
+
* ---
|
4
|
+
* @access private
|
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
|
+
|
14
|
+
@function _ss-str-ends-with($string, $needle) {
|
15
|
+
@return str-slice($string, -1 * str-length($needle)) == $needle;
|
16
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
/*
|
2
|
+
* Split $string into several parts using $delimiter
|
3
|
+
* ---
|
4
|
+
* @access private
|
5
|
+
* ---
|
6
|
+
* @since 1.2.0
|
7
|
+
* ---
|
8
|
+
* @param {string} $string - string to split
|
9
|
+
* @param {string} $delimiter - string to use as a delimiter to split $string
|
10
|
+
* ---
|
11
|
+
* @return {list}
|
12
|
+
*/
|
13
|
+
|
14
|
+
@function _ss-str-explode($string, $delimiter: '') {
|
15
|
+
$result: ();
|
16
|
+
$length: str-length($string);
|
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;
|
23
|
+
}
|
24
|
+
|
25
|
+
$running: true;
|
26
|
+
$remaining: $string;
|
27
|
+
|
28
|
+
@while $running {
|
29
|
+
$index: str-index($remaining, $delimiter);
|
30
|
+
@if $index {
|
31
|
+
$slice: str-slice($remaining, 1, $index - 1);
|
32
|
+
$result: append($result, $slice);
|
33
|
+
$remaining: str-slice($remaining, $index + str-length($delimiter));
|
34
|
+
}
|
35
|
+
@else {
|
36
|
+
$running: false;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
@return append($result, $remaining);
|
41
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
/*
|
2
|
+
* Implode $list into a string
|
3
|
+
* ---
|
4
|
+
* @access private
|
5
|
+
* ---
|
6
|
+
* @since 1.2.0
|
7
|
+
* ---
|
8
|
+
* @param {list} $list - list to convert to string
|
9
|
+
* ---
|
10
|
+
* @return {string}
|
11
|
+
*/
|
12
|
+
|
13
|
+
@function _ss-str-implode($list) {
|
14
|
+
$result: "";
|
15
|
+
|
16
|
+
@each $item in $list {
|
17
|
+
$result: $result + if(length($item) > 1, str-implode($item), $item);
|
18
|
+
}
|
19
|
+
|
20
|
+
@return $result;
|
21
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
/*
|
2
|
+
* Return last index of $needle in $string
|
3
|
+
* ---
|
4
|
+
* @access private
|
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
|
+
|
14
|
+
@function _ss-str-last-index($string, $needle) {
|
15
|
+
$index: str-index($string, $needle);
|
16
|
+
$result: $index;
|
17
|
+
|
18
|
+
@if $index {
|
19
|
+
@for $i from $index + str-length($needle) through str-length($string) {
|
20
|
+
@if str-slice($string, $i, $i + str-length($needle) - 1) == $needle {
|
21
|
+
$result: $i;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
@return $result;
|
27
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/*
|
2
|
+
* Lower case first character of $string
|
3
|
+
* ---
|
4
|
+
* @access private
|
5
|
+
* ---
|
6
|
+
* @since 1.2.0
|
7
|
+
* ---
|
8
|
+
* @param {string} $string - string to lower the first character
|
9
|
+
* ---
|
10
|
+
* @return {string}
|
11
|
+
*/
|
12
|
+
|
13
|
+
@function _ss-str-lcfirst($string) {
|
14
|
+
@return to-lower-case(str-slice($string, 1, 1)) + str-slice($string, 2);
|
15
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
/*
|
2
|
+
* Pad $string from $direction with $pad to reach $length characters
|
3
|
+
* ---
|
4
|
+
* @access public
|
5
|
+
* ---
|
6
|
+
* @since 1.2.0
|
7
|
+
* ---
|
8
|
+
* @param {string} $string - string to pad
|
9
|
+
* @param {number} $length - number of characters to go for in returned string
|
10
|
+
* @param {string} $pad - string to use to pad $string
|
11
|
+
* @param {string} $direction - direction left or right for padding
|
12
|
+
* ---
|
13
|
+
* @return {string}
|
14
|
+
*/
|
15
|
+
|
16
|
+
@function _ss-str-pad($string, $length, $pad: " ", $direction: left) {
|
17
|
+
$direction: if(index(left right, $direction), $direction, left);
|
18
|
+
$new-string: $string;
|
19
|
+
$index: 1;
|
20
|
+
|
21
|
+
@if $length > str-length($string) {
|
22
|
+
@while str-length($new-string) < $length {
|
23
|
+
$remains: $length - str-length($new-string);
|
24
|
+
$pad: if($remains < str-length($pad), str-slice($pad, 1, $remains), $pad);
|
25
|
+
@if $direction == left {
|
26
|
+
$new-string: str-insert($new-string, $pad, $index);
|
27
|
+
$index: $index + str-length($pad);
|
28
|
+
}
|
29
|
+
@else {
|
30
|
+
$new-string: $new-string + $pad;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
@return $new-string;
|
36
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/*
|
2
|
+
* Replace occurrences of %s in $string by $elements
|
3
|
+
* ---
|
4
|
+
* @access private
|
5
|
+
* ---
|
6
|
+
* @since 1.2.0
|
7
|
+
* ---
|
8
|
+
* @param {string} $string - string to check
|
9
|
+
* @param {arglist} $elements - strings to use for replacements in %s
|
10
|
+
* ---
|
11
|
+
* @return {string}
|
12
|
+
*/
|
13
|
+
|
14
|
+
@function _ss-str-printf($string, $elements...) {
|
15
|
+
$breaker: '%s';
|
16
|
+
$result: $string;
|
17
|
+
|
18
|
+
@for $i from 1 through length($elements) {
|
19
|
+
$index: str-index($result, $breaker);
|
20
|
+
@if $index {
|
21
|
+
$result: str-slice($result, 1, $index - 1) + stringify(nth($elements, $i)) + str-slice($result, $index + str-length($breaker));
|
22
|
+
}
|
23
|
+
@else {
|
24
|
+
@return $result;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
@return $result;
|
29
|
+
}
|