SassyLists 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # Changelog
2
2
 
3
+ * `0.4.7`: dramatically improving `sort()` performances and removing all its dependencies
3
4
  * `0.4.6`: fixing an issue when passing an empty list to `chunk()` and improved code quality
4
5
  * `0.4.5`: making `sort()` able to return in descending order
5
6
  * `0.4.4`: fixing a typo in `purge()`
data/lib/SassyLists.rb CHANGED
@@ -5,8 +5,8 @@ Compass::Frameworks.register('SassyLists', :path => extension_path)
5
5
  # Version is a number. If a version contains alphas, it will be created as a prerelease version
6
6
  # Date is in the form of YYYY-MM-DD
7
7
  module SassyLists
8
- VERSION = "0.4.6"
9
- DATE = "2013-12-07"
8
+ VERSION = "0.4.7"
9
+ DATE = "2013-12-30"
10
10
  end
11
11
 
12
12
  module Sass::Script::Functions
@@ -4,69 +4,55 @@
4
4
  // -------------------------------------------------------------------------------
5
5
  // @alias `order()`
6
6
  // -------------------------------------------------------------------------------
7
- // @dependence `last()`
8
- // @dependence `insert-nth()`
9
- // @dependence `reverse()`
10
- // -------------------------------------------------------------------------------
11
7
  // @example sort(5 12 4.7 6 69 6) => 4.7, 5, 6, 6, 12, 69
12
8
  // @example sort(5 12 4.7 "8" 6 14px 69 6) => 4.7, 5, 6, 6, 12, 69
13
9
  // -------------------------------------------------------------------------------
14
10
  // @param $list [List] : list
15
11
  // @param $ascending [Boolean] : ascending or descending
16
12
  // -------------------------------------------------------------------------------
17
- // @raise [Warning] if not unitless number found
13
+ // @raise [Warning] if not-number found
18
14
  // -------------------------------------------------------------------------------
19
15
  // @return [List]
20
16
 
21
- @function sort($list, $ascending: true) {
22
- $result: nth($list, 1);
17
+ @function sort($list) {
18
+ $less: ();
19
+ $equal: ();
20
+ $large: ();
21
+ $seed: ceil(length($list) / 2);
23
22
 
24
23
  @if length($list) > 1 {
24
+ $seed: nth($list, $seed);
25
25
 
26
- @for $i from 2 through length($list) {
27
- $item: nth($list, $i);
28
-
29
- @if type-of($item) == number {
30
-
31
- @if unitless($item) {
32
-
33
- @if $item > last($result) {
34
- $result: append($result, $item);
35
- }
36
-
37
- @else {
38
- $index: 0;
39
-
40
- @for $i from length($result) * -1 through -1 {
41
- $i: abs($i);
42
-
43
- @if $item <= nth($result, $i) {
44
- $index: $i;
45
- }
46
- }
47
-
48
- $result: insert-nth($result, $index, $item);
49
- }
26
+ @each $item in $list {
27
+ @if comparable($seed, $item) {
28
+ @if $item < $seed {
29
+ $less: append($less, $item);
30
+ }
50
31
 
32
+ @else if $item == $seed {
33
+ $equal: append($equal, $item);
51
34
  }
52
35
 
53
36
  @else {
54
- @warn "Not unitless number found. Omitted.";
37
+ $large: append($large, $item);
55
38
  }
56
-
57
- }
39
+ }
58
40
 
59
41
  @else {
60
42
  @warn "Not integer value found. Omitted.";
61
43
  }
62
44
  }
63
- }
64
45
 
65
- @if not $ascending and length($result) > 1 {
66
- $result: reverse($result);
46
+ $less: sort($less);
47
+ $large: sort($large);
48
+
49
+ $result: join($less, $equal);
50
+ $result: join($result, $large);
51
+
52
+ @return $result;
67
53
  }
68
54
 
69
- @return $result;
55
+ @return $list;
70
56
  }
71
57
 
72
58
  // Alias
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: SassyLists
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-07 00:00:00.000000000 Z
12
+ date: 2013-12-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sass