modular-scale 2.0.0.alpha4 → 2.0.0.alpha5

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: 04987e47c5704452df1374e46931ca1c58930915
4
- data.tar.gz: 35fdeb87e81ed54c5e5a479d5f91440e5c8aa639
3
+ metadata.gz: a41d2f097a0279165903f7426bd0892afdc08cd0
4
+ data.tar.gz: eb01990d61ee5012f089180b06bd0a7ee9e4a002
5
5
  SHA512:
6
- metadata.gz: 9eb5e247d681d58eae471c5ef8e7acafd6c6ff00f24eba7ea0e13e841f7a34eb0e1ec4fecc050b1cde87276d930af41d9c64046de1e519e47cdcbea631f92369
7
- data.tar.gz: 147c7dcb79a02546103c5411ccb60c9d6e6f1bad6d6ba19dfff51716fc2e634842cd94d082e41f735906dc0792f09bac490c8a97da4e5e901a6ca821d24d09fd
6
+ metadata.gz: 5eb6c45de955c5a6eca68e69d0da7fda2f6c1a7b0657a84e78a1c3ee188b8c2a32b82b1671850728d680e18975f66873497380f646af0b49ba50c859476d6903
7
+ data.tar.gz: 34d3e455fe63c42dc8d441ec158dbf086432ab1574ad4345bdf8d6126d8cf4532c2e4a1337715e9262c8d157797d8179c6dec17568b0e015e9c67f5db15dbf9b
data/lib/modular-scale.rb CHANGED
@@ -16,7 +16,7 @@ Compass::Frameworks.register('modular-scale', :path => extension_path)
16
16
  # a prerelease version
17
17
  # Date is in the form of YYYY-MM-DD
18
18
  module ModularScale
19
- VERSION = "2.0.0.alpha4"
19
+ VERSION = "2.0.0.alpha5"
20
20
  DATE = "2013-12-20"
21
21
  end
22
22
 
@@ -110,11 +110,12 @@ module Sass::Script::Functions
110
110
 
111
111
  if rvalue < 0
112
112
  r = r.keep_if { |a| a <= rbases[0] }
113
- r.reverse!
113
+ # Final value
114
+ r = r[rvalue - 1]
115
+ else
116
+ r = r[rvalue]
114
117
  end
115
118
 
116
- # Final value
117
- r = r[rvalue]
118
119
 
119
120
  Sass::Script::Number.new(r)
120
121
  end
@@ -0,0 +1,35 @@
1
+ @if ms-list(-3, 3, 10 16, $major-third) != (6.5536 8 8.192 10 10.24 12.5 12.8) {
2
+ @warn "function ms-list(): FAIL";
3
+ @debug "function ms-list(-3, 3, 10 16, $major-third)";
4
+ @debug "Result: (#{ms-list(-3, 3, 10 16, $major-third)})";
5
+ @debug "Intended: (6.5536 8 8.192 10 10.24 12.5 12.8)";
6
+ }@else {
7
+ @debug "function ms-list(): PASS";
8
+ }
9
+
10
+ @if "#{ms(2, 16, $minor-sixth)}" != "40.96" {
11
+ @warn "function ms(): FAIL";
12
+ @debug "function ms(2, 16, $minor-sixth)";
13
+ @debug "Result: #{ms(2, 16, $minor-sixth)}";
14
+ @debug "Intended: 40.96";
15
+ }@else {
16
+ @debug "function ms(): PASS";
17
+ }
18
+
19
+ @if ms(2, 14 18, $major-second) != 15.75 {
20
+ @warn "function ms() multi-base: FAIL";
21
+ @debug "function ms(2, 14 18, $major-second)";
22
+ @debug "Result: #{ms(2, 14 18, $major-second)}";
23
+ @debug "Intended: 15.75";
24
+ }@else {
25
+ @debug "function ms() multi-base: PASS";
26
+ }
27
+
28
+ @if ms(-4, 12, $major-tenth $octave) != 1.92 {
29
+ @warn "function ms() multi-ratio: FAIL";
30
+ @debug "function ms(-4, 12, $major-tenth $octave)";
31
+ @debug "Result: #{ms(-4, 12, $major-tenth $octave)}";
32
+ @debug "Intended: 1.92";
33
+ }@else {
34
+ @debug "function ms() multi-ratio: PASS";
35
+ }
Binary file
@@ -1,6 +1,7 @@
1
1
  // Outputs a list of values instead of a single value
2
2
  @function ms-list($Start: 0, $End: 0, $Bases: $ms-base, $Ratios: $ms-ratio) {
3
3
 
4
+ // Seed results
4
5
  $Positive-return: ();
5
6
  $Negitive-return: ();
6
7
  $Return: ();
@@ -37,17 +38,24 @@
37
38
 
38
39
  // Sort the generated lists
39
40
  $Negitive-return: ms-sort-list($Negitive-return);
41
+
42
+ // Reverse negitive list results.
43
+ $MS-new-return: ();
44
+ @each $i in $Negitive-return {
45
+ $MS-new-return: join($i, $MS-new-return);
46
+ }
47
+ $Negitive-return: $MS-new-return;
40
48
 
41
49
  // Trim list
42
50
  $Trim-list: ();
43
51
  @if $End < 0 {
44
- @for $i from abs($End) through abs($Start) {
45
- $Trim-list: join($Trim-list, nth($Negitive-return, $i));
52
+ @for $i from abs($End) through (abs($Start) + 2) {
53
+ $Trim-list: join(nth($Negitive-return, $i), $Trim-list);
46
54
  }
47
55
  }
48
56
  @else {
49
- @for $i from 1 through abs($Start) {
50
- $Trim-list: join($Trim-list, nth($Negitive-return, $i));
57
+ @for $i from 2 through (abs($Start) + 1) {
58
+ $Trim-list: join(nth($Negitive-return, $i), $Trim-list);
51
59
  }
52
60
  }
53
61
  $Negitive-return: $Trim-list;
@@ -28,17 +28,21 @@
28
28
  // Sort the generated lists
29
29
  $Return: ms-sort-list($Return);
30
30
 
31
+ // Reverse list if its negitive.
32
+ @if $Value < 0 {
33
+ $MS-new-return: ();
34
+ @each $i in $Return {
35
+ $MS-new-return: join($i, $MS-new-return);
36
+ }
37
+ $Return: $MS-new-return;
38
+ }
39
+
31
40
  // Normalize value for counting from 1
32
41
  // Because CSS counts things from 1
33
42
  // So Sass does as well
34
43
  // So I get to write fun stuff like this
35
- @if $Value >= 0 {
36
- $Value: $Value + 1;
37
- }
38
- @else {
39
- $Value: $Value - 1;
40
- }
41
-
44
+ $Value: abs($Value) + 1;
45
+
42
46
  // Find the correct value in the list
43
47
  $Return: nth($Return, $Value);
44
48
 
@@ -1,3 +1,17 @@
1
+ @function ms-reverse-list($list) {
2
+ @if length($list) > 1 {
3
+ @if nth($list, 1) > nth($list, length($list)) {
4
+ $MS-reversed-list: ();
5
+ @each $Value in $list {
6
+ $MS-reversed-list: join($Value, $MS-reversed-list);
7
+ }
8
+ @return $MS-reversed-list;
9
+ }
10
+ }
11
+ @return $list;
12
+ }
13
+
14
+
1
15
  @function ms-generate-list($Value: 0, $Bases: $ms-base, $Ratios: $ms-ratio) {
2
16
 
3
17
  // Create blank lists
@@ -14,12 +28,12 @@
14
28
  $Base-counter: 0;
15
29
 
16
30
  // Seed list with an initial value
17
- @if $Base == nth($Bases, 1) {
31
+ @if $Base == $Base {
18
32
  $MS-base-list: $Base;
19
33
  }
20
34
 
21
35
  // Find values on a positive scale
22
- @if $Value > 0 {
36
+ @if $Value >= 0 {
23
37
 
24
38
  // Find lower values on the scale
25
39
  $Base-counter: -1;
@@ -28,6 +42,9 @@
28
42
  $Base-counter: $Base-counter - 1;
29
43
  }
30
44
 
45
+ // Ensure the list is smallest to largest
46
+ $MS-base-list: ms-reverse-list($MS-base-list);
47
+
31
48
  // Find higher possible values on the scale
32
49
  $Base-counter: 1;
33
50
  @while ms-calc($Base-counter, $Base, $Ratio) <= ms-calc($Value, nth($Bases, 1), $Ratio) {
@@ -46,6 +63,9 @@
46
63
  $Base-counter: $Base-counter + 1;
47
64
  }
48
65
 
66
+ // Ensure the list is smallest to largest
67
+ $MS-base-list: ms-reverse-list($MS-base-list);
68
+
49
69
  // Find higher possible values on the scale
50
70
  $Base-counter: -1;
51
71
  @while ms-calc($Base-counter, $Base, $Ratio) >= ms-calc($Value, nth($Bases, 1), $Ratio) {
@@ -56,18 +76,23 @@
56
76
  }
57
77
  $Base-counter: $Base-counter - 1;
58
78
  }
59
- }
60
-
61
- // reverse list if its largest to smallest
62
- @if length($MS-base-list) > 1 {
63
- @if nth($MS-base-list, 1) > nth($MS-base-list, length($MS-base-list)) {
64
- $ms-reversed-list: ();
65
- @each $Value in $MS-base-list {
66
- $ms-reversed-list: join($Value, $ms-reversed-list);
79
+
80
+ // Trim outlier base.
81
+ @if length($Bases) > 1 {
82
+ @for $i from 2 through length($Bases) {
83
+ @if nth($MS-base-list, 1) > nth($Bases, 1) {
84
+ $MS-new-list: ();
85
+ @for $i from 2 through length($MS-base-list) {
86
+ $MS-new-list: join($MS-new-list, nth($MS-base-list, $i));
87
+ }
88
+ $MS-base-list: $MS-new-list;
89
+ }
67
90
  }
68
- $MS-base-list: $ms-reversed-list;
69
91
  }
70
92
  }
93
+
94
+ // reverse list if its largest to smallest
95
+ $MS-base-list: ms-reverse-list($MS-base-list);
71
96
 
72
97
  // Add new possibilities to the master list
73
98
  $MS-list: append($MS-list, $MS-base-list, comma);
@@ -28,7 +28,8 @@
28
28
  // If the number is 0 or negitive
29
29
  // divide instead of multiply.
30
30
  @else {
31
- @for $i from -1 to abs($Exponent) {
31
+ // Libsass doesn’t allow negitive values in loops
32
+ @for $i from (-1 + 1) to (abs($Exponent) + 1) {
32
33
  $Return: $Return / $Base;
33
34
  }
34
35
  }
@@ -41,7 +41,6 @@
41
41
  }
42
42
  }
43
43
 
44
-
45
44
  // Run through remainder values in the list
46
45
  @while $A-counter <= length($A) {
47
46
  $Current: nth($A, $A-counter);
@@ -62,6 +61,8 @@
62
61
  @return $Return;
63
62
  }
64
63
 
64
+
65
+
65
66
  // Pull it all together
66
67
  @function ms-sort-list($Lists) {
67
68
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modular-scale
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.alpha4
4
+ version: 2.0.0.alpha5
5
5
  platform: ruby
6
6
  authors:
7
7
  - First Last
@@ -33,6 +33,7 @@ extra_rdoc_files: []
33
33
  files:
34
34
  - license.md
35
35
  - lib/modular-scale.rb
36
+ - stylesheets/_modular-scale-tests.scss
36
37
  - stylesheets/_modular-scale.scss
37
38
  - stylesheets/modular-scale/_calc.scss
38
39
  - stylesheets/modular-scale/_function-list.scss