SassyStrings 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -0
  3. data/README.md +5 -0
  4. data/lib/SassyStrings.rb +2 -2
  5. data/stylesheets/_SassyStrings.scss +2 -20
  6. data/stylesheets/private/_all.scss +24 -0
  7. data/stylesheets/private/_char-at.scss +16 -0
  8. data/stylesheets/private/_levenshtein.scss +105 -0
  9. data/stylesheets/private/_str-count.scss +27 -0
  10. data/stylesheets/private/_str-ends-with.scss +16 -0
  11. data/stylesheets/private/_str-explode.scss +41 -0
  12. data/stylesheets/private/_str-implode.scss +21 -0
  13. data/stylesheets/private/_str-last-index.scss +27 -0
  14. data/stylesheets/private/_str-lcfirst.scss +15 -0
  15. data/stylesheets/private/_str-pad.scss +36 -0
  16. data/stylesheets/private/_str-printf.scss +29 -0
  17. data/stylesheets/private/_str-repeat.scss +22 -0
  18. data/stylesheets/private/_str-replace.scss +33 -0
  19. data/stylesheets/private/_str-reverse.scss +21 -0
  20. data/stylesheets/private/_str-rot.scss +39 -0
  21. data/stylesheets/private/_str-shuffle.scss +36 -0
  22. data/stylesheets/private/_str-starts-with.scss +16 -0
  23. data/stylesheets/private/_str-trim.scss +31 -0
  24. data/stylesheets/private/_str-ucfirst.scss +15 -0
  25. data/stylesheets/{functions → private}/_str-word-count.scss +5 -6
  26. data/stylesheets/private/_stringify.scss +26 -0
  27. data/stylesheets/public/_all.scss +23 -0
  28. data/stylesheets/public/_char-at.scss +31 -0
  29. data/stylesheets/public/_levenshtein.scss +26 -0
  30. data/stylesheets/public/_str-count.scss +26 -0
  31. data/stylesheets/public/_str-ends-with.scss +26 -0
  32. data/stylesheets/public/_str-explode.scss +26 -0
  33. data/stylesheets/public/_str-implode.scss +19 -0
  34. data/stylesheets/{functions → public}/_str-last-index.scss +5 -12
  35. data/stylesheets/public/_str-lcfirst.scss +20 -0
  36. data/stylesheets/public/_str-pad.scss +33 -0
  37. data/stylesheets/public/_str-printf.scss +21 -0
  38. data/stylesheets/public/_str-repeat.scss +26 -0
  39. data/stylesheets/public/_str-replace.scss +39 -0
  40. data/stylesheets/public/_str-reverse.scss +20 -0
  41. data/stylesheets/public/_str-rot.scss +26 -0
  42. data/stylesheets/public/_str-shuffle.scss +18 -0
  43. data/stylesheets/public/_str-starts-with.scss +26 -0
  44. data/stylesheets/public/_str-trim.scss +20 -0
  45. data/stylesheets/{functions → public}/_str-ucfirst.scss +6 -2
  46. data/stylesheets/public/_str-word-count.scss +20 -0
  47. data/stylesheets/public/_stringify.scss +15 -0
  48. metadata +44 -22
  49. data/stylesheets/functions/_char-at.scss +0 -25
  50. data/stylesheets/functions/_levenshtein.scss +0 -99
  51. data/stylesheets/functions/_str-count.scss +0 -31
  52. data/stylesheets/functions/_str-ends-with.scss +0 -20
  53. data/stylesheets/functions/_str-explode.scss +0 -45
  54. data/stylesheets/functions/_str-implode.scss +0 -15
  55. data/stylesheets/functions/_str-lcfirst.scss +0 -14
  56. data/stylesheets/functions/_str-pad.scss +0 -45
  57. data/stylesheets/functions/_str-printf.scss +0 -28
  58. data/stylesheets/functions/_str-repeat.scss +0 -26
  59. data/stylesheets/functions/_str-replace.scss +0 -47
  60. data/stylesheets/functions/_str-reverse.scss +0 -20
  61. data/stylesheets/functions/_str-rot.scss +0 -43
  62. data/stylesheets/functions/_str-shuffle.scss +0 -26
  63. data/stylesheets/functions/_str-starts-with.scss +0 -20
  64. data/stylesheets/functions/_str-trim.scss +0 -30
  65. data/stylesheets/functions/_stringify.scss +0 -21
@@ -0,0 +1,22 @@
1
+ /*
2
+ * Repeat $string $times times
3
+ * ---
4
+ * @access private
5
+ * ---
6
+ * @since 1.2.0
7
+ * ---
8
+ * @param {string} $string - string to repeat
9
+ * @param {number} $times - number of times to repeat $string
10
+ * ---
11
+ * @return {string|false}
12
+ */
13
+
14
+ @function _ss-str-repeat($string, $times) {
15
+ $result: "";
16
+
17
+ @for $i from 1 through $times {
18
+ $result: $result + $string;
19
+ }
20
+
21
+ @return $result;
22
+ }
@@ -0,0 +1,33 @@
1
+ /*
2
+ * Replace $old occurrences by $new in $string respecting $case-sensitive
3
+ * ---
4
+ * @access private
5
+ * ---
6
+ * @since 1.2.0
7
+ * ---
8
+ * @param {string} $string - string
9
+ * @param {string} $old - old substring to replace by $new
10
+ * @param {string} $new - new substring to replace $old
11
+ * @param {bool} $case-sensitive - case-sensitivity
12
+ * ---
13
+ * @return {string}
14
+ */
15
+
16
+ @function _ss-str-replace($string, $old, $new: '', $case-sensitive: true) {
17
+ $index: if(not $case-sensitive, str-index(to-lower-case($string), to-lower-case($old)), str-index($string, $old));
18
+
19
+ @if $index and $new != $old {
20
+ $result: if($index != 1, quote(str-slice($string, 1, $index - 1)), '');
21
+
22
+ @for $i from $index through str-length($string) {
23
+ @if $i < $index or $i >= $index + str-length($old) {
24
+ $result: $result + str-slice($string, $i, $i);
25
+ }
26
+ }
27
+
28
+ @return quote(str-replace(str-insert($result, $new, $index), $old, $new, $case-sensitive));
29
+ }
30
+
31
+ @return $string;
32
+ }
33
+
@@ -0,0 +1,21 @@
1
+ /*
2
+ * Reverse $string
3
+ * ---
4
+ * @access private
5
+ * ---
6
+ * @since 1.2.0
7
+ * ---
8
+ * @param {string} $string - string to reverse
9
+ * ---
10
+ * @return {string}
11
+ */
12
+
13
+ @function _ss-str-reverse($string) {
14
+ $result: "";
15
+
16
+ @for $i from str-length($string) * -1 through -1 {
17
+ $result: $result + str-slice($string, abs($i), abs($i));
18
+ }
19
+
20
+ @return $result;
21
+ }
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Rotate all characters from the alphabet in $string by $rot positions
3
+ * ---
4
+ * @access private
5
+ * ---
6
+ * @since 1.2.0
7
+ * ---
8
+ * @param {string} $string - string to rotate
9
+ * @param {number} $rot - number of positions to switch in alphabet
10
+ * ---
11
+ * @return {string}
12
+ */
13
+
14
+ @function _ss-str-rot($string, $rot: 13) {
15
+ $alphabet: 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;
16
+ $result: "";
17
+ $rot: if(type-of($rot) == "number", floor($rot), 13);
18
+
19
+ @for $i from 1 through str-length($string) {
20
+ $char: str-slice($string, $i, $i);
21
+ $index: index($alphabet, to-lower-case($char));
22
+ $is-caps: $index and (index($alphabet, to-lower-case($char)) != index($alphabet, $char));
23
+ $new-char: if($index,
24
+ if($index + $rot > length($alphabet),
25
+ nth($alphabet, $index + $rot - length($alphabet)),
26
+ nth($alphabet, $index + $rot)
27
+ ),
28
+ $char
29
+ );
30
+
31
+ @if $is-caps {
32
+ $new-char: to-upper-case($new-char);
33
+ }
34
+
35
+ $result: $result + $new-char;
36
+ }
37
+
38
+ @return $result;
39
+ }
@@ -0,0 +1,36 @@
1
+ /*
2
+ * Shuffle characters from $string
3
+ * ---
4
+ * @access private
5
+ * ---
6
+ * @since 1.2.0
7
+ * ---
8
+ * @param {string} $string - string to shuffle
9
+ * ---
10
+ * @return {string}
11
+ */
12
+
13
+ @function _ss-str-shuffle($string) {
14
+ @return str-implode(_ss-shuffle(str-explode($string)));
15
+ }
16
+
17
+ /*
18
+ * Shuffle a list
19
+ * ---
20
+ * @access private
21
+ * ---
22
+ * @param {list} $list - shuffle a list
23
+ * ---
24
+ * @return {list}
25
+ */
26
+
27
+ @function _ss-shuffle($list) {
28
+ @for $i from -1 * length($list) through -1 {
29
+ $i: abs($i);
30
+ $j: random(length($list) - 1) + 1;
31
+ $tmp: nth($list, $i);
32
+ $list: set-nth($list, $i, nth($list, $j));
33
+ $list: set-nth($list, $j, $tmp);
34
+ }
35
+ @return $list;
36
+ }
@@ -0,0 +1,16 @@
1
+ /*
2
+ * Check whether $string stars 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-starts-with($string, $needle) {
15
+ @return str-slice($string, 1, str-length($needle)) == $needle;
16
+ }
@@ -0,0 +1,31 @@
1
+ /*
2
+ * Remove all trailing and leading whitespaces from $string
3
+ * ---
4
+ * @access private
5
+ * ---
6
+ * @since 1.2.0
7
+ * ---
8
+ * @param {string} $string - string
9
+ * ---
10
+ * @return {string}
11
+ */
12
+
13
+ @function _ss-str-trim($string) {
14
+ $start: 1;
15
+ $end: str-length($string);
16
+
17
+ @for $i from 1 through str-length($string) {
18
+ $first: str-slice($string, $i, $i);
19
+ $last: str-slice($string, -$i, -$i);
20
+
21
+ @if $first == " " and $i + 1 == $start + 1 {
22
+ $start: $i + 1;
23
+ }
24
+
25
+ @if $last == " " and str-length($string) - $i == $end - 1 {
26
+ $end: str-length($string) - $i;
27
+ }
28
+ }
29
+
30
+ @return str-slice($string, $start, $end);
31
+ }
@@ -0,0 +1,15 @@
1
+ /*
2
+ * Capitalize first letter from $string
3
+ * ---
4
+ * @access private
5
+ * ---
6
+ * @since 1.2.0
7
+ * ---
8
+ * @param {string} $string - string for capitalization
9
+ * ---
10
+ * @return {string}
11
+ */
12
+
13
+ @function _ss-str-ucfirst($string) {
14
+ @return to-upper-case(str-slice($string, 1, 1)) + str-slice($string, 2);
15
+ }
@@ -1,17 +1,16 @@
1
1
  /*
2
2
  * Count number of words in $string
3
3
  * ---
4
+ * @access private
5
+ * ---
6
+ * @since 1.2.0
7
+ * ---
4
8
  * @param {string} $string - string to check
5
9
  * ---
6
10
  * @return {string|false}
7
11
  */
8
12
 
9
- @function str-word-count($string) {
10
- @if type-of($string) != "string" {
11
- @warn "`str-word-count` function expecting a string for $string; #{type-of($string)} given.";
12
- @return false;
13
- }
14
-
13
+ @function _ss-str-word-count($string) {
15
14
  @if $string == '' {
16
15
  @return 0;
17
16
  }
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Cast anything to string
3
+ * ---
4
+ * @access private
5
+ * ---
6
+ * @since 1.2.0
7
+ * ---
8
+ * @param {literal} $literal: number to cast to string
9
+ * ---
10
+ * @return {string}
11
+ */
12
+
13
+ @function _ss-stringify($literal) {
14
+ $result: "";
15
+
16
+ @if length($literal) == 1 {
17
+ $result: $literal + unquote("");
18
+ } @else {
19
+ @each $item in $literal {
20
+ $result: $result + stringify($item);
21
+ }
22
+ }
23
+
24
+ @return quote($result);
25
+
26
+ }
@@ -0,0 +1,23 @@
1
+ //* ----------------------------------------------------- */
2
+ // Public files for use in your project
3
+ //* ----------------------------------------------------- */
4
+ @import "char-at";
5
+ @import "levenshtein";
6
+ @import "str-count";
7
+ @import "str-ends-with";
8
+ @import "str-explode";
9
+ @import "str-implode";
10
+ @import "str-last-index";
11
+ @import "str-lcfirst";
12
+ @import "str-pad";
13
+ @import "str-printf";
14
+ @import "str-repeat";
15
+ @import "str-replace";
16
+ @import "str-reverse";
17
+ @import "str-rot";
18
+ @import "str-shuffle";
19
+ @import "str-starts-with";
20
+ @import "str-trim";
21
+ @import "str-ucfirst";
22
+ @import "str-word-count";
23
+ @import "stringify";
@@ -0,0 +1,31 @@
1
+ /*
2
+ * Return character from $string at $index
3
+ * ---
4
+ * @access public
5
+ * ---
6
+ * @since 1.0.0
7
+ * ---
8
+ * @param {string} $string - string to check
9
+ * @param {string} $index - index to inspect
10
+ * ---
11
+ * @return {string}
12
+ */
13
+
14
+ @function char-at($string, $index) {
15
+ @if type-of($string) != "string" {
16
+ @warn "`char-at` function expecting a string for $string; #{type-of($string)} given.";
17
+ @return false;
18
+ }
19
+
20
+ @if type-of($index) != "number" {
21
+ @warn "`char-at` function expecting a number for $index; #{type-of($index)} given.";
22
+ @return false;
23
+ }
24
+
25
+ @if $index < 1 or $index > str-length($string) {
26
+ @warn "Out of bounds $index for `char-at`.";
27
+ @return false;
28
+ }
29
+
30
+ @return _ss-char-at($string, $index);
31
+ }
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Calculating Levenshtein distance between two strings
3
+ * ---
4
+ * @access public
5
+ * ---
6
+ * @since 1.0.0
7
+ * ---
8
+ * @param {string} $a - first string
9
+ * @param {string} $b - second string
10
+ * ---
11
+ * @return {number}
12
+ */
13
+
14
+ @function levenshtein($a, $b) {
15
+ @if type-of($a) != "string" {
16
+ @warn "`str-count` function expecting a string for $a; #{type-of($a)} given.";
17
+ @return false;
18
+ }
19
+
20
+ @if type-of($b) != "string" {
21
+ @warn "`str-count` function expecting a string for $b; #{type-of($b)} given.";
22
+ @return false;
23
+ }
24
+
25
+ @return _ss-levenshtein($a, $b);
26
+ }
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Count the number of occurrences of $needle in $string
3
+ * ---
4
+ * @access public
5
+ * ---
6
+ * @since 1.0.0
7
+ * ---
8
+ * @param {string} $string - string
9
+ * @param {string} $needle - substring to count in $string
10
+ * ---
11
+ * @return {number|false}
12
+ */
13
+
14
+ @function str-count($string, $needle) {
15
+ @if type-of($string) != "string" {
16
+ @warn "`str-count` function expecting a string for $string; #{type-of($string)} given.";
17
+ @return false;
18
+ }
19
+
20
+ @if type-of($needle) != "string" {
21
+ @warn "`str-count` function expecting a string for $needle; #{type-of($needle)} given.";
22
+ @return false;
23
+ }
24
+
25
+ @return _ss-str-count($string, $needle);
26
+ }
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Check whether $string ends with $needle
3
+ * ---
4
+ * @access public
5
+ * ---
6
+ * @since 1.0.0
7
+ * ---
8
+ * @param {string} $string - string to check
9
+ * @param {string} $needle - substring to check
10
+ * ---
11
+ * @return {bool}
12
+ */
13
+
14
+ @function str-ends-with($string, $needle) {
15
+ @if type-of($string) != "string" {
16
+ @warn "`str-starts-with` function expecting a string for $string; #{type-of($string)} given.";
17
+ @return false;
18
+ }
19
+
20
+ @if type-of($needle) != "string" {
21
+ @warn "`str-starts-with` function expecting a string for $needle; #{type-of($needle)} given.";
22
+ @return false;
23
+ }
24
+
25
+ @return _ss-str-ends-with($string, $needle);
26
+ }
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Split $string into several parts using $delimiter
3
+ * ---
4
+ * @access public
5
+ * ---
6
+ * @since 1.0.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|false}
12
+ */
13
+
14
+ @function str-explode($string, $delimiter: '') {
15
+ @if type-of($string) != "string" {
16
+ @warn "`explode` function expecting a string; #{type-of($string)} given.";
17
+ @return false;
18
+ }
19
+
20
+ @if type-of($delimiter) != "string" {
21
+ @warn "`explode` function expecting a string; #{type-of($delimiter)} given.";
22
+ @return false;
23
+ }
24
+
25
+ @return _ss-str-explode($string, $delimiter);
26
+ }