Add ability to nest doc ref markdown under specific versions

This commit is contained in:
Fabio Berger
2018-07-09 19:05:38 +02:00
parent a9b320e636
commit 324b1079e7
31 changed files with 111 additions and 68 deletions

View File

@@ -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,14 @@ 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);
// Get version LTE to selectedVersion
const eligibleVersions = _.filter(markdownVersions, mdVersion => {
return semver.lte(mdVersion, 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

View File

@@ -24,7 +24,7 @@ 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;
@@ -34,7 +34,7 @@ export class DocsInfo {
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;

View File

@@ -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 };