@tryforge/forgescript
Version:
ForgeScript is a comprehensive package that empowers you to effortlessly interact with Discord's API. It ensures scripting remains easy to learn and consistently effective.
70 lines • 2.32 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SortType = void 0;
const structures_1 = require("../../structures");
var SortType;
(function (SortType) {
SortType[SortType["asc"] = 0] = "asc";
SortType[SortType["desc"] = 1] = "desc";
})(SortType || (exports.SortType = SortType = {}));
exports.default = new structures_1.NativeFunction({
name: "$loop",
version: "1.4.0",
description: "Executes given code for N times",
unwrap: false,
brackets: true,
experimental: true,
args: [
{
name: "times",
description: "How many times to run the code",
rest: false,
required: true,
type: structures_1.ArgType.Number,
},
{
name: "code",
rest: false,
required: true,
type: structures_1.ArgType.String,
description: "The code to execute",
},
{
name: "variable",
description: "The variable to load the current iteration count for $env",
rest: false,
type: structures_1.ArgType.String
},
{
name: "direction",
description: "The direction of the iteration count to use",
rest: false,
type: structures_1.ArgType.Enum,
enum: SortType
}
],
async execute(ctx) {
const { args, return: rt } = await this["resolveMultipleArgs"](ctx, 0, 2, 3);
if (!this["isValidReturnType"](rt))
return rt;
const [times, varName, type] = args;
const code = this.data.fields[1];
let output = "";
let condition = type || times === -1;
for (let i = condition ? 1 : times; (type ? i <= times : i > 0) || times === -1; condition ? i++ : i--) {
if (varName)
ctx.setEnvironmentKey(varName, i);
const exec = await this["resolveCode"](ctx, code);
if (exec.success || exec.continue)
continue;
else if (exec.break)
break;
else if (exec.return)
output += exec.value;
else
return exec;
}
return this.success(output || null);
},
});
//# sourceMappingURL=loop.js.map