Socket
Socket
Sign inDemoInstall

grid-template-parser

Package Overview
Dependencies
0
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.1 to 0.3.0

72

lib/grid.js

@@ -10,36 +10,45 @@ 'use strict';

var separator = /['"]\s*['"]?/g;
var sep = /['"]\s*['"]?/g;
var ws = /\s+/g;
var reduceRow = function reduceRow(acc, row) {
var str = row.replace(/\s+/g, ' ').trim();
var cleanTpl = function cleanTpl(t) {
return t.trim().slice(1, -1);
};
var cleanLine = function cleanLine(l) {
return l.replace(ws, ' ').trim();
};
if (str !== '') {
acc.push(str.split(' '));
}
return acc;
var getTpl = function getTpl(t) {
return cleanTpl(t).split(sep);
};
var getRow = function getRow(l) {
return cleanLine(l).split(' ');
};
var reduceGrid = function reduceGrid(acc, row, r) {
row.forEach(function (cell, c) {
if (cell !== '.') {
if (typeof acc[cell] === 'undefined') {
var x = c;
var y = r;
var width = 1;
var height = 1;
var reduceLines = function reduceLines(acc, line, r) {
if (line.trim() !== '') {
getRow(line).forEach(function (area, c) {
if (area !== '.') {
if (typeof acc[area] === 'undefined') {
acc[area] = {
column: (0, _primitives.track)(c + 1, c + 2),
row: (0, _primitives.track)(r + 1, r + 2)
};
} else {
var _acc$area = acc[area],
column = _acc$area.column,
row = _acc$area.row;
acc[cell] = (0, _primitives.area)({ x: x, y: y, width: width, height: height });
} else {
var box = (0, _primitives.rect)(acc[cell]);
var _x = Math.min(box.x, c);
var _y = Math.min(box.y, r);
var _width = Math.max(box.x + box.width, c + 1) - _x;
var _height = Math.max(box.y + box.height, r + 1) - _y;
column.start = Math.min(column.start, c + 1);
column.end = Math.max(column.end, c + 2);
column.span = column.end - column.start;
acc[cell] = (0, _primitives.area)({ x: _x, y: _y, width: _width, height: _height });
row.start = Math.min(row.start, r + 1);
row.end = Math.max(row.end, r + 2);
row.span = row.end - row.start;
}
}
}
});
});
}

@@ -49,10 +58,9 @@ return acc;

var grid = exports.grid = function grid(template) {
var rows = template.split(separator).reduce(reduceRow, []);
var grid = exports.grid = function grid(tpl) {
var lines = getTpl(tpl);
var width = getRow(lines[0]).length;
var height = lines.length;
var areas = lines.reduce(reduceLines, {});
var width = rows[0].length;
var height = rows.length;
var areas = rows.reduce(reduceGrid, {});
return { width: width, height: height, areas: areas };
};

@@ -6,2 +6,8 @@ 'use strict';

});
var track = exports.track = function track() {
var start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
return { start: start, end: end, span: end - start };
};
var area = exports.area = function area() {

@@ -19,12 +25,4 @@ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},

return {
column: {
start: x + 1,
end: x + width + 1,
span: width
},
row: {
start: y + 1,
end: y + height + 1,
span: height
}
column: track(x + 1, x + width + 1),
row: track(y + 1, y + height + 1)
};

@@ -31,0 +29,0 @@ };

@@ -8,31 +8,38 @@ 'use strict';

var defaultTemplate = function defaultTemplate(width, height) {
return Array.from({ length: height }, function () {
return Array.from({ length: width }, function () {
return '.';
});
});
var matchingArea = function matchingArea(areas, row, column) {
return function (area) {
return areas[area].row.start <= row + 1 && areas[area].row.end > row + 1 && areas[area].column.start <= column + 1 && areas[area].column.end > column + 1;
};
};
var matchingArea = function matchingArea(areas, r, c) {
return function (cell) {
return areas[cell].row.start <= r + 1 && areas[cell].row.end > r + 1 && areas[cell].column.start <= c + 1 && areas[cell].column.end > c + 1;
};
var getColumns = function getColumns(areas, grid, row) {
var current = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
var cols = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';
var area = areas.find(matchingArea(grid.areas, row, current));
cols += typeof area === 'string' ? area : '.';
if (current < grid.width - 1) {
return getColumns(areas, grid, row, current + 1, cols + ' ');
}
return cols;
};
var template = exports.template = function template(_ref) {
var width = _ref.width,
height = _ref.height,
areas = _ref.areas;
return defaultTemplate(width, height).reduce(function (acc, row, r, rows) {
var separator = r < rows.length - 1 ? '\n' : '';
var line = row.reduce(function (acc, cell, c, cells) {
var separator = c < cells.length - 1 ? ' ' : '';
var area = Object.keys(areas).find(matchingArea(areas, r, c));
var getRows = function getRows(areas, grid) {
var current = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
var rows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
return '' + acc + (typeof area === 'string' ? area : cell) + separator;
}, '');
rows += '"' + getColumns(areas, grid, current) + '"';
return acc + '"' + line + '"' + separator;
}, '');
if (current < grid.height - 1) {
return getRows(areas, grid, current + 1, rows + '\n');
}
return rows;
};
var template = exports.template = function template(grid) {
return getRows(Object.keys(grid.areas), grid);
};
{
"name": "grid-template-parser",
"version": "0.2.1",
"version": "0.3.0",
"description": "A simple CSS Grid template parser",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc