simc-ast-builder
Version:
Parser and AST generator for SimulationCraft files
33 lines • 1.27 kB
JavaScript
;
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