sass-aleksi 0.1.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 893674e8c5f9e9905e811efeb9e46a42f5105ba2
4
- data.tar.gz: f03afa65e82e3b4e5aaad93dcc1b7c760e1e96c9
3
+ metadata.gz: 83216fd754d48f2ec46e12d93615f9de9d0fa14c
4
+ data.tar.gz: 175cea34f5c09d95b63afcd8a4b6b83342a46686
5
5
  SHA512:
6
- metadata.gz: 31591aa865f29353917dcd9a22cf487a381175cd7b2a6104fb8dffe856876d0becb031cfaf2f91566987f38ca52b6af60c7d91887bb6bbb98e5b2f78526ae8eb
7
- data.tar.gz: e8e0941ecede6e1231dcd420e8dd588bdbb2999cd34c30b8ee65254521a76cb87880391ae426cdd9b090579e116ec2407a3d6823aa8aa135e9488a58c8e96c3c
6
+ metadata.gz: 8ca2fb411c78025b29ad0db7437bcc8bcf76937565a77d55ea17ff10c9612534dabda7717f22474bc91b3b42f2163988b11f3a7190e87596624b02ce937472cc
7
+ data.tar.gz: acb8a36fdc3af8b6149a04f942c0df9988f1cf09a7fabadd8a09a977d374c6de3ca21886f4955045251c565272ff75daa72787a5438ef22f5067a473fa8ff3c6
data/lib/sass-aleksi.rb CHANGED
@@ -26,6 +26,6 @@ end
26
26
  # Version is a number. If a version contains alphas, it will be created as a prerelease version
27
27
  # Date is in the form of YYYY-MM-DD
28
28
  module SassAleksi
29
- VERSION = "0.1.2"
30
- DATE = "2015-08-25"
29
+ VERSION = "0.2.1"
30
+ DATE = "2015-08-26"
31
31
  end
@@ -8,7 +8,6 @@
8
8
 
9
9
  // LIBRARIES/FRAMEWORKS
10
10
  @import "SassyCast";
11
- @import "SassyStrings";
12
11
  @import "SassyLists";
13
12
  @import "sassy-maps";
14
13
 
@@ -17,6 +16,7 @@
17
16
  @import "aleksi/general";
18
17
  @import "aleksi/math";
19
18
  @import "aleksi/lengths";
19
+ @import "aleksi/strings";
20
20
  @import "aleksi/colors";
21
21
  @import "aleksi/lists";
22
22
  @import "aleksi/maps";
@@ -0,0 +1,11 @@
1
+ // =============================================================================
2
+ // =ALEKSI - STRINGS
3
+ // =============================================================================
4
+ //// Tools to work with sass strings.
5
+ //// @author [Hugo Giraudel](http://hugogiraudel.com)
6
+ //// @author [Yoannis Jamar](http://yoannis.me)
7
+
8
+ @import "aleksi/strings/char-at";
9
+ @import "aleksi/strings/str-replace";
10
+ @import "aleksi/strings/str-remove";
11
+ @import "aleksi/strings/str-explode";
@@ -49,6 +49,10 @@ $CONSTANTS: () !default;
49
49
  /// @throw Error if $name is not a full-caps name or contains hyphens.
50
50
  /// @throw Error if $name is already a defined constant.
51
51
  ///
52
+ /// @note When redefining a constant with the same value, no error will be
53
+ /// thrown. This is to deal with cases where the file defining the constant
54
+ /// is imported multiple times by sass.
55
+ ///
52
56
  /// @example scss
53
57
  /// @include const('HOURS_IN_DAY', 24);
54
58
  ///
@@ -61,12 +65,12 @@ $CONSTANTS: () !default;
61
65
  @include throw-error('const():: $name must be string. Was #{inspect($name)}.');
62
66
  }
63
67
 
64
- @else if to-upper-case($name) != $name or str-index($name, '-') {
68
+ @else if (unquote($name) != unquote(to-upper-case($name))) or str-index($name, '-') {
65
69
  @include throw-error('const():: Constant name #{inspect($name)} is not valid. Must be upper-case and without hyphens.');
66
70
  }
67
71
 
68
- @else if map-has-key($CONSTANTS, $name) {
69
- @include throw-error('Constant #{inspect($name)} already defined.');
72
+ @else if map-has-key($CONSTANTS, $name) and map-get($CONSANTS, $name) != $value {
73
+ @include throw-error('Constant #{inspect($name)} can not be redefined.');
70
74
  }
71
75
 
72
76
  $CONSTANTS: map-set($CONSTANTS, $name, $value) !global;
@@ -6,6 +6,7 @@
6
6
  //// @author [Yoannis Jamar](http://yoannis.me)
7
7
 
8
8
  @import "SassyLists";
9
+ @import "SassyCast";
9
10
  @import "aleksi/general/throw";
10
11
  @import "aleksi/maps/map-walk";
11
12
  @import "aleksi/lists/set-list-separator";
@@ -48,7 +49,8 @@
48
49
  }
49
50
 
50
51
  $w: throw-warning("Walking over a simple value #{inspect($list)} — resulting value will be returned inside a list.");
51
- @return call($func, $list, $args...);
52
+ // @return call($func, $list, $args...);
53
+ @return list-walk(to-list($list), $func, $args...);
52
54
  }
53
55
 
54
56
  // =list-walk( $list, $func[, $args... ])
@@ -0,0 +1,37 @@
1
+ // =============================================================================
2
+ // =ALEKSI - CHAR-AT
3
+ // =============================================================================
4
+ ////
5
+ //// @group aleksi-strings
6
+ //// @author [Hugo Giraudel](http://hugogiraudel.com)
7
+ //// @author [Yoannis Jamar](http://yoannis.me)
8
+ //// @link https://github.com/HugoGiraudel/SassyStrings/tree/master/stylesheets/public
9
+
10
+ // =char-at( $str, $index )
11
+ // -----------------------------------------------------------------------------
12
+ /// Returns the character at a given index inside a string.
13
+ ///
14
+ /// @param {string} $str - The string to search in
15
+ /// @param {number} $index - The index of the character to return
16
+ ///
17
+ /// @return {string} - The character at `$index` in `$str`
18
+ /// @throw - Error if `$index` is out smaller then 0 or greater then`$str`'s length
19
+ ///
20
+ /// @access public
21
+ /// @since 0.2.0
22
+
23
+ @function char-at($str, $index) {
24
+ @if type-of($str) != "string" {
25
+ @return throw-error('char-at():: $str must be a string, was #{inspect($str)}.');
26
+ }
27
+
28
+ @if type-of($index) != "number" {
29
+ @return throw-error('char-at():: $index must be a number, was #{inspect($index)}.');
30
+ }
31
+
32
+ @if $index < 1 or $index > str-length($str) {
33
+ @return throw-error('char-at():: $index #{inspect($index)} is out of bounds for \'#{$str}\'');
34
+ }
35
+
36
+ @return str-slice($str, $index, $index);
37
+ }
@@ -0,0 +1,58 @@
1
+ // =============================================================================
2
+ // =ALEKSI - STR-EXPLODE
3
+ // =============================================================================
4
+ ////
5
+ //// @group aleksi-strings
6
+ //// @author [Hugo Giraudel](http://hugogiraudel.com)
7
+ //// @author [Yoannis Jamar](http://yoannis.me)
8
+ //// @link https://github.com/HugoGiraudel/SassyStrings/tree/master/stylesheets/public
9
+
10
+ // =str-explode( $str[, $delimiter ])
11
+ // -----------------------------------------------------------------------------
12
+ /// Splits a given string into several parts using `$delimiter`.
13
+ ///
14
+ /// @param {string} $str - The string to split
15
+ /// @param {string} $delimiter [''] - The string to use to as a delimiter to split `$str`
16
+ ///
17
+ /// @return {list} - A list containing the separated parts of `$str`.
18
+ ///
19
+ /// @access public
20
+ /// @since 0.2.0
21
+
22
+ @function str-explode($str, $delimiter: '') {
23
+ @if type-of($str) != "string" {
24
+ @return throw-error('str-explode():: $str must be a string, was #{inspect($str)}.');
25
+ }
26
+
27
+ @if type-of($delimiter) != "string" {
28
+ @return throw-error('str-explode():: $delimiter must be a string, was #{inspect($delimiter)}.');
29
+ }
30
+
31
+ $result: ();
32
+ $length: str-length($str);
33
+
34
+ @if str-length($delimiter) == 0 {
35
+ @for $i from 1 through $length {
36
+ $result: append($result, str-slice($str, $i, $i));
37
+ }
38
+
39
+ @return $result;
40
+ }
41
+
42
+ $running: true;
43
+ $remaining: $str;
44
+
45
+ @while $running {
46
+ $index: str-index($remaining, $delimiter);
47
+
48
+ @if $index {
49
+ $slice: str-slice($remaining, 1, $index - 1);
50
+ $result: append($result, $slice);
51
+ $remaining: str-slice($remaining, $index + str-length($delimiter));
52
+ } @else {
53
+ $running: false;
54
+ }
55
+ }
56
+
57
+ @return append($result, $remaining);
58
+ }
@@ -0,0 +1,37 @@
1
+ // =============================================================================
2
+ // =ALEKSI - STR-REMOVE
3
+ // =============================================================================
4
+ ////
5
+ //// @group aleksi-strings
6
+ //// @author [Hugo Giraudel](http://hugogiraudel.com)
7
+ //// @author [Yoannis Jamar](http://yoannis.me)
8
+ //// @link https://github.com/HugoGiraudel/SassyStrings/tree/master/stylesheets/public
9
+
10
+ @import "aleksi/strings/str-replace";
11
+
12
+ // =str-remove( $str, $search )
13
+ // -----------------------------------------------------------------------------
14
+ /// Removes all occurences of a substring inside a given string.
15
+ /// Delegates to `str-replace`
16
+ ///
17
+ /// @param {string} $str - The string to search in
18
+ /// @param {string} $search - The substring to search for
19
+ ///
20
+ /// @see {function} str-replace
21
+ ///
22
+ /// @return {string} - `$str` without any occurence of `$search`
23
+ ///
24
+ /// @access public
25
+ /// @since 0.2.0
26
+
27
+ @function str-remove($str, $search) {
28
+ @if type-of($str) != "string" {
29
+ @return throw-error('str-remove():: $str must be a string, was #{inspect($str)}.');
30
+ }
31
+
32
+ @if type-of($search) != "string" {
33
+ @return throw-error('str-remove():: $search must be a string, was #{inspect($search)}.');
34
+ }
35
+
36
+ @return str-replace($str, $search, '');
37
+ }
@@ -0,0 +1,43 @@
1
+ // =============================================================================
2
+ // =ALEKSI - STR-REPLACE
3
+ // =============================================================================
4
+ ////
5
+ //// @group aleksi-strings
6
+ //// @author [Hugo Giraudel](http://hugogiraudel.com)
7
+ //// @author [Yoannis Jamar](http://yoannis.me)
8
+ //// @link https://github.com/HugoGiraudel/SassyStrings/tree/master/stylesheets/public
9
+
10
+ // =str-replace( $str, $search, $replace )
11
+ // -----------------------------------------------------------------------------
12
+ /// Replaces all occurences of a substring inside a given string.
13
+ ///
14
+ /// @param {string} $str - The string to search in
15
+ /// @param {string} $search - The substring to search for
16
+ /// @param {string} $replace - The substring to replace `$search` with
17
+ ///
18
+ /// @return {string} - `$str` with `$search` replaced by `$replace`
19
+ ///
20
+ /// @access public
21
+ /// @since 0.2.0
22
+
23
+ @function str-replace($str, $search, $replace: '') {
24
+ @if type-of($str) != "string" {
25
+ @return throw-error('str-replace():: $str must be a string, was #{inspect($str)}.');
26
+ }
27
+
28
+ @if type-of($search) != "string" {
29
+ @return throw-error('str-replace():: $search must be a string, was #{inspect($search)}.');
30
+ }
31
+
32
+ @if type-of($replace) != "string" {
33
+ @return throw-error('str-replace():: $replace must be a string, was #{inspect($replace)}.');
34
+ }
35
+
36
+ $index: str-index($str, $search);
37
+
38
+ @if $index {
39
+ @return str-slice($str, 1, $index - 1) + $replace + str-replace(str-slice($str, $index + str-length($search)), $search, $replace);
40
+ }
41
+
42
+ @return $str;
43
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass-aleksi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoannis Jamar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-25 00:00:00.000000000 Z
11
+ date: 2015-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sass
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.5'
69
- - !ruby/object:Gem::Dependency
70
- name: SassyStrings
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.1'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.1'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: SassyLists
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +112,7 @@ files:
126
112
  - stylesheets/aleksi/_maps.scss
127
113
  - stylesheets/aleksi/_math.scss
128
114
  - stylesheets/aleksi/_sides.scss
115
+ - stylesheets/aleksi/_strings.scss
129
116
  - stylesheets/aleksi/config/_constants.scss
130
117
  - stylesheets/aleksi/general/_apply.scss
131
118
  - stylesheets/aleksi/general/_css-rule.scss
@@ -171,6 +158,10 @@ files:
171
158
  - stylesheets/aleksi/sides/_sides-shorthand.scss
172
159
  - stylesheets/aleksi/sides/_to-sides-list.scss
173
160
  - stylesheets/aleksi/sides/_to-sides-map.scss
161
+ - stylesheets/aleksi/strings/_char-at.scss
162
+ - stylesheets/aleksi/strings/_str-explode.scss
163
+ - stylesheets/aleksi/strings/_str-remove.scss
164
+ - stylesheets/aleksi/strings/_str-replace.scss
174
165
  homepage: https://github.com/yoannisj/sass-aleksi
175
166
  licenses:
176
167
  - MIT