1 | "use strict";
|
2 | exports.__esModule = true;
|
3 | var coffee_lex_1 = require("coffee-lex");
|
4 | var coffee_script_1 = require("./ext/coffee-script");
|
5 | var mapProgram_1 = require("./mappers/mapProgram");
|
6 | var parseCS1AsCS2_1 = require("./parseCS1AsCS2");
|
7 | var fixLocations_1 = require("./util/fixLocations");
|
8 | var ParseContext_1 = require("./util/ParseContext");
|
9 | function 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 | }
|
19 | exports.parse = parse;
|
20 | function 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 | }
|
32 | exports.traverse = traverse;
|