gridl

<p> <img alt="" src="https://img.shields.io/npm/v/gridl"> <img alt="" src="https://img.shields.io/npm/l/gridl"> <img alt="" src="https://raw.githubusercontent.com/klattiation/gridl/master/docs/badge-coverage.svg"> </p>

Usage no npm install needed!

<script type="module">
  import gridl from 'https://cdn.skypack.dev/gridl';
</script>

README

gridl

A functional toolbox for grid-based data.

Documentation

Installation

Using npm

npm install gridl

Using yarn

yarn add gridl

ES6 modules

import {createGrid} from "gridl/core";

Nodejs

const {createGrid} = require("gridl/_umd");

Usage

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"],
//     ],
// }

Selectors

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];

Transformers

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],
//     ],
// }

Walkers

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}

Issues

Report issues, bugs and feature request on the github issues page.


License

MIT © Sascha Klatt