SassyMatrix 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +16 -16
  3. data/README.md +61 -61
  4. data/lib/SassyMatrix.rb +14 -14
  5. data/stylesheets/functions/checkers/_is-diagonal.scss +22 -22
  6. data/stylesheets/functions/checkers/_is-lower-triangular.scss +12 -12
  7. data/stylesheets/functions/checkers/_is-numeric.scss +18 -18
  8. data/stylesheets/functions/checkers/_is-square.scss +11 -11
  9. data/stylesheets/functions/checkers/_is-symmetric.scss +14 -14
  10. data/stylesheets/functions/checkers/_is-upper-triangular.scss +12 -12
  11. data/stylesheets/functions/getters/_get-column.scss +29 -29
  12. data/stylesheets/functions/getters/_get-entry.scss +20 -20
  13. data/stylesheets/functions/getters/_get-row.scss +21 -21
  14. data/stylesheets/functions/helpers/_is-triangular.scss +30 -30
  15. data/stylesheets/functions/helpers/_valid-coords.scss +37 -37
  16. data/stylesheets/functions/init/_matrix.scss +23 -23
  17. data/stylesheets/functions/init/_unit-matrix.scss +25 -25
  18. data/stylesheets/functions/misc/_add-matrices.scss +33 -33
  19. data/stylesheets/functions/misc/_columns.scss +9 -9
  20. data/stylesheets/functions/misc/_display.scss +42 -42
  21. data/stylesheets/functions/misc/_rows.scss +8 -8
  22. data/stylesheets/functions/misc/_transpose.scss +22 -22
  23. data/stylesheets/functions/setters/_add-column.scss +34 -34
  24. data/stylesheets/functions/setters/_add-row.scss +32 -32
  25. data/stylesheets/functions/setters/_set-column.scss +42 -42
  26. data/stylesheets/functions/setters/_set-entry.scss +19 -19
  27. data/stylesheets/functions/setters/_set-row.scss +36 -36
  28. data/stylesheets/functions/swap/_swap-columns.scss +32 -32
  29. data/stylesheets/functions/swap/_swap-entries.scss +20 -20
  30. data/stylesheets/functions/swap/_swap-rows.scss +24 -24
  31. data/stylesheets/matrix.scss +102 -102
  32. metadata +7 -9
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a9085263b129702c110334c0803c6d3ca266d50e
4
+ data.tar.gz: 3793b8b220cc1c663e1bedf0b63b150a7f0cce67
5
+ SHA512:
6
+ metadata.gz: 773877dcb709ef386a570f7f322898ef6acc4b0ae2176511877a76d975b5fe12cdba283106034e55fc3f09a5b9ec9775cd130e510e33de3062cb93065c313e45
7
+ data.tar.gz: c0f3f413a2284ac330fdc93fe61bfa17c99a36729968a043df644933224155dea70e9e20180eb1a7b18005c4a251fec9c1361b143f100709821ac4ffcc848052
@@ -1,16 +1,16 @@
1
- # Changelog
2
-
3
- * `1.0.11`: fixing an issue with scientific number parsing
4
- * `1.0.10`: improving number and string helpers
5
- * `1.0.9`: fixing a bug in `_find-exponent`
6
- * `1.0.8`: fixing a major issue in Ruby Gem
7
- * `1.0.7`: minor fixes and stable Ruby Gem
8
- * `1.0.6`: released a Ruby Gem
9
- * `1.0.5`: improved the encoding mixin
10
- * `1.0.4`: fixed an error in map parsing
11
- * `1.0.3`: slightly edited the mixin to dump JSON to CSS
12
- * `1.0.2`: fixed an issue with string parsing
13
- * `1.0.1`: fixed an issue with alpha color parsing
14
- * `1.0.0`: Stable API. `json-encode` and `json-decode`
15
- * `0.0.2`: added `json-decode` and test
16
- * `0.0.1`: initial commit
1
+ # Changelog
2
+
3
+ * `1.0.11`: fixing an issue with scientific number parsing
4
+ * `1.0.10`: improving number and string helpers
5
+ * `1.0.9`: fixing a bug in `_find-exponent`
6
+ * `1.0.8`: fixing a major issue in Ruby Gem
7
+ * `1.0.7`: minor fixes and stable Ruby Gem
8
+ * `1.0.6`: released a Ruby Gem
9
+ * `1.0.5`: improved the encoding mixin
10
+ * `1.0.4`: fixed an error in map parsing
11
+ * `1.0.3`: slightly edited the mixin to dump JSON to CSS
12
+ * `1.0.2`: fixed an issue with string parsing
13
+ * `1.0.1`: fixed an issue with alpha color parsing
14
+ * `1.0.0`: Stable API. `json-encode` and `json-decode`
15
+ * `0.0.2`: added `json-decode` and test
16
+ * `0.0.1`: initial commit
data/README.md CHANGED
@@ -1,61 +1,61 @@
1
- # SassyMatrix [![Build Status](https://travis-ci.org/HugoGiraudel/SassyMatrix.png)](https://travis-ci.org/HugoGiraudel/SassyMatrix)
2
-
3
- All you ever wanted to deal with matrices in Sass.
4
-
5
- ## What's in there?
6
-
7
- ### Instanciating matrix
8
- * `matrix($x, $y: $x)`: create a matrix of `$x` rows by `$y` columns filled with 0s
9
- * `unit-matrix($x, $y)`: create a matrix of `$x` rows by `$y` columns filled with 0s except the diagonal which is filled with 1s
10
-
11
- ### Writing in matrix
12
- * `set-entry($matrix, $coords, $value)`: set `$value` at `$matrix[$coords[1], $coords[2]]`
13
- * `set-column($matrix, $index, $column: ())`: set `$column` at `$index` in `$matrix`
14
- * `set-row($matrix, $index, $row: ())`: set `$row` at `$index` in `$matrix`
15
- * `add-column($matrix, $column: (), $index: null)`: add `$column` at `$index` in `$matrix`
16
- * `add-row($matrix, $row: (), $index: null)`: add `$row` at `$index` in `$matrix`
17
-
18
- ### Reading matrix
19
- * `get-entry($matrix, $coords)`: get entry at `$matrix[$coords[1], $coords[2]]`
20
- * `get-column($matrix, $index)`: get column at `$index` from `$matrix`
21
- * `get-row($matrix, $index)`: get row at `$index` from `$matrix`
22
-
23
- ### Displaying matrix
24
- * `display($matrix)`: display matrix
25
-
26
- ### Altering matrix
27
- * `swap-entries($matrix, $e1, $e2)`: swaps values `$e1` and `$e2` from `$matrix`
28
- * `swap-rows($matrix, $r1, $r2)`: swaps rows `$r1` and `$r2` from `$matrix`
29
- * `swap-columns($matrix, $c1, $c2)`: swaps columns `$c1` and `$c2` from `$matrix`
30
- * `transpose($matrix)`: rotates `$matrix` around its diagonal
31
- * `add-matrices($matrix1, $matrix2)`: add `$matrix1` and `$matrix2`
32
-
33
- ### Checking for matrix properties
34
- * `columns($matrix)`: return number of columns in `$matrix`
35
- * `rows($matrix)`: return number of rows in `$matrix`
36
- * `is-numeric($matrix)`: check whether `$matrix` has only numeric values
37
- * `is-square($matrix)`: check whether `$matrix` has as many rows as columns
38
- * `is-diagonal($matrix)`: check whether all values from the main diagonal of `$matrix` are set while all other values are equal to 0
39
- * `is-lower-triangular($matrix, $flag: null)`: check whether all value below `$matrix` diagonal are equal to 0
40
- * `is-upper-triangular($matrix, $flag: null)`: check whether all value above `$matrix` diagonal are equal to 0
41
-
42
- ## Requirements
43
-
44
- All you need is a clean version of Sass 3.3. Otherwise it's just pure Sass madness.
45
-
46
- ## Development
47
-
48
- ### You need
49
-
50
- * [NodeJS](http://nodejs.org)
51
- * [Ruby](https://www.ruby-lang.org/)
52
- * Sass 3.3 via `gem instal sass --pre`
53
- * `grunt-cli` via `npm install -g grunt-cli`
54
-
55
- ### How to
56
-
57
- 1. Fork this repository
58
- 2. Run `npm install`
59
- 3. `grunt dev`
60
- 4. Make your changes + write tests
61
- 5. Commit + Pull request
1
+ # SassyMatrix [![Build Status](https://travis-ci.org/HugoGiraudel/SassyMatrix.png)](https://travis-ci.org/HugoGiraudel/SassyMatrix)
2
+
3
+ All you ever wanted to deal with matrices in Sass.
4
+
5
+ ## What's in there?
6
+
7
+ ### Instanciating matrix
8
+ * `matrix($x, $y: $x)`: create a matrix of `$x` rows by `$y` columns filled with 0s
9
+ * `unit-matrix($x, $y)`: create a matrix of `$x` rows by `$y` columns filled with 0s except the diagonal which is filled with 1s
10
+
11
+ ### Writing in matrix
12
+ * `set-entry($matrix, $coords, $value)`: set `$value` at `$matrix[$coords[1], $coords[2]]`
13
+ * `set-column($matrix, $index, $column: ())`: set `$column` at `$index` in `$matrix`
14
+ * `set-row($matrix, $index, $row: ())`: set `$row` at `$index` in `$matrix`
15
+ * `add-column($matrix, $column: (), $index: null)`: add `$column` at `$index` in `$matrix`
16
+ * `add-row($matrix, $row: (), $index: null)`: add `$row` at `$index` in `$matrix`
17
+
18
+ ### Reading matrix
19
+ * `get-entry($matrix, $coords)`: get entry at `$matrix[$coords[1], $coords[2]]`
20
+ * `get-column($matrix, $index)`: get column at `$index` from `$matrix`
21
+ * `get-row($matrix, $index)`: get row at `$index` from `$matrix`
22
+
23
+ ### Displaying matrix
24
+ * `display($matrix)`: display matrix
25
+
26
+ ### Altering matrix
27
+ * `swap-entries($matrix, $e1, $e2)`: swaps values `$e1` and `$e2` from `$matrix`
28
+ * `swap-rows($matrix, $r1, $r2)`: swaps rows `$r1` and `$r2` from `$matrix`
29
+ * `swap-columns($matrix, $c1, $c2)`: swaps columns `$c1` and `$c2` from `$matrix`
30
+ * `transpose($matrix)`: rotates `$matrix` around its diagonal
31
+ * `add-matrices($matrix1, $matrix2)`: add `$matrix1` and `$matrix2`
32
+
33
+ ### Checking for matrix properties
34
+ * `columns($matrix)`: return number of columns in `$matrix`
35
+ * `rows($matrix)`: return number of rows in `$matrix`
36
+ * `is-numeric($matrix)`: check whether `$matrix` has only numeric values
37
+ * `is-square($matrix)`: check whether `$matrix` has as many rows as columns
38
+ * `is-diagonal($matrix)`: check whether all values from the main diagonal of `$matrix` are set while all other values are equal to 0
39
+ * `is-lower-triangular($matrix, $flag: null)`: check whether all value below `$matrix` diagonal are equal to 0
40
+ * `is-upper-triangular($matrix, $flag: null)`: check whether all value above `$matrix` diagonal are equal to 0
41
+
42
+ ## Requirements
43
+
44
+ All you need is a clean version of Sass 3.3. Otherwise it's just pure Sass madness.
45
+
46
+ ## Development
47
+
48
+ ### You need
49
+
50
+ * [NodeJS](http://nodejs.org)
51
+ * [Ruby](https://www.ruby-lang.org/)
52
+ * Sass 3.3 via `gem instal sass --pre`
53
+ * `grunt-cli` via `npm install -g grunt-cli`
54
+
55
+ ### How to
56
+
57
+ 1. Fork this repository
58
+ 2. Run `npm install`
59
+ 3. `grunt dev`
60
+ 4. Make your changes + write tests
61
+ 5. Commit + Pull request
@@ -1,14 +1,14 @@
1
- require 'compass'
2
- extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
3
- Compass::Frameworks.register('SassyJSON', :path => extension_path)
4
-
5
- # Version is a number. If a version contains alphas, it will be created as a prerelease version
6
- # Date is in the form of YYYY-MM-DD
7
- module SassyMatrix
8
- VERSION = "1.0.0"
9
- DATE = "2014-01-23"
10
- end
11
-
12
- module Sass::Script::Functions
13
-
14
- end
1
+ require 'compass'
2
+ extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
3
+ Compass::Frameworks.register('SassyMatrix', :path => extension_path)
4
+
5
+ # Version is a number. If a version contains alphas, it will be created as a prerelease version
6
+ # Date is in the form of YYYY-MM-DD
7
+ module SassyMatrix
8
+ VERSION = "1.0.1"
9
+ DATE = "2014-03-21"
10
+ end
11
+
12
+ module Sass::Script::Functions
13
+
14
+ end
@@ -1,22 +1,22 @@
1
- // Checks whether all entries from the main diagonal of `$matrix`
2
- // are set while all other entries are equal to the 0
3
- // --------------------------------------------------------------------------------
4
- // @require `get-entry`
5
- // @require `columns`
6
- // @require `rows`
7
- // --------------------------------------------------------------------------------
8
- // @param $matrix: matrix
9
- // --------------------------------------------------------------------------------
10
- // @return boolean
11
-
12
- @function is-diagonal($matrix) {
13
- @for $i from 1 through rows($matrix) {
14
- @for $j from 1 through columns($matrix) {
15
- $entry: get-entry($matrix, ($i $j));
16
- @if ($i != $j and $entry != 0) or ($i == $j and $entry == 0) {
17
- @return false;
18
- }
19
- }
20
- }
21
- @return true;
22
- }
1
+ // Checks whether all entries from the main diagonal of `$matrix`
2
+ // are set while all other entries are equal to the 0
3
+ // --------------------------------------------------------------------------------
4
+ // @require `get-entry`
5
+ // @require `columns`
6
+ // @require `rows`
7
+ // --------------------------------------------------------------------------------
8
+ // @param $matrix: matrix
9
+ // --------------------------------------------------------------------------------
10
+ // @return boolean
11
+
12
+ @function is-diagonal($matrix) {
13
+ @for $i from 1 through rows($matrix) {
14
+ @for $j from 1 through columns($matrix) {
15
+ $entry: get-entry($matrix, ($i $j));
16
+ @if ($i != $j and $entry != 0) or ($i == $j and $entry == 0) {
17
+ @return false;
18
+ }
19
+ }
20
+ }
21
+ @return true;
22
+ }
@@ -1,12 +1,12 @@
1
- // Checks whether `$matrix` is lower triangular with `$flag` option
2
- // --------------------------------------------------------------------------------
3
- // @require `_is-triangular`
4
- // --------------------------------------------------------------------------------
5
- // @param $matrix: matrix
6
- // @param $flag: advanced option (null | strict | unit | atom)
7
- // --------------------------------------------------------------------------------
8
- // @return boolean
9
-
10
- @function is-lower-triangular($matrix, $flag: null) {
11
- @return _is-triangular($matrix, bottom, $flag);
12
- }
1
+ // Checks whether `$matrix` is lower triangular with `$flag` option
2
+ // --------------------------------------------------------------------------------
3
+ // @require `_is-triangular`
4
+ // --------------------------------------------------------------------------------
5
+ // @param $matrix: matrix
6
+ // @param $flag: advanced option (null | strict | unit | atom)
7
+ // --------------------------------------------------------------------------------
8
+ // @return boolean
9
+
10
+ @function is-lower-triangular($matrix, $flag: null) {
11
+ @return _is-triangular($matrix, bottom, $flag);
12
+ }
@@ -1,18 +1,18 @@
1
- // Checks whether all entries from `$matrix` are numeric
2
- // --------------------------------------------------------------------------------
3
- // @require `rows`
4
- // @require `columns`
5
- // @require `get-entry`
6
- // --------------------------------------------------------------------------------
7
- // @return boolean
8
-
9
- @function is-numeric($matrix) {
10
- @for $i from 1 through rows($matrix) {
11
- @for $j from 1 through columns($matrix) {
12
- @if type-of(get-entry($matrix, ($i $j))) != number {
13
- @return false;
14
- }
15
- }
16
- }
17
- @return true;
18
- }
1
+ // Checks whether all entries from `$matrix` are numeric
2
+ // --------------------------------------------------------------------------------
3
+ // @require `rows`
4
+ // @require `columns`
5
+ // @require `get-entry`
6
+ // --------------------------------------------------------------------------------
7
+ // @return boolean
8
+
9
+ @function is-numeric($matrix) {
10
+ @for $i from 1 through rows($matrix) {
11
+ @for $j from 1 through columns($matrix) {
12
+ @if type-of(get-entry($matrix, ($i $j))) != number {
13
+ @return false;
14
+ }
15
+ }
16
+ }
17
+ @return true;
18
+ }
@@ -1,12 +1,12 @@
1
- // Returns whether `$matrix` has as many rows as columns
2
- // --------------------------------------------------------------------------------
3
- // @require `columns`
4
- // @require `rows`
5
- // --------------------------------------------------------------------------------
6
- // @param $matrix: matrix
7
- // --------------------------------------------------------------------------------
8
- // @return boolean
9
-
10
- @function is-square($matrix) {
11
- @return columns($matrix) == rows($matrix);
1
+ // Returns whether `$matrix` has as many rows as columns
2
+ // --------------------------------------------------------------------------------
3
+ // @require `columns`
4
+ // @require `rows`
5
+ // --------------------------------------------------------------------------------
6
+ // @param $matrix: matrix
7
+ // --------------------------------------------------------------------------------
8
+ // @return boolean
9
+
10
+ @function is-square($matrix) {
11
+ @return columns($matrix) == rows($matrix);
12
12
  }
@@ -1,15 +1,15 @@
1
- // Checks whether a matrix is symetric
2
- // --------------------------------------------------------------------------------
3
- // @require `transpose`
4
- // @require `is-square`
5
- // --------------------------------------------------------------------------------
6
- // @param $matrix: matrix
7
- // --------------------------------------------------------------------------------
8
- // @return boolean
9
-
10
- @function is-symmetric($matrix) {
11
- @if not is-square($matrix) {
12
- @return false;
13
- }
14
- @return $matrix == transpose($matrix);
1
+ // Checks whether a matrix is symetric
2
+ // --------------------------------------------------------------------------------
3
+ // @require `transpose`
4
+ // @require `is-square`
5
+ // --------------------------------------------------------------------------------
6
+ // @param $matrix: matrix
7
+ // --------------------------------------------------------------------------------
8
+ // @return boolean
9
+
10
+ @function is-symmetric($matrix) {
11
+ @if not is-square($matrix) {
12
+ @return false;
13
+ }
14
+ @return $matrix == transpose($matrix);
15
15
  }
@@ -1,12 +1,12 @@
1
- // Checks whether `$matrix` is upper triangular with `$flag` option
2
- // --------------------------------------------------------------------------------
3
- // @require `_is-triangular`
4
- // --------------------------------------------------------------------------------
5
- // @param $matrix: matrix
6
- // @param $flag: advanced option (null | strict | unit | atom)
7
- // --------------------------------------------------------------------------------
8
- // @return boolean
9
-
10
- @function is-upper-triangular($matrix, $flag: null) {
11
- @return _is-triangular($matrix, top, $flag);
12
- }
1
+ // Checks whether `$matrix` is upper triangular with `$flag` option
2
+ // --------------------------------------------------------------------------------
3
+ // @require `_is-triangular`
4
+ // --------------------------------------------------------------------------------
5
+ // @param $matrix: matrix
6
+ // @param $flag: advanced option (null | strict | unit | atom)
7
+ // --------------------------------------------------------------------------------
8
+ // @return boolean
9
+
10
+ @function is-upper-triangular($matrix, $flag: null) {
11
+ @return _is-triangular($matrix, top, $flag);
12
+ }
@@ -1,29 +1,29 @@
1
- // Return column at `$index` from `$matrix`
2
- // --------------------------------------------------------------------------------
3
- // @require `get-entry`
4
- // @require `rows`
5
- // @require `columns`
6
- // --------------------------------------------------------------------------------
7
- // @param $matrix: matrix
8
- // @param $index: index
9
- // --------------------------------------------------------------------------------
10
- // @return list
11
-
12
- @function get-column($matrix, $index) {
13
- @if type-of($index) != number {
14
- @warn "Invalid column index.";
15
- @return false;
16
- }
17
-
18
- @if abs($index) > columns($matrix) {
19
- @warn "Out of bound column index.";
20
- @return false;
21
- }
22
-
23
- $column: ();
24
- @for $i from 1 through rows($matrix) {
25
- $column: append($column, get-entry($matrix, ($i $index)))
26
- }
27
-
28
- @return $column;
29
- }
1
+ // Return column at `$index` from `$matrix`
2
+ // --------------------------------------------------------------------------------
3
+ // @require `get-entry`
4
+ // @require `rows`
5
+ // @require `columns`
6
+ // --------------------------------------------------------------------------------
7
+ // @param $matrix: matrix
8
+ // @param $index: index
9
+ // --------------------------------------------------------------------------------
10
+ // @return list
11
+
12
+ @function get-column($matrix, $index) {
13
+ @if type-of($index) != number {
14
+ @warn "Invalid column index.";
15
+ @return false;
16
+ }
17
+
18
+ @if abs($index) > columns($matrix) {
19
+ @warn "Out of bound column index.";
20
+ @return false;
21
+ }
22
+
23
+ $column: ();
24
+ @for $i from 1 through rows($matrix) {
25
+ $column: append($column, get-entry($matrix, ($i $index)))
26
+ }
27
+
28
+ @return $column;
29
+ }
@@ -1,20 +1,20 @@
1
- // Returns entry at `$matrix[$coords[1], $coords[2]]`
2
- // --------------------------------------------------------------------------------
3
- // @require `_valid-coords`
4
- // --------------------------------------------------------------------------------
5
- // @param $matrix: matrix
6
- // @param $coords: (x y) coordinates
7
- // --------------------------------------------------------------------------------
8
- // @return literal
9
-
10
- @function get-entry($matrix, $coords) {
11
- @if length($coords) == 1 {
12
- $coords: ($coords $coords);
13
- }
14
-
15
- @if _valid-coords($coords, $matrix) {
16
- @return nth(nth($matrix, nth($coords, 1)), nth($coords, 2));
17
- }
18
-
19
- @return false;
20
- }
1
+ // Returns entry at `$matrix[$coords[1], $coords[2]]`
2
+ // --------------------------------------------------------------------------------
3
+ // @require `_valid-coords`
4
+ // --------------------------------------------------------------------------------
5
+ // @param $matrix: matrix
6
+ // @param $coords: (x y) coordinates
7
+ // --------------------------------------------------------------------------------
8
+ // @return literal
9
+
10
+ @function get-entry($matrix, $coords) {
11
+ @if length($coords) == 1 {
12
+ $coords: ($coords $coords);
13
+ }
14
+
15
+ @if _valid-coords($coords, $matrix) {
16
+ @return nth(nth($matrix, nth($coords, 1)), nth($coords, 2));
17
+ }
18
+
19
+ @return false;
20
+ }