A functional toolbox for grid-based data.
Using npm
npm install gridl
Using yarn
yarn add gridl
ES6 modules
import { createGrid } from "gridl/core";
Nodejs
const { createGrid } = require("gridl/_umd");
See the website for detailed information and getting started guides.
import { createGrid } from "gridl/core";
const grid = createGrid({
columnCount: 4,
rowCount: 3,
createCell: (pos, idx) => (pos.y < 2 ? idx : "x"),
});
// creates the following data object
// => {
// x: 0,
// y: 0,
// cellCount: 12,
// columnCount: 4,
// rowCount: 3,
// array2D: [
// [ 0, 1, 2, 3],
// [ 4, 5, 6, 7],
// ["x", "x", "x", "x"],
// ],
// }
Easily select cells, columns, rows, sub grids or neighbouring cells with selector functions. Read more about selectors in the getting started section or have a look at the API docs.
import { createGridFromArray2D, selectCell } from "gridl/core";
const grid = createGridFromArray2D([
[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11],
]);
// get the cell value at position = {x: 1, y: 2}
selectCell({ grid, x: 2, y: 1 }); // => 6
// get the column at x = 2
selectColumn({ grid, x: 2 }); // => [2, 6, 10]
// get the row at y = 1
selectRow({ grid, y: 1 }); // => [4, 5, 6, 7];
Perform all kinds of data transformations on your grid, such as add, remove, rotate, swap, mirror and more. Read more about transformers in the getting started section or have a look at the API docs.
import { createGridFromArray2D } from "gridl/core";
import { addRowTop } from "gridl/transformers";
const grid = createGridFromArray2D([
[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11],
]);
const newGrid = addRowTop(["x", "x", "x", "x"])(grid);
// resulting grid:
// {
// x: 0,
// y: 0,
// cellCount: 12,
// columnCount: 4,
// rowCount: 4,
// array2D: [
// ["x", "x", "x", "x"],
// [ 0, 1, 2, 3],
// [ 4, 5, 6, 7],
// [ 8, 9, 10, 11],
// ],
// }
Traverse over your grid in variety of ways. Choose from a predefined set of iterators or just come up with your own one. Read more about walkers in the getting started section or have a look at the API docs.
import { createWalker } from "gridl/core";
const grid = createGridFromArray2D([
[1, 1, 1],
[1, 1, 1],
]);
const walker = createWalker(grid);
walker.next(); // => {value: {index: 0, position: {x: 0, y: 0}}, done: false}
walker.next(); // => {value: {index: 1, position: {x: 1, y: 0}}, done: false}
walker.next(); // => {value: {index: 2, position: {x: 2, y: 0}}, done: false}
walker.next(); // => {value: {index: 3, position: {x: 0, y: 1}}, done: false}
walker.next(); // => {value: {index: 4, position: {x: 1, y: 1}}, done: false}
walker.next(); // => {value: {index: 5, position: {x: 2, y: 1}}, done: false}
walker.next(); // => {value: undefined, done: true}
Report issues, bugs and feature request on the github issues page.
MIT © Sascha Klatt