diff --git a/js/Grid.js b/js/Grid.js index 69bd1bc..65581ee 100644 --- a/js/Grid.js +++ b/js/Grid.js @@ -1,5 +1,6 @@ import CellSet; import * as Dom from UnitJS.Dom; +import {iter, square} from Grid.Util; var grid = { element: document.getElementById('grid'), @@ -8,14 +9,11 @@ var grid = { size: null }; -var iter = generate; // alias for more intuitive use (discarding the result) - return { cell: cell, clear: clear, init: init, get: get, - iter: iter, }; function init(size, eventHandlers) { @@ -37,26 +35,15 @@ function makeRow(config) { } function clear() { - grid.data = generate(function() {return; }); + grid.data = square(grid.size); grid.missing = CellSet.make( {type: 'rectangle', row: 0, column: 0, width: 8, height: 8} ); - iter(function(row, column) { + iter(grid.data, function(row, column) { cell(row, column).className = ''; }); } -function generate(f) { - var result = []; - for(var row = 0; row < grid.size; row++) { - result[row] = [];; - for(var column = 0; column < grid.size; column++) { - result[row].push(f(row, column)); - } - } - return result; -} - function get() { return grid; } diff --git a/js/Grid/IO.js b/js/Grid/IO.js index ac74835..9890087 100644 --- a/js/Grid/IO.js +++ b/js/Grid/IO.js @@ -2,6 +2,7 @@ import * as File from WTK.File; import * as Async from UnitJS.Async; import Grid; import Grid.Color; +import iter from Grid.Util; import Mode; return { @@ -31,7 +32,7 @@ function load() { function setGridData(data) { if(data != undefined) { - Grid.iter(function(row, column) { + iter(data, function(row, column) { if(data[row][column] != undefined) { Grid.Color.ize(row, column, data[row][column]); } diff --git a/js/Grid/Util.js b/js/Grid/Util.js new file mode 100644 index 0000000..f0f3cb1 --- /dev/null +++ b/js/Grid/Util.js @@ -0,0 +1,24 @@ +return { + generate: generate, + iter: iter, + square: square +}; + +function generate(width, height, f) { + var result = []; + for(var row = 0; row < height; row++) { + result[row] = [];; + for(var column = 0; column < width; column++) { + result[row].push(f(row, column)); + } + } + return result; +} + +function iter(grid, f) { + generate(grid.length > 0 ? grid[0].length : null, grid.length, f); +} + +function square(size) { + return generate(size, size, function() {return;}); +}