decaffeinate-parser
Version:
A better AST for CoffeeScript, inspired by CoffeeScriptRedux.
40 lines (39 loc) • 1.34 kB
JavaScript
;
exports.__esModule = true;
var nodes_1 = require("../nodes");
var getLocation_1 = require("../util/getLocation");
var mapAny_1 = require("./mapAny");
var mapPossiblyEmptyBlock_1 = require("./mapPossiblyEmptyBlock");
function mapCode(context, node) {
var _a = getLocation_1["default"](context, node), line = _a.line, column = _a.column, start = _a.start, end = _a.end, raw = _a.raw;
var Node = getNodeTypeForCode(node);
var childContext = context.updateState(function (s) { return s.dropCurrentClass(); });
return new Node(line, column, start, end, raw, node.params.map(function (param) { return mapAny_1["default"](childContext, param); }), mapPossiblyEmptyBlock_1["default"](childContext, node.body));
}
exports["default"] = mapCode;
function getNodeTypeForCode(node) {
if (node.isGenerator) {
if (node.bound) {
return nodes_1.BoundGeneratorFunction;
}
else {
return nodes_1.GeneratorFunction;
}
}
else if (node.isAsync) {
if (node.bound) {
return nodes_1.BoundAsyncFunction;
}
else {
return nodes_1.AsyncFunction;
}
}
else {
if (node.bound) {
return nodes_1.BoundFunction;
}
else {
return nodes_1.Function;
}
}
}