UNPKG

bdjs

Version:

A potent package for creating Discord bots.

57 lines (56 loc) 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Function_1 = require("../structures/Function"); exports.default = new Function_1.BaseFunction({ description: 'Filter array elements that mets the condition.', parameters: [ { name: 'Name', description: 'The name for the array.', required: true, resolver: 'String', value: 'none' }, { name: 'Condition', description: 'Condition to filter variables.', required: true, compile: false, resolver: 'String', value: 'none' }, { name: 'Separator', description: 'Separator to join the results.', required: false, resolver: 'String', value: ',' } ], code: async function (d, [name, condition, sep = ',']) { if (condition === undefined) throw new d.error(d, 'required', 'Table Name', d.function?.name); const args = d.getEnvironmentVariable(name); if (!d.hasEnvironmentVariable(name) || !Array.isArray(args)) throw new d.error(d, 'invalid', 'Array Name', d.function?.name); const results = []; // Filling cells. for (const element of args) { d.cells.data.push({ name: 'element', value: element }); } // Filtering cells. for (const cell of d.cells.data) { const compiled = await d.reader.compile(d.cells.parse(condition.trim(), cell.name, cell.value), d); const mets = d.condition.evaluate(compiled.code); if (mets) results.push(cell.value); } // Cleaning cached cells. d.cells.data.length = 0; if (results.length > 0) return results.join(sep); } });