UNPKG

hytescript.js

Version:

A package for programming anything you want with ease.

59 lines (48 loc) 1.87 kB
const { clone } = require("../../utils/BaseUtils"); module.exports = { description: 'Executes code between all array elements.', usage: 'name | code | separator?', parameters: [ { name: 'Name', description: 'The array name.', optional: 'false', defaultValue: 'none' }, { name: 'Code', description: 'The code to be executed.', optional: 'false', defaultValue: 'none' }, { name: 'Separator', description: 'Characters to separate code results.', optional: 'true', defaultValue: ',' } ], dontParse: [1], run: async (d, name, code, separator = ",") => { if (name == undefined) return new d.error("required", d, 'name') if (code == undefined) return new d.error("required", d, 'code') if (separator == undefined) return new d.error("required", d, 'separator') if (!d.data.arrays[name]) return new d.error("invalid", d, "array name", name); let mapResult = []; for (const element of d.data.arrays[name]) { let mapData = clone(d) const placeholders = d.data.placeholders.slice(0) mapData.data.placeholders = mapData.data.placeholders.filter(x => x.name !== '{arrElement}') mapData.data.placeholders.push( {name: '{arrElement}', value: element} ) const parsedcode = await code.parse(mapData) d.err = mapData.err if (d.err) return; mapResult.push(parsedcode.result) Object.assign(d.data, mapData.data) d.data.placeholders = placeholders }; return mapResult.join(separator); } };