-
-
Notifications
You must be signed in to change notification settings - Fork 738
No need to convert defaultValue for options of type map #1250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
474606f
294a675
58fb056
cf16a00
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
import * as _ from 'lodash'; | ||
import * as ts from 'typescript'; | ||
|
||
import { DeclarationOption, ParameterScope, convert, TypeDocOptions, KeyToDeclaration, TypeDocAndTSOptions, TypeDocOptionMap } from './declaration'; | ||
import { DeclarationOption, ParameterScope, ParameterType, convert, TypeDocOptions, KeyToDeclaration, TypeDocAndTSOptions, TypeDocOptionMap } from './declaration'; | ||
import { Logger } from '../loggers'; | ||
import { Result, Ok, Err } from '../result'; | ||
import { insertPrioritySorted } from '../array'; | ||
|
@@ -109,10 +109,7 @@ export class Options { | |
*/ | ||
reset() { | ||
for (const declaration of this._declarations.values()) { | ||
if (declaration.scope !== ParameterScope.TypeScript) { | ||
this._values[declaration.name] = convert(declaration.defaultValue, declaration) | ||
.expect(`Failed to validate default value for ${declaration.name}`); | ||
} | ||
this.setOptionValueToDefault(declaration); | ||
} | ||
this._compilerOptions = {}; | ||
} | ||
|
@@ -169,10 +166,7 @@ export class Options { | |
} | ||
} | ||
|
||
if (declaration.scope !== ParameterScope.TypeScript) { | ||
this._values[declaration.name] = convert(declaration.defaultValue, declaration) | ||
.expect(`Failed to validate default value for ${declaration.name}`); | ||
} | ||
this.setOptionValueToDefault(declaration); | ||
} | ||
|
||
/** | ||
|
@@ -320,6 +314,22 @@ export class Options { | |
} | ||
return errors.length ? Err(errors) : Ok(void 0); | ||
} | ||
|
||
/** | ||
* Sets the value of a given option to its default value. | ||
* @param declaration The option whoes value should be reset. | ||
*/ | ||
private setOptionValueToDefault(declaration: Readonly<DeclarationOption>): void { | ||
if (declaration.scope !== ParameterScope.TypeScript) { | ||
// No nead to convert the defaultValue for a map type as it has to be of a specific type | ||
if (declaration.type === ParameterType.Map) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could you add a test for your specific usage that illustrates why this is important? The one you posted in gitter should be fine, or even something simpler. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good idea. Test added. I ran it through. Previously all but the new test passed. Now all tests pass. |
||
this._values[declaration.name] = declaration.defaultValue; | ||
} else { | ||
this._values[declaration.name] = convert(declaration.defaultValue, declaration) | ||
.expect(`Failed to validate default value for ${declaration.name}`); | ||
} | ||
} | ||
} | ||
} | ||
|
||
/** | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 nice to remove duplicate logic.