Просмотр исходного кода

feat(docs): Render member modifiers (static, readonly etc)

Relates to #89
Michael Bromley 6 лет назад
Родитель
Сommit
82bc98cf7e

+ 1 - 0
scripts/docs/typescript-docgen-types.ts

@@ -10,6 +10,7 @@ export interface MemberInfo {
     description: string;
     type: string;
     fullText: string;
+    modifiers: string[];
 }
 
 export interface PropertyInfo extends MemberInfo {

+ 1 - 0
scripts/docs/typescript-docs-parser.ts

@@ -229,6 +229,7 @@ export class TypescriptDocsParser {
                     name,
                     description,
                     type,
+                    modifiers,
                 };
                 if (
                     ts.isMethodSignature(member) ||

+ 4 - 3
scripts/docs/typescript-docs-renderer.ts

@@ -159,6 +159,7 @@ export class TypescriptDocsRenderer {
             output += classInfo.implements + ' ';
         }
         output += `{\n`;
+        const renderModifiers = (modifiers: string[]) => modifiers.length ? modifiers.join(' ') + ' ' : '';
         output += members
             .map(member => {
                 if (member.kind === 'method') {
@@ -170,10 +171,10 @@ export class TypescriptDocsRenderer {
                     if (member.fullText === 'constructor') {
                         return `  constructor(${args})`;
                     } else {
-                        return `  ${member.fullText}(${args}) => ${member.type};`;
+                        return `  ${renderModifiers(member.modifiers)}${member.fullText}(${args}) => ${member.type};`;
                     }
                 } else {
-                    return `  ${member.fullText}`;
+                    return `  ${renderModifiers(member.modifiers)}${member.fullText}`;
                 }
             })
             .join(`\n`);
@@ -265,7 +266,7 @@ export class TypescriptDocsRenderer {
                 }
             }
             output += `### ${member.name}\n\n`;
-            output += `{{< member-info kind="${member.kind}" type="${type}" ${defaultParam}>}}\n\n`;
+            output += `{{< member-info kind="${[...member.modifiers, member.kind].join(' ')}" type="${type}" ${defaultParam}>}}\n\n`;
             output += `${this.renderDescription(member.description, knownTypeMap, docsUrl)}\n\n`;
         }
         return output;