twing
Version:
First-class Twig engine for Node.js
48 lines (47 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cycleSynchronously = exports.cycle = void 0;
const map_like_1 = require("../../../helpers/map-like");
/**
* Cycles over a value.
*
* @param _executionContext
* @param value
* @param position The cycle position
*
* @returns The value at position
*/
const cycle = (_executionContext, value, position) => {
if (!(0, map_like_1.isAMapLike)(value) && !Array.isArray(value)) {
return Promise.resolve(value);
}
let values;
let size;
if (Array.isArray(value)) {
values = value;
size = value.length;
}
else {
values = [...value.values()];
size = value.size;
}
return Promise.resolve(values[position % size]);
};
exports.cycle = cycle;
const cycleSynchronously = (_executionContext, value, position) => {
if (!(0, map_like_1.isAMapLike)(value) && !Array.isArray(value)) {
return value;
}
let values;
let size;
if (Array.isArray(value)) {
values = value;
size = value.length;
}
else {
values = [...value.values()];
size = value.size;
}
return values[position % size];
};
exports.cycleSynchronously = cycleSynchronously;