diff --git a/packages/jsdoc/cli.js b/packages/jsdoc/cli.js index 2aadfb0d..eb3c6ca3 100644 --- a/packages/jsdoc/cli.js +++ b/packages/jsdoc/cli.js @@ -297,7 +297,7 @@ module.exports = (() => { const parser = require('jsdoc/src/parser'); const plugins = require('jsdoc/plugins'); - props.parser = parser.createParser(env.conf.parser); + props.parser = parser.createParser(env.conf.parser, env.conf); if (env.conf.plugins) { plugins.installPlugins(env.conf.plugins, props.parser); diff --git a/packages/jsdoc/lib/jsdoc/src/parser.js b/packages/jsdoc/lib/jsdoc/src/parser.js index 3b4c3985..0f755cd4 100644 --- a/packages/jsdoc/lib/jsdoc/src/parser.js +++ b/packages/jsdoc/lib/jsdoc/src/parser.js @@ -3,7 +3,6 @@ */ const _ = require('lodash'); const astNode = require('jsdoc/src/astnode'); -const { conf } = require('jsdoc/env'); const { EventEmitter } = require('events'); const fs = require('fs'); const { log } = require('@jsdoc/util'); @@ -45,7 +44,7 @@ class DocletCache { } // TODO: docs -exports.createParser = type => { +exports.createParser = (type, conf) => { let modulePath; if (!type) { @@ -62,7 +61,7 @@ exports.createParser = type => { return null; } - return new (require(modulePath).Parser)(); + return new (require(modulePath).Parser)(null, null, null, conf); }; // TODO: docs @@ -90,12 +89,13 @@ function definedInScope(doclet, basename) { */ class Parser extends EventEmitter { // TODO: docs - constructor(builderInstance, visitorInstance, walkerInstance) { + constructor(builderInstance, visitorInstance, walkerInstance, conf) { super(); this.clear(); this._astBuilder = builderInstance || new (require('jsdoc/src/astbuilder').AstBuilder)(); + this._conf = conf || {}; this._visitor = visitorInstance || new (require('jsdoc/src/visitor').Visitor)(); this._walker = walkerInstance || new (require('jsdoc/src/walker').Walker)(); @@ -155,7 +155,7 @@ class Parser extends EventEmitter { * var docs = jsdocParser.parse(myFiles); */ parse(sourceFiles, encoding) { - encoding = encoding || conf.encoding || 'utf8'; + encoding = encoding || this._conf.encoding || 'utf8'; let filename = ''; let sourceCode = ''; @@ -268,6 +268,7 @@ class Parser extends EventEmitter { let e = { filename: sourceName }; + let sourceType; this.emit('fileBegin', e); log.info(`Parsing ${sourceName} ...`); @@ -282,8 +283,9 @@ class Parser extends EventEmitter { sourceName = e.filename; sourceCode = pretreat(e.source); + sourceType = this._conf.source ? this._conf.source.type : undefined; - ast = this._astBuilder.build(sourceCode, sourceName, conf.source.type); + ast = this._astBuilder.build(sourceCode, sourceName, sourceType); if (ast) { this._walkAst(ast, this._visitor, sourceName); }