twing
Version:
First-class Twig engine for Node.js
58 lines (57 loc) • 1.48 kB
JavaScript
;
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;
}