UNPKG

1.22 kBJavaScriptView Raw
1"use strict";
2exports.__esModule = true;
3var coffee_lex_1 = require("coffee-lex");
4var coffee_script_1 = require("./ext/coffee-script");
5var mapProgram_1 = require("./mappers/mapProgram");
6var parseCS1AsCS2_1 = require("./parseCS1AsCS2");
7var fixLocations_1 = require("./util/fixLocations");
8var ParseContext_1 = require("./util/ParseContext");
9function parse(source) {
10 coffee_script_1.patchCoffeeScript();
11 var context = ParseContext_1["default"].fromSource(source, coffee_lex_1["default"], parseCS1AsCS2_1["default"]);
12 fixLocations_1["default"](context, context.ast);
13 var program = mapProgram_1["default"](context);
14 traverse(program, function (node, parent) {
15 node.parentNode = parent;
16 });
17 return program;
18}
19exports.parse = parse;
20function traverse(node, callback) {
21 function traverseRec(currentNode, currentParent) {
22 var shouldDescend = callback(currentNode, currentParent);
23 if (shouldDescend !== false) {
24 for (var _i = 0, _a = currentNode.getChildren(); _i < _a.length; _i++) {
25 var child = _a[_i];
26 traverseRec(child, currentNode);
27 }
28 }
29 }
30 traverseRec(node, null);
31}
32exports.traverse = traverse;