aboutsummaryrefslogtreecommitdiffstats
path: root/packages/react-docs/src/utils
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-03-23 00:11:23 +0800
committerGitHub <noreply@github.com>2018-03-23 00:11:23 +0800
commit289359bf0d1a4b5dd6d80a7e723bd92c46ffc1c5 (patch)
treeb2f8385600b43589f608c32b699c5f215b4276d5 /packages/react-docs/src/utils
parent8478dc8d6d05efcdeac6653872f35149f3c9589c (diff)
parent81f6487865faad641108a566f3f717311ee43a0b (diff)
downloaddexon-0x-contracts-289359bf0d1a4b5dd6d80a7e723bd92c46ffc1c5.tar
dexon-0x-contracts-289359bf0d1a4b5dd6d80a7e723bd92c46ffc1c5.tar.gz
dexon-0x-contracts-289359bf0d1a4b5dd6d80a7e723bd92c46ffc1c5.tar.bz2
dexon-0x-contracts-289359bf0d1a4b5dd6d80a7e723bd92c46ffc1c5.tar.lz
dexon-0x-contracts-289359bf0d1a4b5dd6d80a7e723bd92c46ffc1c5.tar.xz
dexon-0x-contracts-289359bf0d1a4b5dd6d80a7e723bd92c46ffc1c5.tar.zst
dexon-0x-contracts-289359bf0d1a4b5dd6d80a7e723bd92c46ffc1c5.zip
Merge pull request #465 from 0xProject/addExtraDocs
Add Additional Package Doc Pages
Diffstat (limited to 'packages/react-docs/src/utils')
-rw-r--r--packages/react-docs/src/utils/doxity_utils.ts1
-rw-r--r--packages/react-docs/src/utils/typedoc_utils.ts65
2 files changed, 58 insertions, 8 deletions
diff --git a/packages/react-docs/src/utils/doxity_utils.ts b/packages/react-docs/src/utils/doxity_utils.ts
index 26dea6966..1b91690e0 100644
--- a/packages/react-docs/src/utils/doxity_utils.ts
+++ b/packages/react-docs/src/utils/doxity_utils.ts
@@ -116,6 +116,7 @@ export const doxityUtils = {
methods,
properties,
types: [],
+ functions: [],
events,
};
docAgnosticFormat[contractName] = docSection;
diff --git a/packages/react-docs/src/utils/typedoc_utils.ts b/packages/react-docs/src/utils/typedoc_utils.ts
index e4cea1e40..21f2dcabb 100644
--- a/packages/react-docs/src/utils/typedoc_utils.ts
+++ b/packages/react-docs/src/utils/typedoc_utils.ts
@@ -15,6 +15,7 @@ import {
TypeDocNode,
TypeDocType,
TypeParameter,
+ TypescriptFunction,
TypescriptMethod,
} from '../types';
import { utils } from '../utils/utils';
@@ -81,17 +82,22 @@ export const typeDocUtils = {
}
}
- // Since the `types.ts` file is the only file that does not export a module/class but
- // instead has each type export itself, we do not need to go down two levels of nesting
- // for it.
let entities;
let packageComment = '';
- if (sectionName === docsInfo.sections.types) {
- entities = packageDefinitionWithMergedChildren.children;
- } else {
+ // HACK: We assume 1 exported class per file
+ const classChildren = _.filter(packageDefinitionWithMergedChildren.children, (child: TypeDocNode) => {
+ return child.kindString === KindString.Class;
+ });
+ if (classChildren.length > 1) {
+ throw new Error('`react-docs` only supports projects with 1 exported class per file');
+ }
+ const isClassExport = packageDefinitionWithMergedChildren.children[0].kindString === KindString.Class;
+ if (isClassExport) {
entities = packageDefinitionWithMergedChildren.children[0].children;
const commentObj = packageDefinitionWithMergedChildren.children[0].comment;
packageComment = !_.isUndefined(commentObj) ? commentObj.shortText : packageComment;
+ } else {
+ entities = packageDefinitionWithMergedChildren.children;
}
const docSection = typeDocUtils._convertEntitiesToDocSection(entities, docsInfo, sectionName);
@@ -105,6 +111,7 @@ export const typeDocUtils = {
comment: '',
constructors: [],
methods: [],
+ functions: [],
properties: [],
types: [],
};
@@ -124,6 +131,13 @@ export const typeDocUtils = {
docSection.constructors.push(constructor);
break;
+ case KindString.Function:
+ if (entity.flags.isExported) {
+ const func = typeDocUtils._convertFunction(entity, docsInfo.sections, sectionName, docsInfo.id);
+ docSection.functions.push(func);
+ }
+ break;
+
case KindString.Method:
if (entity.flags.isPublic) {
isConstructor = false;
@@ -151,7 +165,6 @@ export const typeDocUtils = {
break;
case KindString.Interface:
- case KindString.Function:
case KindString.Variable:
case KindString.Enumeration:
case KindString.TypeAlias:
@@ -162,7 +175,11 @@ export const typeDocUtils = {
sectionName,
docsInfo.id,
);
- docSection.types.push(customType);
+ const seenTypeNames = _.map(docSection.types, t => t.name);
+ const isUnseen = !_.includes(seenTypeNames, customType.name);
+ if (isUnseen) {
+ docSection.types.push(customType);
+ }
}
break;
@@ -303,6 +320,38 @@ export const typeDocUtils = {
};
return method;
},
+ _convertFunction(
+ entity: TypeDocNode,
+ sections: SectionsMap,
+ sectionName: string,
+ docId: string,
+ ): TypescriptFunction {
+ const signature = entity.signatures[0];
+ const source = entity.sources[0];
+ const hasComment = !_.isUndefined(signature.comment);
+
+ const parameters = _.map(signature.parameters, param => {
+ return typeDocUtils._convertParameter(param, sections, sectionName, docId);
+ });
+ const returnType = typeDocUtils._convertType(signature.type, sections, sectionName, docId);
+ const typeParameter = _.isUndefined(signature.typeParameter)
+ ? undefined
+ : typeDocUtils._convertTypeParameter(signature.typeParameter[0], sections, sectionName, docId);
+
+ const func = {
+ name: signature.name,
+ comment: hasComment ? signature.comment.shortText : undefined,
+ returnComment: hasComment && signature.comment.returns ? signature.comment.returns : undefined,
+ source: {
+ fileName: source.fileName,
+ line: source.line,
+ },
+ parameters,
+ returnType,
+ typeParameter,
+ };
+ return func;
+ },
_convertTypeParameter(
entity: TypeDocNode,
sections: SectionsMap,