12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import * as Handlebars from 'handlebars';
- import * as Typedoc from 'typedoc';
- import * as fs from 'fs';
-
- export class MarkdownCreator {
- constructor(private mdRelativeLinkPath: string, private handlebarsFn: HandlebarsTemplateDelegate<any>) { }
-
- public create(reflection: Typedoc.DeclarationReflection) {
- const context = {
- name: reflection.name,
- properties: this.readProperties(reflection),
- methods: this.readMethods(reflection)
- };
- return this.handlebarsFn(context);
- }
-
- private readMethods(reflection: Typedoc.DeclarationReflection) {
- const methodReflections = reflection.getChildrenByKind(Typedoc.ReflectionKind.Method);
-
- methodReflections.sort((a, b) => a.sources[0].line - b.sources[0].line);
-
- return methodReflections.map((methodReflection) => ({
- name: methodReflection.name,
- arguments: this.readArguments(methodReflection.signatures[0].parameters || []),
- returnType: methodReflection.signatures[0].type.toString(),
- source: `${this.mdRelativeLinkPath}/${methodReflection.sources[0].fileName}#${methodReflection.sources[0].line}`,
- comment: methodReflection.signatures[0].comment ? methodReflection.signatures[0].comment.shortText : ''
- }));
- }
-
- private readArguments(parameters: Typedoc.ParameterReflection[]) {
- return parameters.map((parameter) => ({
- name: parameter.name,
- type: parameter.type.toString()
- }));
- }
-
- private readProperties(reflection: Typedoc.DeclarationReflection) {
- const propsReflections = reflection.getChildrenByKind(Typedoc.ReflectionKind.Property);
- return propsReflections.map((propReflection) => ({
- name: propReflection.name,
- type: propReflection.type.toString()
- }));
- }
- }
|