SassyMatrix 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +16 -16
- data/README.md +61 -61
- data/lib/SassyMatrix.rb +14 -14
- data/stylesheets/functions/checkers/_is-diagonal.scss +22 -22
- data/stylesheets/functions/checkers/_is-lower-triangular.scss +12 -12
- data/stylesheets/functions/checkers/_is-numeric.scss +18 -18
- data/stylesheets/functions/checkers/_is-square.scss +11 -11
- data/stylesheets/functions/checkers/_is-symmetric.scss +14 -14
- data/stylesheets/functions/checkers/_is-upper-triangular.scss +12 -12
- data/stylesheets/functions/getters/_get-column.scss +29 -29
- data/stylesheets/functions/getters/_get-entry.scss +20 -20
- data/stylesheets/functions/getters/_get-row.scss +21 -21
- data/stylesheets/functions/helpers/_is-triangular.scss +30 -30
- data/stylesheets/functions/helpers/_valid-coords.scss +37 -37
- data/stylesheets/functions/init/_matrix.scss +23 -23
- data/stylesheets/functions/init/_unit-matrix.scss +25 -25
- data/stylesheets/functions/misc/_add-matrices.scss +33 -33
- data/stylesheets/functions/misc/_columns.scss +9 -9
- data/stylesheets/functions/misc/_display.scss +42 -42
- data/stylesheets/functions/misc/_rows.scss +8 -8
- data/stylesheets/functions/misc/_transpose.scss +22 -22
- data/stylesheets/functions/setters/_add-column.scss +34 -34
- data/stylesheets/functions/setters/_add-row.scss +32 -32
- data/stylesheets/functions/setters/_set-column.scss +42 -42
- data/stylesheets/functions/setters/_set-entry.scss +19 -19
- data/stylesheets/functions/setters/_set-row.scss +36 -36
- data/stylesheets/functions/swap/_swap-columns.scss +32 -32
- data/stylesheets/functions/swap/_swap-entries.scss +20 -20
- data/stylesheets/functions/swap/_swap-rows.scss +24 -24
- data/stylesheets/matrix.scss +102 -102
- metadata +7 -9
checksums.yaml
ADDED
@@ -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
|
data/CHANGELOG.md
CHANGED
@@ -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
|
data/lib/SassyMatrix.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
require 'compass'
|
2
|
-
extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
3
|
-
Compass::Frameworks.register('
|
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.
|
9
|
-
DATE = "2014-
|
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
|
+
}
|