UNPKG

decaffeinate-parser

Version:

A better AST for CoffeeScript, inspired by CoffeeScriptRedux.

43 lines (42 loc) 1.81 kB
"use strict"; exports.__esModule = true; var nodes_1 = require("../nodes"); var getLocation_1 = require("../util/getLocation"); var UnsupportedNodeError_1 = require("../util/UnsupportedNodeError"); var mapAny_1 = require("./mapAny"); var COMPOUND_ASSIGN_OPS = { '-=': nodes_1.SubtractOp.name, '+=': nodes_1.PlusOp.name, '/=': nodes_1.DivideOp.name, '*=': nodes_1.MultiplyOp.name, '%=': nodes_1.RemOp.name, '||=': nodes_1.LogicalOrOp.name, '&&=': nodes_1.LogicalAndOp.name, '?=': nodes_1.ExistsOp.name, '<<=': nodes_1.LeftShiftOp.name, '>>=': nodes_1.SignedRightShiftOp.name, '>>>=': nodes_1.UnsignedRightShiftOp.name, '&=': nodes_1.BitAndOp.name, '^=': nodes_1.BitXorOp.name, '|=': nodes_1.BitOrOp.name, '**=': nodes_1.ExpOp.name, '//=': nodes_1.FloorDivideOp.name, '%%=': nodes_1.ModuloOp.name }; function mapAssign(context, node) { if (node.context === 'object') { throw new UnsupportedNodeError_1["default"](node, 'Unexpected object context when mapping regular assign op.'); } var _a = getLocation_1["default"](context, node), line = _a.line, column = _a.column, start = _a.start, end = _a.end, raw = _a.raw; if (node.context) { var opName = COMPOUND_ASSIGN_OPS[node.context]; if (!opName) { throw new UnsupportedNodeError_1["default"](node, 'Unexpected operator context for assign op.'); } return new nodes_1.CompoundAssignOp(line, column, start, end, raw, mapAny_1["default"](context, node.variable), mapAny_1["default"](context, node.value), opName); } else { return new nodes_1.AssignOp(line, column, start, end, raw, mapAny_1["default"](context, node.variable), mapAny_1["default"](context, node.value)); } } exports["default"] = mapAssign;