|
1 | | -/*! amdclean - v0.2.4 - 2013-10-15 |
| 1 | +/*! amdclean - v0.2.5 - 2013-10-15 |
2 | 2 | * http://gregfranko.com/amdclean |
3 | 3 | * Copyright (c) 2013 Greg Franko; Licensed MIT*/ |
4 | 4 |
|
|
34 | 34 | // The Public API object |
35 | 35 | publicAPI = { |
36 | 36 | // Current project version number |
37 | | - VERSION: '0.2.4', |
| 37 | + VERSION: '0.2.5', |
38 | 38 | // Environment - either node or web |
39 | 39 | env: codeEnv, |
40 | 40 | // Object that keeps track of module ids/names that are used |
|
118 | 118 | // e.g. require('someModule'); |
119 | 119 | isCommonJS: function(node) { |
120 | 120 | if(!node) return false; |
121 | | - return (publicAPI.isRequireExpression || publicAPI.isRequireMemberExpression(node) || isRequireCallExpression(node)); |
| 121 | + return (publicAPI.isRequireExpression(node) || publicAPI.isRequireMemberExpression(node) || publicAPI.isRequireCallExpression(node)); |
122 | 122 | }, |
123 | 123 | // isRequireExpression |
124 | 124 | // ------------------- |
125 | 125 | // Returns if the current AST node is a require() variable declaration |
126 | 126 | // e.g. var example = require('someModule'); |
127 | 127 | isRequireExpression: function(node) { |
128 | 128 | return (node.type === 'VariableDeclarator' && |
129 | | - !_.isUndefined(node.init) && |
130 | | - !_.isUndefined(node.init.type) && |
| 129 | + node.id && |
| 130 | + node.id.name && |
| 131 | + node.init && |
| 132 | + node.init.type && |
131 | 133 | node.init.type === 'CallExpression' && |
132 | | - !_.isUndefined(node.init.callee) && |
| 134 | + node.init.callee && |
133 | 135 | node.init.callee.name === 'require'); |
134 | 136 | }, |
135 | 137 | // isRequireMemberExpression |
|
138 | 140 | // e.g. var example = require('someModule').someProp; |
139 | 141 | isRequireMemberExpression: function(node) { |
140 | 142 | return (node.type === 'VariableDeclarator' && |
141 | | - !_.isUndefined(node.init) && |
142 | | - !_.isUndefined(node.init.type) && |
| 143 | + node.id && |
| 144 | + node.id.name && |
| 145 | + node.init && |
| 146 | + node.init.type && |
143 | 147 | node.init.type === 'MemberExpression' && |
144 | | - !_.isUndefined(node.init.object) && |
145 | | - !_.isUndefined(node.init.object.callee) && |
| 148 | + node.init.object && |
| 149 | + node.init.object.callee && |
146 | 150 | node.init.object.callee.name === 'require'); |
147 | 151 | }, |
148 | 152 | // isRequireCallExpression |
|
151 | 155 | // e.g. var example = require('someModule').someProp(); |
152 | 156 | isRequireCallExpression: function(node) { |
153 | 157 | return (node.type === 'VariableDeclarator' && |
154 | | - !_.isUndefined(node.init) && |
155 | | - !_.isUndefined(node.init.type) && |
| 158 | + node.id && |
| 159 | + node.id.name && |
| 160 | + node.init && |
| 161 | + node.init.type && |
156 | 162 | node.init.type === 'CallExpression' && |
157 | | - !_.isUndefined(node.init.callee) && |
| 163 | + node.init.callee && |
158 | 164 | node.init.callee.type === 'MemberExpression' && |
159 | | - !_.isUndefined(node.init.callee.object) && |
160 | | - !_.isUndefined(node.init.callee.object.type) && |
| 165 | + node.init.callee.object && |
| 166 | + node.init.callee.object.type && |
161 | 167 | node.init.callee.object.type === 'CallExpression' && |
162 | | - !_.isUndefined(node.init.callee.object['arguments']) && |
163 | | - !_.isUndefined(node.init.callee.object.callee) && |
| 168 | + node.init.callee.object['arguments'] && |
| 169 | + node.init.callee.object.callee && |
164 | 170 | node.init.callee.object.callee.name === 'require' && |
165 | | - !_.isUndefined(node.init.callee.property) && |
166 | | - !_.isUndefined(node.init.callee.property.name)); |
| 171 | + node.init.callee.property && |
| 172 | + node.init.callee.property.name); |
167 | 173 | }, |
168 | 174 | // isObjectExpression |
169 | 175 | // ------------------ |
|
239 | 245 | }, |
240 | 246 | 'init': { |
241 | 247 | 'type': 'Identifier', |
242 | | - 'name': publicAPI.normalizeModuleName((node.init['arguments'][0].value) || (node.init['arguments'][0].elements[0].value)) |
| 248 | + 'name': (function() { |
| 249 | + if(node.init && node.init['arguments'] && node.init['arguments'][0] && node.init['arguments'][0].elements && node.init['arguments'][0].elements[0]) { |
| 250 | + return publicAPI.normalizeModuleName(node.init['arguments'][0].elements[0].value); |
| 251 | + } else { |
| 252 | + return publicAPI.normalizeModuleName(node.init['arguments'][0].value); |
| 253 | + } |
| 254 | + }()) |
243 | 255 | } |
244 | 256 | }; |
245 | 257 | } else if(publicAPI.isRequireMemberExpression(node)) { |
|
481 | 493 | lineNumberObj[currentLineNumber] = true; |
482 | 494 | }); |
483 | 495 | publicAPI.commentLineNumbers = lineNumberObj; |
484 | | - console.log('publicAPI.commentLineNumbers', publicAPI.commentLineNumbers); |
485 | 496 | } |
486 | 497 | var moduleName, |
487 | 498 | args, |
|
0 commit comments