UNPKG

twing

Version:

First-class Twig engine for Node.js

58 lines (57 loc) 1.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.chunk = chunk; exports.chunkSynchronously = chunkSynchronously; const iterate_1 = require("./iterate"); /** * Split an hash into chunks. * * @param {*} hash * @param {number} size * @param {boolean} preserveKeys * @returns {Promise<Array<Map<any, any>>>} */ async function chunk(hash, size, preserveKeys) { let result = []; let count = 0; let currentMap; await (0, iterate_1.iterate)(hash, (key, value) => { if (!currentMap) { currentMap = new Map(); result.push(currentMap); } currentMap.set(preserveKeys ? key : count, value); count++; if (count >= size) { count = 0; currentMap = null; } return Promise.resolve(); }); return result; } /** * Split an hash into chunks, synchronously. * * @param {*} hash * @param {number} size * @param {boolean} preserveKeys */ function chunkSynchronously(hash, size, preserveKeys) { let result = []; let count = 0; let currentMap; (0, iterate_1.iterateSynchronously)(hash, (key, value) => { if (!currentMap) { currentMap = new Map(); result.push(currentMap); } currentMap.set(preserveKeys ? key : count, value); count++; if (count >= size) { count = 0; currentMap = null; } }); return result; }