UNPKG

decaffeinate-parser

Version:

A better AST for CoffeeScript, inspired by CoffeeScriptRedux.

40 lines (39 loc) 1.34 kB
"use strict"; 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; } } }