UNPKG

decaffeinate-parser

Version:

A better AST for CoffeeScript, inspired by CoffeeScriptRedux.

37 lines (36 loc) 1.27 kB
import { AsyncFunction, BoundAsyncFunction, BoundFunction, BoundGeneratorFunction, Function, GeneratorFunction } from '../nodes'; import getLocation from '../util/getLocation'; import mapAny from './mapAny'; import mapPossiblyEmptyBlock from './mapPossiblyEmptyBlock'; export default function mapCode(context, node) { var _a = getLocation(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(childContext, param); }), mapPossiblyEmptyBlock(childContext, node.body)); } function getNodeTypeForCode(node) { if (node.isGenerator) { if (node.bound) { return BoundGeneratorFunction; } else { return GeneratorFunction; } } else if (node.isAsync) { if (node.bound) { return BoundAsyncFunction; } else { return AsyncFunction; } } else { if (node.bound) { return BoundFunction; } else { return Function; } } }