@mitchallen/grid-square

0.1.9 • Public • Published

@mitchallen/grid-square

2D square grid

Version Coverage Status Version


Installation

You must use npm 2.7.0 or higher because of the scoped package name.

$ npm init
$ npm install @mitchallen/grid-square --save

Usage

    "use strict";
    var gridFactory = require("@mitchallen/grid-square");
    
    var xSize = 5;
    var ySize = 10;
    var value = 100;
    var i = xSize - 1;
    var j = ySize - 1;
    
    var grid = gridFactory.create( { x: xSize, y: ySize } );
    
	if(!grid) {
    	console.error("couldn't create grid");
	}
    
    if(! grid.isCell( i, j ) ) {
    	console.error("parameters not within grid");
    }
    
    if(! grid.set( i, j, value )) {
    	console.error("couldn't set grid value");
    }
    
    let result = grid.get( i, j );
    
    if(! result) {
    	console.error("couldn't get grid value");
    } else {
    	console.log("grid value: ", result );
    }

Methods

create( spec )

Factory method that returns a square grid object.

It takes one spec parameter that must be an object with x and y values specifying the size of the grid.

The x and y values can not be less than one (1).

The method will set xSize and ySize to 0 if no parameters are set

You can call create multiple times to create multiple grids.

    var gridFactory = require("@mitchallen/grid-square");
    
    var grid1 = gridFactory.create( { x: 5, y: 10 } );
    var grid2 = gridFactory.create( { x: 7, y: 20 } );
    
  if(!grid1 || !grid2) ...

squareGrid.xSize

Returns the size of the x dimension.

  grid.xSize.should.eql(5);

squareGrid.ySize

Returns the size of the y dimension.

	grid.ySize.should.eql(10);

grid.isCell( x, y )

The x and y parameters should be zero-based coordinates ranging from zero (0) to axis size minus one.

The method is called internally by get.

    if(! grid.isCell( i, j ) ) {
    	console.error("parameters not within grid");
    }

grid.set( x, y, value )

The x and y values must be greater than zero. If the parameters fail validation then a value of false is returned. Otherwise true is returned.

The value parameter can be a number, a string or even an object.

    if(! grid.set( i, j, value )) {
    	console.error("couldn't set grid value");
    }

grid.get( x, y )

The x and y values are passed to the isCell method internally for validation. If the parameters fail validation then a null object is returned. Otherwise the value of the cell (grid location) is returned.

The returned value can be a number, a string or even an object.

    let result = grid.get( i, j );
    
    if(! result) {
    	console.error("couldn't get grid value");
    } else {
    	console.log("grid value: ", result );
    }

grid.fill(value)

Fills the grid with whatever is passed in as value. Value can be a number, a string or even an object. Any existing values in the grid will be replaced with the new fill value.

    let fillValue = "foo";
    
    var result = grid.fill(fillValue);

grid.cloneArray()

Returns a clone of the internal array. This is not a reference. So changes to the cloned array should not change the original.

	let tX = 0;
	let tY = 0;
	let gridValue = 100;
	let cloneValue = 500;
	
	// Set a value in the original grid
	grid.set(tX,tY,gridValue);

	// Clone the grid	
	let arr = grid.cloneArray();
	
	// Verify value exists in clone
	arr[tX][tY].should.eql(gridValue);
	
	// Change value in clone
	arr[tX][tY] = cloneValue;
	
	// Verify new value is set in clone
	arr[tX][tY].should.eql(cloneValue);
	
	// Ensure that value does not alter original grid
  grid.get(tX,tY).should.eql(gridValue);

grid.rows

Number of rows in the grid.

  var r = grid.rows;

grid.rowSize(rowIndex)

  var r = grid.rowSize(1);

Size of row.

grid.log()

Logs the size and contents of the internal array.

    grid.log();

Example output:

size: 4
[ [ 20, 10, 10, 10, 10 ],
  [ 10, 10, 10, 10, 10 ],
  [ 10, 10, 10, 10, 10 ],
  [ 10, 10, 10, 10, 30 ] ]

Browser Client Example

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Grid Square Example</title>
        <meta name="description" content="Grid Square Example">
        <script src="https://unpkg.com/@mitchallen/grid-square@0.1.9/dist/grid-square.min.js"></script>
        <script>
          var factory = window.MitchAllen.GridSquare;
          console.log(factory);
          var xSize = 5,
              ySize = 6;
          var gs = factory.create( { x: xSize, y: ySize } );
          gs.set( xSize-1, ySize-1, "alpha" );
          console.log(gs);
          gs.log(); 
        </script>
      </head>
      <body>
        <h1>Grid Square Example</h1>
        <p>See JavaScript developer console for output.</p>
      </body>
    </html>

Testing

To test, go to the root folder and type (sans $):

$ npm test

Repo(s)


Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.


Version History

Version 0.1.9

  • refactored
  • updated dependency

Version 0.1.8

  • updated dependency
  • updated .npmignore
  • updated client example

Version 0.1.7

  • fixed npm start command

Version 0.1.6

  • added test cases for 100% code coverage

Version 0.1.5

  • integrated travis-ci and codecov.io

Version 0.1.4

  • updated grid-core version

Version 0.1.3

  • updated grid-core version, examples and documentation

Version 0.1.2

  • resolving tag issue

Version 0.1.1

  • reset tag

Version 0.1.0

  • initial release

Readme

Keywords

none

Package Sidebar

Install

npm i @mitchallen/grid-square

Weekly Downloads

0

Version

0.1.9

License

MIT

Unpacked Size

18.3 kB

Total Files

6

Last publish

Collaborators

  • mitchallen