1 | var esprima = require("esprima");
|
2 | var sourceMapToAst = require("sourcemap-to-ast");
|
3 |
|
4 | module.exports = getAst;
|
5 |
|
6 | /**
|
7 | * Get the ast for a load or create one if it doesn't exist.
|
8 | */
|
9 | function getAst(load, sourceMapFileName){
|
10 | if(load.ast) {
|
11 | return load.ast;
|
12 | }
|
13 |
|
14 | var fileName = sourceMapFileName || load.map && load.map.file;
|
15 |
|
16 | load.ast = esprima.parse(load.source.toString(), {
|
17 | loc: true,
|
18 | source: fileName || load.address
|
19 | });
|
20 |
|
21 | if(load.map) {
|
22 | sourceMapToAst(load.ast, load.map);
|
23 | }
|
24 |
|
25 | return load.ast;
|
26 | }
|