UNPKG

simc-ast-builder

Version:

Parser and AST generator for SimulationCraft files

33 lines 1.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleTrinket = void 0; const SimCVisitorError_1 = require("../../errors/SimCVisitorError"); const fieldMaps_1 = require("../../utils/fieldMaps"); /** * Handler for trinket access contexts */ const handleTrinket = ({ ctx, parts, }) => { if (!parts || !Array.isArray(parts) || parts.length < 1) { throw new SimCVisitorError_1.SimCVisitorError("Trinket access requires a slot", ctx); } // The slot can be a number (1, 2) or empty (for any trinket) // Ensure slot is always a string const slot = parts.length > 1 && parts[1] ? parts[1] : "0"; // For complex fields like "has_buff.strength", join all remaining parts let rawField = null; if (parts.length > 2) { rawField = parts.slice(2).join("."); } const defaultField = (0, fieldMaps_1.getDefaultField)("trinket"); const field = rawField || defaultField || ""; const fieldDef = (0, fieldMaps_1.getFieldDef)(field); return { expressionType: fieldDef.type, field: fieldDef, kind: "expression", nodeType: "trinket", trinketSlot: slot, }; }; exports.handleTrinket = handleTrinket; //# sourceMappingURL=TrinketHandler.js.map