1 | var _ = require('lodash');
|
2 | var async = require('async');
|
3 | var recast = require('recast');
|
4 |
|
5 | var defineParse = require('./lib/defineParse');
|
6 | var requireParse = require('./lib/requireParse');
|
7 | var pkg = require('./package.json');
|
8 |
|
9 | module.exports = function(options, callback) {
|
10 | var context = this;
|
11 | var contents = context.contents.toString();
|
12 |
|
13 | if (!contents.trim()) {
|
14 | return callback();
|
15 | }
|
16 |
|
17 | var ast;
|
18 | try {
|
19 | ast = recast.parse(contents);
|
20 | } catch (err) {
|
21 | return callback(err);
|
22 | }
|
23 |
|
24 |
|
25 | context.extra.AMDDependencies = context.extra.AMDDependencies || [];
|
26 |
|
27 | async.parallel([
|
28 | _.partial(requireParse, context, options, ast),
|
29 | _.partial(defineParse, context, options, ast)
|
30 | ], function(err) {
|
31 | if (err) {
|
32 | return callback(err);
|
33 | }
|
34 |
|
35 | try {
|
36 | context.contents = new Buffer(recast.print(ast).code);
|
37 | } catch (err) {
|
38 | return callback(err);
|
39 | }
|
40 |
|
41 | callback();
|
42 | });
|
43 | };
|
44 |
|
45 | module.exports.toString = function() {
|
46 | return [pkg.name, pkg.version].join('@');
|
47 | };
|
48 |
|