* Parse the given source files for JSDoc comments. * @param {Array. } sourceFiles An array of filepaths to the JavaScript sources. * @param {string} [encoding] * * @fires module:jsdoc/src/parser.Parser.parseBegin * @fires module:jsdoc/src/parser.Parser.fileBegin
(sourceFiles, encoding)
| 163 | * var docs = jsdocParser.parse(myFiles); |
| 164 | */ |
| 165 | parse(sourceFiles, encoding) { |
| 166 | encoding = encoding || jsdoc.env.conf.encoding || 'utf8'; |
| 167 | |
| 168 | let filename = ''; |
| 169 | let sourceCode = ''; |
| 170 | let sourceFile; |
| 171 | const parsedFiles = []; |
| 172 | const e = {}; |
| 173 | |
| 174 | if (typeof sourceFiles === 'string') { |
| 175 | sourceFiles = [sourceFiles]; |
| 176 | } |
| 177 | |
| 178 | e.sourcefiles = sourceFiles; |
| 179 | logger.debug('Parsing source files: %j', sourceFiles); |
| 180 | |
| 181 | this.emit('parseBegin', e); |
| 182 | |
| 183 | for (let i = 0, l = sourceFiles.length; i < l; i++) { |
| 184 | sourceCode = ''; |
| 185 | sourceFile = sourceFiles[i]; |
| 186 | |
| 187 | if (sourceFile.indexOf(SCHEMA) === 0) { |
| 188 | sourceCode = sourceFile.substr(SCHEMA.length); |
| 189 | filename = `[[string${i}]]`; |
| 190 | } |
| 191 | else { |
| 192 | filename = sourceFile; |
| 193 | try { |
| 194 | sourceCode = fs.readFileSync(filename, encoding); |
| 195 | } |
| 196 | catch (err) { |
| 197 | logger.error('Unable to read and parse the source file %s: %s', filename, err); |
| 198 | } |
| 199 | } |
| 200 | |
| 201 | if (sourceCode.length) { |
| 202 | this._parseSourceCode(sourceCode, filename); |
| 203 | parsedFiles.push(filename); |
| 204 | } |
| 205 | } |
| 206 | |
| 207 | this.emit('parseComplete', { |
| 208 | sourcefiles: parsedFiles, |
| 209 | doclets: this._resultBuffer |
| 210 | }); |
| 211 | logger.debug('Finished parsing source files.'); |
| 212 | |
| 213 | return this._resultBuffer; |
| 214 | } |
| 215 | |
| 216 | // TODO: docs |
| 217 | fireProcessingComplete(doclets) { |
no test coverage detected