UNPKG

twing

Version:

First-class Twig engine for Node.js

48 lines (47 loc) 1.25 kB
"use strict"; 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;