twing
Version:
First-class Twig engine for Node.js
39 lines (38 loc) • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sliceMap = sliceMap;
function sliceMap(map, start, length, preserveKeys) {
let result = new Map();
let index = 0;
let keyIndex = 0;
if (start < 0) {
start = map.size + start;
}
let end;
if (length >= 0) {
end = start + length;
}
else {
end = map.size + length;
}
for (let [key, value] of map) {
if ((index >= start) && (index < end)) {
let newKey;
// Note that array_slice() will reorder and reset the ***numeric*** array indices by default. [...]
// see http://php.net/manual/en/function.array-slice.php
if (typeof key === "number") {
newKey = preserveKeys ? key : keyIndex;
keyIndex++;
}
else {
newKey = key;
}
result.set(newKey, value);
}
if (index >= end) {
break;
}
index++;
}
return result;
}