diff options
Diffstat (limited to 'packages/react-docs/src')
-rw-r--r-- | packages/react-docs/src/components/documentation.tsx | 16 | ||||
-rw-r--r-- | packages/react-docs/src/docs_info.ts | 7 | ||||
-rw-r--r-- | packages/react-docs/src/types.ts | 6 | ||||
-rw-r--r-- | packages/react-docs/src/utils/doxity_utils.ts | 22 | ||||
-rw-r--r-- | packages/react-docs/src/utils/typedoc_utils.ts | 2 |
5 files changed, 36 insertions, 17 deletions
diff --git a/packages/react-docs/src/components/documentation.tsx b/packages/react-docs/src/components/documentation.tsx index a4e6f4f6e..ff33220d2 100644 --- a/packages/react-docs/src/components/documentation.tsx +++ b/packages/react-docs/src/components/documentation.tsx @@ -12,6 +12,7 @@ import { import * as _ from 'lodash'; import CircularProgress from 'material-ui/CircularProgress'; import * as React from 'react'; +import * as semver from 'semver'; import { DocsInfo } from '../docs_info'; import { @@ -180,7 +181,20 @@ export class Documentation extends React.Component<DocumentationProps, Documenta return renderedSections; } private _renderSection(typeDefinitionByName: TypeDefinitionByName, sectionName: string): React.ReactNode { - const markdownFileIfExists = this.props.docsInfo.sectionNameToMarkdown[sectionName]; + const markdownVersions = _.keys(this.props.docsInfo.sectionNameToMarkdownByVersion); + const eligibleVersions = _.filter(markdownVersions, mdVersion => { + return semver.lte(mdVersion, this.props.selectedVersion); + }); + if (_.isEmpty(eligibleVersions)) { + throw new Error( + `No eligible markdown sections found for ${this.props.docsInfo.displayName} version ${ + this.props.selectedVersion + }.`, + ); + } + const sortedEligibleVersions = eligibleVersions.sort(semver.rcompare.bind(semver)); + const closestVersion = sortedEligibleVersions[0]; + const markdownFileIfExists = this.props.docsInfo.sectionNameToMarkdownByVersion[closestVersion][sectionName]; if (!_.isUndefined(markdownFileIfExists)) { return ( <MarkdownSection diff --git a/packages/react-docs/src/docs_info.ts b/packages/react-docs/src/docs_info.ts index 6f4f39f00..b37942da6 100644 --- a/packages/react-docs/src/docs_info.ts +++ b/packages/react-docs/src/docs_info.ts @@ -9,6 +9,7 @@ import { DocsInfoTypeConfigs, DocsMenu, DoxityDocObj, + SectionNameToMarkdownByVersion, SectionsMap, SupportedDocJson, TypeDefinitionByName, @@ -24,17 +25,17 @@ export class DocsInfo { public packageUrl: string; public menu: DocsMenu; public sections: SectionsMap; - public sectionNameToMarkdown: { [sectionName: string]: string }; + public sectionNameToMarkdownByVersion: SectionNameToMarkdownByVersion; public contractsByVersionByNetworkId?: ContractsByVersionByNetworkId; public typeConfigs: DocsInfoTypeConfigs; - private _docsInfo: DocsInfoConfig; + private readonly _docsInfo: DocsInfoConfig; constructor(config: DocsInfoConfig) { this.id = config.id; this.type = config.type; this.displayName = config.displayName; this.packageUrl = config.packageUrl; this.sections = config.sections; - this.sectionNameToMarkdown = config.sectionNameToMarkdown; + this.sectionNameToMarkdownByVersion = config.sectionNameToMarkdownByVersion; this.contractsByVersionByNetworkId = config.contractsByVersionByNetworkId; this.typeConfigs = config.typeConfigs; this._docsInfo = config; diff --git a/packages/react-docs/src/types.ts b/packages/react-docs/src/types.ts index f4e61edc9..cbc774c2e 100644 --- a/packages/react-docs/src/types.ts +++ b/packages/react-docs/src/types.ts @@ -1,3 +1,7 @@ +export interface SectionNameToMarkdownByVersion { + [version: string]: { [sectionName: string]: string }; +} + export interface DocsInfoConfig { id: string; type: SupportedDocJson; @@ -5,7 +9,7 @@ export interface DocsInfoConfig { packageUrl: string; menu: DocsMenu; sections: SectionsMap; - sectionNameToMarkdown: { [sectionName: string]: string }; + sectionNameToMarkdownByVersion: SectionNameToMarkdownByVersion; visibleConstructors: string[]; sectionNameToModulePath?: { [sectionName: string]: string[] }; menuSubsectionToVersionWhenIntroduced?: { [sectionName: string]: string }; diff --git a/packages/react-docs/src/utils/doxity_utils.ts b/packages/react-docs/src/utils/doxity_utils.ts index 374ee07dd..6815daa0c 100644 --- a/packages/react-docs/src/utils/doxity_utils.ts +++ b/packages/react-docs/src/utils/doxity_utils.ts @@ -31,8 +31,8 @@ export const doxityUtils = { comment: doxityConstructor.details, returnComment: doxityConstructor.return, callPath: '', - parameters: this._convertParameters(doxityConstructor.inputs), - returnType: this._convertType(doxityContractObj.name), + parameters: doxityUtils._convertParameters(doxityConstructor.inputs), + returnType: doxityUtils._convertType(doxityContractObj.name), }; constructors.push(constructor); } @@ -40,7 +40,7 @@ export const doxityUtils = { const doxityMethods: DoxityAbiDoc[] = _.filter<DoxityAbiDoc>( doxityContractObj.abiDocs, (abiDoc: DoxityAbiDoc) => { - return this._isMethod(abiDoc); + return doxityUtils._isMethod(abiDoc); }, ); const methods: SolidityMethod[] = _.map<DoxityAbiDoc, SolidityMethod>( @@ -52,10 +52,10 @@ export const doxityUtils = { // no-op. It's already undefined } else if (outputs.length === 1) { const outputsType = outputs[0].type; - returnTypeIfExists = this._convertType(outputsType); + returnTypeIfExists = doxityUtils._convertType(outputsType); } else { const outputsType = `[${_.map(outputs, output => output.type).join(', ')}]`; - returnTypeIfExists = this._convertType(outputsType); + returnTypeIfExists = doxityUtils._convertType(outputsType); } // For ZRXToken, we want to convert it to zrxToken, rather then simply zRXToken const callPath = @@ -70,7 +70,7 @@ export const doxityUtils = { comment: doxityMethod.details, returnComment: doxityMethod.return, callPath, - parameters: this._convertParameters(doxityMethod.inputs), + parameters: doxityUtils._convertParameters(doxityMethod.inputs), returnType: returnTypeIfExists, }; return method; @@ -80,7 +80,7 @@ export const doxityUtils = { const doxityProperties: DoxityAbiDoc[] = _.filter<DoxityAbiDoc>( doxityContractObj.abiDocs, (abiDoc: DoxityAbiDoc) => { - return this._isProperty(abiDoc); + return doxityUtils._isProperty(abiDoc); }, ); const properties = _.map<DoxityAbiDoc, Property>(doxityProperties, (doxityProperty: DoxityAbiDoc) => { @@ -92,7 +92,7 @@ export const doxityUtils = { } const property = { name: doxityProperty.name, - type: this._convertType(typeName), + type: doxityUtils._convertType(typeName), comment: doxityProperty.details, }; return property; @@ -105,7 +105,7 @@ export const doxityUtils = { const events = _.map(doxityEvents, doxityEvent => { const event = { name: doxityEvent.name, - eventArgs: this._convertEventArgs(doxityEvent.inputs), + eventArgs: doxityUtils._convertEventArgs(doxityEvent.inputs), }; return event; }); @@ -129,7 +129,7 @@ export const doxityUtils = { name: input.name, comment: input.description, isOptional: false, - type: this._convertType(input.type), + type: doxityUtils._convertType(input.type), }; return parameter; }); @@ -167,7 +167,7 @@ export const doxityUtils = { const eventArg = { isIndexed: input.indexed, name: input.name, - type: this._convertType(input.type), + type: doxityUtils._convertType(input.type), }; return eventArg; }); diff --git a/packages/react-docs/src/utils/typedoc_utils.ts b/packages/react-docs/src/utils/typedoc_utils.ts index 5633d9040..a6d938e94 100644 --- a/packages/react-docs/src/utils/typedoc_utils.ts +++ b/packages/react-docs/src/utils/typedoc_utils.ts @@ -235,7 +235,7 @@ export const typeDocUtils = { childTypeIfExists = { name: child.name, typeDocType: TypeDocTypes.Reflection, - method: this._convertMethod(child, isConstructor, sections, sectionName, docId), + method: typeDocUtils._convertMethod(child, isConstructor, sections, sectionName, docId), }; } const c: CustomTypeChild = { |