@cparra/apexdocs 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/README.md +37 -9
  2. package/ROADMAP.md +2 -0
  3. package/docs/Sample-Classes/SampleClass.md +19 -12
  4. package/examples/force-app/main/default/classes/SampleClass.cls +10 -0
  5. package/lib/model/markdown-file.d.ts +1 -0
  6. package/lib/model/markdown-file.js +3 -0
  7. package/lib/model/markdown-file.js.map +1 -1
  8. package/lib/model/markdown-generation-util/field-declaration-util.d.ts +1 -1
  9. package/lib/model/markdown-generation-util/field-declaration-util.js +33 -12
  10. package/lib/model/markdown-generation-util/field-declaration-util.js.map +1 -1
  11. package/lib/model/markdown-generation-util/method-declaration-util.d.ts +1 -1
  12. package/lib/model/markdown-generation-util/method-declaration-util.js +1 -2
  13. package/lib/model/markdown-generation-util/method-declaration-util.js.map +1 -1
  14. package/lib/model/markdown-generation-util/type-declaration-util.d.ts +1 -1
  15. package/lib/model/markdown-generation-util/type-declaration-util.js +1 -2
  16. package/lib/model/markdown-generation-util/type-declaration-util.js.map +1 -1
  17. package/lib/model/markdown-type-file.d.ts +9 -3
  18. package/lib/model/markdown-type-file.js +65 -10
  19. package/lib/model/markdown-type-file.js.map +1 -1
  20. package/package.json +2 -2
  21. package/src/model/markdown-file.ts +4 -0
  22. package/src/model/markdown-generation-util/field-declaration-util.ts +33 -11
  23. package/src/model/markdown-generation-util/method-declaration-util.ts +0 -2
  24. package/src/model/markdown-generation-util/type-declaration-util.ts +1 -3
  25. package/src/model/markdown-type-file.ts +75 -9
package/README.md CHANGED
@@ -109,15 +109,15 @@ apexdocs-generate
109
109
 
110
110
  The CLI supports the following parameters:
111
111
 
112
- | Parameter | Alias | Description | Default | Required |
113
- | ----------------- | ----- | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------- | -------- |
114
- | --sourceDir | -s | The directory location which contains your apex .cls classes. | N/A | Yes |
115
- | --targetDir | -t | The directory location where documentation will be generated to. | `docs` | No |
116
- | --recursive | -r | Whether .cls classes will be searched for recursively in the directory provided. | `true` | No |
117
- | --scope | -p | A list of scopes to document. Values should be separated by a space, e.g --scope public private | `global namespaceaccessible public` | No |
118
- | --targetGenerator | -g | Define the static file generator for which the documents will be created. Currently supports jekyll and docsify. | `jekyll` | No |
119
- | --configPath | -c | The path to the JSON configuration file that defines the structure of the documents to docGenerator. | N/A | No |
120
- | --group | -o | Define whether the generated files should be grouped by the @group tag on the top level classes. | `true` | No |
112
+ | Parameter | Alias | Description | Default | Required |
113
+ | ----------------- | ----- |--------------------------------------------------------------------------------------------------------------------------| ----------------------------------- | -------- |
114
+ | --sourceDir | -s | The directory location which contains your apex .cls classes. | N/A | Yes |
115
+ | --targetDir | -t | The directory location where documentation will be generated to. | `docs` | No |
116
+ | --recursive | -r | Whether .cls classes will be searched for recursively in the directory provided. | `true` | No |
117
+ | --scope | -p | A list of scopes to document. Values should be separated by a space, e.g --scope public private | `global namespaceaccessible public` | No |
118
+ | --targetGenerator | -g | Define the static file generator for which the documents will be created. Currently supports jekyll and docsify. | `jekyll` | No |
119
+ | --configPath | -c | (Only versions 1.X) The path to the JSON configuration file that defines the structure of the documents to docGenerator. | N/A | No |
120
+ | --group | -o | (Only versions 1.X) Define whether the generated files should be grouped by the @group tag on the top level classes. | `true` | No |
121
121
 
122
122
  #### Configuration File
123
123
 
@@ -314,6 +314,34 @@ The following tags are supported on the method level:
314
314
  public static Object call(String action) {
315
315
  ```
316
316
 
317
+ ### Grouping Declarations Within A Class
318
+
319
+ A class might have members that should be grouped together. For example, you can have a class for constants with
320
+ groups of constants that should be grouped together because they share a common behavior (e.g. different groups
321
+ of constants representing the possible values for different picklists.)
322
+
323
+ You can group things together within a class by using the following syntax:
324
+ ```apex
325
+ // @start-group Group Name or Description
326
+ public static final String CONSTANT_FOO = 'Foo';
327
+ public static final String CONSTANT_BAR = 'Bar';
328
+ // @end-group
329
+ ```
330
+
331
+ Groups of members are displayed together under their own subsection after its name or description.
332
+
333
+ Some notes about grouping:
334
+ * This is only supported on classes, NOT enums and interfaces
335
+ * Supports
336
+ * Properties
337
+ * Fields (variables and constants)
338
+ * Constructors
339
+ * Methods
340
+ * BUT only members of the same type are grouped together. For example,
341
+ if you have a group that contains properties and methods the properties will be grouped together under Properties -> Group Name, and the methods will be grouped together under Methods -> Group Name
342
+ * Does not support inner types (inner classes, interfaces, and enums)
343
+ * It is necessary to use `// @end-group` whenever a group has been started, otherwise a parsing error will be raised for that file.
344
+
317
345
  ### Inline linking
318
346
 
319
347
  Apexdocs allows you to reference other classes from anywhere in your docs, and automatically creates a link to that
package/ROADMAP.md CHANGED
@@ -14,3 +14,5 @@ files, instead of just overriding
14
14
  [] Add configuration setting that allows someone to set the "namespace"
15
15
 
16
16
  [] Homepage support similar to what docsify does
17
+
18
+ [] TW template
@@ -17,13 +17,14 @@ This is a class description. This class relates to [SampleInterface](/Sample-Int
17
17
  **See** [SampleInterface](/Sample-Interfaces/SampleInterface.md)
18
18
 
19
19
  ## Constructors
20
- ### `SampleClass()`
20
+ ### My Super Group
21
+ ##### `SampleClass()`
21
22
 
22
23
  `NAMESPACEACCESSIBLE`
23
24
 
24
25
  Constructs a SampleClass without any arguments. This relates to [SampleInterface](/Sample-Interfaces/SampleInterface.md)
25
26
 
26
- #### Throws
27
+ ###### Throws
27
28
  |Exception|Description|
28
29
  |---|---|
29
30
  |`ExcName`|some exception|
@@ -33,41 +34,45 @@ Constructs a SampleClass without any arguments. This relates to [SampleInterface
33
34
 
34
35
  **See** [SampleInterface](/Sample-Interfaces/SampleInterface.md)
35
36
 
36
- #### Example
37
+ ###### Example
37
38
  ```apex
38
39
  // Example
39
40
  SampleClass sampleInstance = new SampleClass();
40
41
  ```
41
42
 
42
- ### `SampleClass(String argument)`
43
+ ---
44
+ ### Other
45
+ ##### `SampleClass(String argument)`
43
46
 
44
47
  Constructs a SampleClass with an argument.
45
48
 
46
- #### Parameters
49
+ ###### Parameters
47
50
  |Param|Description|
48
51
  |---|---|
49
52
  |`argument`|Argument definition|
50
53
  ---
51
54
  ## Fields
55
+ ### Common Constants
52
56
 
53
- ### `A_CONSTANT` → `String`
54
-
55
- This is a constant.
56
-
57
- ### `someVariable` → `String`
57
+ * `ANOTHER_CONSTANT` → `String`
58
+ * `A_CONSTANT` → `String` [`NAMESPACEACCESSIBLE` ] - This is a constant.
59
+ ---
60
+ ### Other variables
58
61
 
62
+ * `someVariable` → `String`
59
63
  ---
60
64
  ## Properties
61
65
 
62
66
  ### `AnotherProp` → `Decimal`
63
67
 
64
- `AURAENABLED`
68
+ `AURAENABLED`
65
69
 
66
70
  This is a Decimal property.
67
71
 
68
72
  ### `MyProp` → `String`
69
73
 
70
- `AURAENABLED`
74
+ `AURAENABLED`
75
+ `DEPRECATED`
71
76
 
72
77
  This is a String property.
73
78
 
@@ -122,6 +127,7 @@ Inner class belonging to SampleClass.
122
127
 
123
128
  ##### `InnerProp` → `String`
124
129
 
130
+
125
131
  Description of the inner property.
126
132
 
127
133
  ---
@@ -140,6 +146,7 @@ Inner class belonging to SampleClass.
140
146
 
141
147
  ##### `InnerProp` → `String`
142
148
 
149
+
143
150
  Description of the inner property.
144
151
 
145
152
  ---
@@ -19,12 +19,20 @@ public with sharing class SampleClass {
19
19
  C
20
20
  }
21
21
 
22
+ // @start-group Common Constants
22
23
  /**
23
24
  * @description This is a constant.
24
25
  */
26
+ @NamespaceAccessible
25
27
  public static final String A_CONSTANT = 'My Constant Value';
28
+ public static final String ANOTHER_CONSTANT = 'My Constant Value';
29
+ // @end-group
30
+
31
+ // @start-group Other variables
26
32
  public String someVariable = 'test';
33
+ // @end-group
27
34
 
35
+ // @start-group My Super Group
28
36
  /**
29
37
  * @description Constructs a SampleClass without any arguments. This relates to {@link SampleInterface}
30
38
  * @throws ExcName some exception
@@ -38,6 +46,7 @@ public with sharing class SampleClass {
38
46
  public SampleClass() {
39
47
  System.debug('Constructor');
40
48
  }
49
+ // @end-group
41
50
 
42
51
  /**
43
52
  * @description Constructs a SampleClass with an argument.
@@ -73,6 +82,7 @@ public with sharing class SampleClass {
73
82
  * @description This is a String property.
74
83
  */
75
84
  @AuraEnabled
85
+ @Deprecated
76
86
  public String MyProp { get; set; }
77
87
 
78
88
  /**
@@ -7,5 +7,6 @@ export declare class MarkdownFile extends File {
7
7
  addHorizontalRule(): void;
8
8
  initializeTable(...headers: string[]): void;
9
9
  addTableRow(...columns: string[]): void;
10
+ addListItem(text: string): void;
10
11
  protected static replaceInlineLinks(text: string): string;
11
12
  }
@@ -49,6 +49,9 @@ class MarkdownFile extends file_1.File {
49
49
  this._contents += column + '|';
50
50
  });
51
51
  }
52
+ addListItem(text) {
53
+ this._contents += `* ${text}`;
54
+ }
52
55
  static replaceInlineLinks(text) {
53
56
  // Parsing text to extract possible linking classes.
54
57
  const possibleLinks = text.match(/<<.*?>>/g);
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-file.js","sourceRoot":"","sources":["../../src/model/markdown-file.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAC9B,kGAAyF;AAEzF,MAAa,YAAa,SAAQ,WAAI;IACpC,aAAa;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,KAAK,GAAG,CAAC;QAC9B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,KAAK,IAAI,GAAG,CAAC;SACd;QAED,KAAK,IAAI,GAAG,CAAC;QACb,KAAK,IAAI,IAAI,CAAC;QACd,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;QACxB,MAAM,cAAc,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,GAAG,OAAiB;QAClC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;QACtB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,GAAG,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;QACtB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,GAAG,OAAiB;QAC9B,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;QACtB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,GAAG,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAES,MAAM,CAAC,kBAAkB,CAAC,IAAY;QAC9C,oDAAoD;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7C,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACtC,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,oCAAwB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACvG,CAAC,EAAE;QAEH,+CAA+C;QAC/C,MAAM,eAAe,GAAG,eAAe,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC;QACV,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,GAAG;YACD,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,KAAK,EAAE;gBACT,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACrB;SACF,QAAQ,KAAK,EAAE;QAEhB,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE;YAClC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,oCAAwB,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvG;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAhFD,oCAgFC"}
1
+ {"version":3,"file":"markdown-file.js","sourceRoot":"","sources":["../../src/model/markdown-file.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { MarkdownFile } from '../markdown-file';
2
2
  import { FieldMirror, PropertyMirror } from '@cparra/apex-reflection';
3
- export declare function declareField(title: string, markdownFile: MarkdownFile, fields: FieldMirror[] | PropertyMirror[], startingHeadingLevel: number): void;
3
+ export declare function declareField(markdownFile: MarkdownFile, fields: FieldMirror[] | PropertyMirror[], startingHeadingLevel: number, grouped?: boolean): void;
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.declareField = void 0;
4
- function declareField(title, markdownFile, fields, startingHeadingLevel) {
5
- markdownFile.addTitle(title, startingHeadingLevel + 1);
4
+ function declareField(markdownFile, fields, startingHeadingLevel, grouped = false) {
6
5
  markdownFile.addBlankLine();
7
6
  fields
8
7
  .sort((propA, propB) => {
@@ -13,22 +12,44 @@ function declareField(title, markdownFile, fields, startingHeadingLevel) {
13
12
  return 0;
14
13
  })
15
14
  .forEach((propertyModel) => {
16
- addFieldSection(markdownFile, propertyModel, startingHeadingLevel);
15
+ addFieldSection(markdownFile, propertyModel, startingHeadingLevel, grouped);
17
16
  });
18
17
  markdownFile.addHorizontalRule();
19
18
  }
20
19
  exports.declareField = declareField;
21
- function addFieldSection(markdownFile, propertyModel, startingHeadingLevel) {
22
- var _a;
23
- markdownFile.addTitle(`\`${propertyModel.name}\` → \`${propertyModel.type}\``, startingHeadingLevel + 2);
24
- propertyModel.annotations.forEach((annotation) => {
20
+ function addFieldSection(markdownFile, mirrorModel, startingHeadingLevel, grouped) {
21
+ var _a, _b, _c;
22
+ if (!grouped) {
23
+ markdownFile.addTitle(`\`${mirrorModel.name}\` \`${mirrorModel.type}\``, startingHeadingLevel + 2);
25
24
  markdownFile.addBlankLine();
26
- markdownFile.addText(`\`${annotation.type.toUpperCase()}\``);
27
- });
28
- if ((_a = propertyModel.docComment) === null || _a === void 0 ? void 0 : _a.description) {
25
+ mirrorModel.annotations.forEach((annotation) => {
26
+ markdownFile.addText(`\`${annotation.type.toUpperCase()}\` `);
27
+ });
28
+ if ((_a = mirrorModel.docComment) === null || _a === void 0 ? void 0 : _a.description) {
29
+ markdownFile.addBlankLine();
30
+ markdownFile.addText(mirrorModel.docComment.description);
31
+ }
32
+ markdownFile.addBlankLine();
33
+ }
34
+ else {
35
+ let annotations = '';
36
+ const hasAnnotations = !!mirrorModel.annotations.length;
37
+ if (hasAnnotations) {
38
+ annotations += ' [';
39
+ }
40
+ mirrorModel.annotations.forEach((annotation) => {
41
+ annotations += `\`${annotation.type.toUpperCase()}\` `;
42
+ });
43
+ if (hasAnnotations) {
44
+ annotations += ']';
45
+ }
46
+ // If grouped we want to display these as a list
47
+ let description = '';
48
+ if ((_b = mirrorModel.docComment) === null || _b === void 0 ? void 0 : _b.description) {
49
+ description = ` - ${(_c = mirrorModel.docComment) === null || _c === void 0 ? void 0 : _c.description}`;
50
+ }
51
+ markdownFile.addListItem(`\`${mirrorModel.name}\` → \`${mirrorModel.type}\`${annotations} ${description}`);
29
52
  markdownFile.addBlankLine();
30
- markdownFile.addText(propertyModel.docComment.description);
31
53
  }
32
- markdownFile.addBlankLine();
33
54
  }
34
55
  //# sourceMappingURL=field-declaration-util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field-declaration-util.js","sourceRoot":"","sources":["../../../src/model/markdown-generation-util/field-declaration-util.ts"],"names":[],"mappings":";;;AAGA,SAAgB,YAAY,CAC1B,KAAa,EACb,YAA0B,EAC1B,MAAwC,EACxC,oBAA4B;IAE5B,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,CAAC,CAAC,CAAC;IACvD,YAAY,CAAC,YAAY,EAAE,CAAC;IAC5B,MAAM;SACH,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;SACD,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QACzB,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEL,YAAY,CAAC,iBAAiB,EAAE,CAAC;AACnC,CAAC;AAnBD,oCAmBC;AAED,SAAS,eAAe,CACtB,YAA0B,EAC1B,aAA2C,EAC3C,oBAA4B;;IAE5B,YAAY,CAAC,QAAQ,CAAC,KAAK,aAAa,CAAC,IAAI,UAAU,aAAa,CAAC,IAAI,IAAI,EAAE,oBAAoB,GAAG,CAAC,CAAC,CAAC;IAEzG,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QAC/C,YAAY,CAAC,YAAY,EAAE,CAAC;QAC5B,YAAY,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,UAAI,aAAa,CAAC,UAAU,0CAAE,WAAW,EAAE;QACzC,YAAY,CAAC,YAAY,EAAE,CAAC;QAC5B,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;KAC5D;IACD,YAAY,CAAC,YAAY,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"field-declaration-util.js","sourceRoot":"","sources":["../../../src/model/markdown-generation-util/field-declaration-util.ts"],"names":[],"mappings":";;;AAGA,SAAgB,YAAY,CAC1B,YAA0B,EAC1B,MAAwC,EACxC,oBAA4B,EAC5B,OAAO,GAAG,KAAK;IAEf,YAAY,CAAC,YAAY,EAAE,CAAC;IAC5B,MAAM;SACH,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;SACD,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QACzB,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEL,YAAY,CAAC,iBAAiB,EAAE,CAAC;AACnC,CAAC;AAlBD,oCAkBC;AAED,SAAS,eAAe,CACtB,YAA0B,EAC1B,WAAyC,EACzC,oBAA4B,EAC5B,OAAgB;;IAEhB,IAAI,CAAC,OAAO,EAAE;QACZ,YAAY,CAAC,QAAQ,CAAC,KAAK,WAAW,CAAC,IAAI,UAAU,WAAW,CAAC,IAAI,IAAI,EAAE,oBAAoB,GAAG,CAAC,CAAC,CAAC;QACrG,YAAY,CAAC,YAAY,EAAE,CAAC;QAE5B,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAC7C,YAAY,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,UAAI,WAAW,CAAC,UAAU,0CAAE,WAAW,EAAE;YACvC,YAAY,CAAC,YAAY,EAAE,CAAC;YAC5B,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;SAC1D;QACD,YAAY,CAAC,YAAY,EAAE,CAAC;KAC7B;SAAM;QACL,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC;QACxD,IAAI,cAAc,EAAE;YAClB,WAAW,IAAI,IAAI,CAAC;SACrB;QACD,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAC7C,WAAW,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;QACzD,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,EAAE;YAClB,WAAW,IAAI,GAAG,CAAC;SACpB;QAED,gDAAgD;QAChD,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,UAAI,WAAW,CAAC,UAAU,0CAAE,WAAW,EAAE;YACvC,WAAW,GAAG,MAAM,MAAA,WAAW,CAAC,UAAU,0CAAE,WAAW,EAAE,CAAC;SAC3D;QACD,YAAY,CAAC,WAAW,CAAC,KAAK,WAAW,CAAC,IAAI,UAAU,WAAW,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,EAAE,CAAC,CAAC;QAC3G,YAAY,CAAC,YAAY,EAAE,CAAC;KAC7B;AACH,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { ConstructorMirror, MethodMirror } from '@cparra/apex-reflection';
2
2
  import { MarkdownFile } from '../markdown-file';
3
- export declare function declareMethod(title: string, markdownFile: MarkdownFile, methods: ConstructorMirror[] | MethodMirror[], startingHeadingLevel: number, className?: string): void;
3
+ export declare function declareMethod(markdownFile: MarkdownFile, methods: ConstructorMirror[] | MethodMirror[], startingHeadingLevel: number, className?: string): void;
@@ -2,8 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.declareMethod = void 0;
4
4
  const doc_comment_annotation_util_1 = require("./doc-comment-annotation-util");
5
- function declareMethod(title, markdownFile, methods, startingHeadingLevel, className = '') {
6
- markdownFile.addTitle(title, startingHeadingLevel + 1);
5
+ function declareMethod(markdownFile, methods, startingHeadingLevel, className = '') {
7
6
  methods.forEach((currentMethod) => {
8
7
  var _a, _b;
9
8
  const signatureName = isMethod(currentMethod) ? currentMethod.name : className;
@@ -1 +1 @@
1
- {"version":3,"file":"method-declaration-util.js","sourceRoot":"","sources":["../../../src/model/markdown-generation-util/method-declaration-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"method-declaration-util.js","sourceRoot":"","sources":["../../../src/model/markdown-generation-util/method-declaration-util.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { MarkdownFile } from '../markdown-file';
2
2
  import { Type } from '@cparra/apex-reflection';
3
- export declare function declareType(markdownFile: MarkdownFile, typeMirror: Type, startingHeadingLevel: number): void;
3
+ export declare function declareType(markdownFile: MarkdownFile, typeMirror: Type): void;
@@ -2,9 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.declareType = void 0;
4
4
  const doc_comment_annotation_util_1 = require("./doc-comment-annotation-util");
5
- function declareType(markdownFile, typeMirror, startingHeadingLevel) {
5
+ function declareType(markdownFile, typeMirror) {
6
6
  var _a;
7
- markdownFile.addTitle(typeMirror.name, startingHeadingLevel);
8
7
  typeMirror.annotations.forEach((currentAnnotation) => {
9
8
  markdownFile.addBlankLine();
10
9
  markdownFile.addText(`\`${currentAnnotation.type.toUpperCase()}\``);
@@ -1 +1 @@
1
- {"version":3,"file":"type-declaration-util.js","sourceRoot":"","sources":["../../../src/model/markdown-generation-util/type-declaration-util.ts"],"names":[],"mappings":";;;AACA,+EAA+E;AAG/E,SAAgB,WAAW,CAAC,YAA0B,EAAE,UAAgB,EAAE,oBAA4B;;IACpG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAE7D,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,iBAA6B,EAAE,EAAE;QAC/D,YAAY,CAAC,YAAY,EAAE,CAAC;QAC5B,YAAY,CAAC,OAAO,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,UAAI,UAAU,CAAC,UAAU,0CAAE,WAAW,EAAE;QACtC,YAAY,CAAC,YAAY,EAAE,CAAC;QAC5B,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACxD,YAAY,CAAC,YAAY,EAAE,CAAC;KAC7B;IAED,4DAA8B,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAfD,kCAeC"}
1
+ {"version":3,"file":"type-declaration-util.js","sourceRoot":"","sources":["../../../src/model/markdown-generation-util/type-declaration-util.ts"],"names":[],"mappings":";;;AACA,+EAA+E;AAG/E,SAAgB,WAAW,CAAC,YAA0B,EAAE,UAAgB;;IACtE,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,iBAA6B,EAAE,EAAE;QAC/D,YAAY,CAAC,YAAY,EAAE,CAAC;QAC5B,YAAY,CAAC,OAAO,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,UAAI,UAAU,CAAC,UAAU,0CAAE,WAAW,EAAE;QACtC,YAAY,CAAC,YAAY,EAAE,CAAC;QAC5B,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACxD,YAAY,CAAC,YAAY,EAAE,CAAC;KAC7B;IAED,4DAA8B,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAbD,kCAaC"}
@@ -3,10 +3,10 @@ import { WalkerListener } from '../service/walkers/walker';
3
3
  import { MarkdownFile } from './markdown-file';
4
4
  export declare class MarkdownTypeFile extends MarkdownFile implements WalkerListener {
5
5
  type: Type;
6
- startingHeadingLevel: number;
7
- constructor(type: Type, startingHeadingLevel?: number, headerContent?: string);
6
+ headingLevel: number;
7
+ constructor(type: Type, headingLevel?: number, headerContent?: string);
8
8
  addText(text: string, encodeHtml?: boolean): void;
9
- onTypeDeclaration(typeMirror: Type, headingLevel?: 1): void;
9
+ onTypeDeclaration(typeMirror: Type): void;
10
10
  onConstructorDeclaration(className: string, constructors: ConstructorMirror[]): void;
11
11
  onFieldsDeclaration(fields: FieldMirror[]): void;
12
12
  onPropertiesDeclaration(properties: PropertyMirror[]): void;
@@ -15,4 +15,10 @@ export declare class MarkdownTypeFile extends MarkdownFile implements WalkerList
15
15
  onInnerClassesDeclaration(classes: ClassMirror[]): void;
16
16
  onInnerInterfacesDeclaration(interfaces: InterfaceMirror[]): void;
17
17
  private addInnerTypes;
18
+ private hasGroupings;
19
+ private declareMethodWithGroupings;
20
+ private declareFieldOrProperty;
21
+ private startGroup;
22
+ private endGroup;
23
+ private group;
18
24
  }
@@ -6,10 +6,10 @@ const markdown_file_1 = require("./markdown-file");
6
6
  const markdown_generation_util_1 = require("./markdown-generation-util");
7
7
  const class_file_generatorHelper_1 = require("../transpiler/markdown/class-file-generatorHelper");
8
8
  class MarkdownTypeFile extends markdown_file_1.MarkdownFile {
9
- constructor(type, startingHeadingLevel = 1, headerContent) {
9
+ constructor(type, headingLevel = 1, headerContent) {
10
10
  super(`${type.name}`, class_file_generatorHelper_1.default.getSanitizedGroup(type));
11
11
  this.type = type;
12
- this.startingHeadingLevel = startingHeadingLevel;
12
+ this.headingLevel = headingLevel;
13
13
  if (headerContent) {
14
14
  this.addText(headerContent);
15
15
  }
@@ -20,20 +20,25 @@ class MarkdownTypeFile extends markdown_file_1.MarkdownFile {
20
20
  text = markdown_file_1.MarkdownFile.replaceInlineLinks(text);
21
21
  super.addText(text, encodeHtml);
22
22
  }
23
- onTypeDeclaration(typeMirror, headingLevel) {
24
- markdown_generation_util_1.declareType(this, typeMirror, this.startingHeadingLevel);
23
+ onTypeDeclaration(typeMirror) {
24
+ this.addTitle(typeMirror.name, this.headingLevel);
25
+ markdown_generation_util_1.declareType(this, typeMirror);
25
26
  }
26
27
  onConstructorDeclaration(className, constructors) {
27
- markdown_generation_util_1.declareMethod('Constructors', this, constructors, this.startingHeadingLevel, className);
28
+ this.addTitle('Constructors', this.headingLevel + 1);
29
+ this.declareMethodWithGroupings(constructors, className);
28
30
  }
29
31
  onFieldsDeclaration(fields) {
30
- markdown_generation_util_1.declareField('Fields', this, fields, this.startingHeadingLevel);
32
+ this.addTitle('Fields', this.headingLevel + 1);
33
+ this.declareFieldOrProperty(fields);
31
34
  }
32
35
  onPropertiesDeclaration(properties) {
33
- markdown_generation_util_1.declareField('Properties', this, properties, this.startingHeadingLevel);
36
+ this.addTitle('Properties', this.headingLevel + 1);
37
+ this.declareFieldOrProperty(properties);
34
38
  }
35
39
  onMethodsDeclaration(methods) {
36
- markdown_generation_util_1.declareMethod('Methods', this, methods, this.startingHeadingLevel);
40
+ this.addTitle('Methods', this.headingLevel + 1);
41
+ this.declareMethodWithGroupings(methods);
37
42
  }
38
43
  onInnerEnumsDeclaration(enums) {
39
44
  this.addInnerTypes('Enums', enums);
@@ -45,7 +50,7 @@ class MarkdownTypeFile extends markdown_file_1.MarkdownFile {
45
50
  this.addInnerTypes('Interfaces', interfaces, false);
46
51
  }
47
52
  addInnerTypes(title, types, addSeparator = true) {
48
- this.addTitle(title, this.startingHeadingLevel + 1);
53
+ this.addTitle(title, this.headingLevel + 1);
49
54
  types
50
55
  .sort((typeA, typeB) => {
51
56
  if (typeA.name < typeB.name)
@@ -55,13 +60,63 @@ class MarkdownTypeFile extends markdown_file_1.MarkdownFile {
55
60
  return 0;
56
61
  })
57
62
  .forEach((currentType) => {
58
- const innerFile = new MarkdownTypeFile(currentType, this.startingHeadingLevel + 2);
63
+ const innerFile = new MarkdownTypeFile(currentType, this.headingLevel + 2);
59
64
  this.addText(innerFile._contents);
60
65
  });
61
66
  if (addSeparator) {
62
67
  this.addHorizontalRule();
63
68
  }
64
69
  }
70
+ hasGroupings(groupAware) {
71
+ return !!groupAware.find((current) => !!current.group);
72
+ }
73
+ declareMethodWithGroupings(methods, className = '') {
74
+ const hasGroupings = this.hasGroupings(methods);
75
+ if (!hasGroupings) {
76
+ markdown_generation_util_1.declareMethod(this, methods, this.headingLevel, className);
77
+ }
78
+ else {
79
+ const groupedConstructors = this.group(methods);
80
+ for (const key in groupedConstructors) {
81
+ this.startGroup(key);
82
+ const constructorsForGroup = groupedConstructors[key];
83
+ markdown_generation_util_1.declareMethod(this, constructorsForGroup, this.headingLevel, className);
84
+ this.endGroup();
85
+ }
86
+ }
87
+ }
88
+ declareFieldOrProperty(fieldsOrProperties) {
89
+ const hasGroupings = this.hasGroupings(fieldsOrProperties);
90
+ if (!hasGroupings) {
91
+ markdown_generation_util_1.declareField(this, fieldsOrProperties, this.headingLevel, false);
92
+ }
93
+ else {
94
+ const groupedFields = this.group(fieldsOrProperties);
95
+ for (const key in groupedFields) {
96
+ this.startGroup(key);
97
+ const fieldsForGroup = groupedFields[key];
98
+ markdown_generation_util_1.declareField(this, fieldsForGroup, this.headingLevel, true);
99
+ this.endGroup();
100
+ }
101
+ }
102
+ }
103
+ startGroup(groupName) {
104
+ this.headingLevel = this.headingLevel + 2;
105
+ this.addTitle(groupName, this.headingLevel);
106
+ }
107
+ endGroup() {
108
+ this.headingLevel = this.headingLevel - 2;
109
+ }
110
+ group(list) {
111
+ return list.reduce((groups, item) => {
112
+ var _a;
113
+ const groupName = (_a = item.group) !== null && _a !== void 0 ? _a : 'Other';
114
+ const group = groups[groupName] || [];
115
+ group.push(item);
116
+ groups[groupName] = group;
117
+ return groups;
118
+ }, {});
119
+ }
65
120
  }
66
121
  exports.MarkdownTypeFile = MarkdownTypeFile;
67
122
  //# sourceMappingURL=markdown-type-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-type-file.js","sourceRoot":"","sources":["../../src/model/markdown-type-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown-type-file.js","sourceRoot":"","sources":["../../src/model/markdown-type-file.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cparra/apexdocs",
3
- "version": "2.0.2",
3
+ "version": "2.1.0",
4
4
  "description": "Library with CLI capabilities to generate documentation for Salesforce Apex classes.",
5
5
  "keywords": [
6
6
  "apex",
@@ -63,7 +63,7 @@
63
63
  ]
64
64
  },
65
65
  "dependencies": {
66
- "@cparra/apex-reflection": "^1.0.0",
66
+ "@cparra/apex-reflection": "^1.1.1",
67
67
  "chalk": "^4.1.2",
68
68
  "html-entities": "^2.3.2",
69
69
  "yargs": "^16.0.3"
@@ -55,6 +55,10 @@ export class MarkdownFile extends File {
55
55
  });
56
56
  }
57
57
 
58
+ addListItem(text: string) {
59
+ this._contents += `* ${text}`;
60
+ }
61
+
58
62
  protected static replaceInlineLinks(text: string) {
59
63
  // Parsing text to extract possible linking classes.
60
64
  const possibleLinks = text.match(/<<.*?>>/g);
@@ -2,12 +2,11 @@ import { MarkdownFile } from '../markdown-file';
2
2
  import { FieldMirror, PropertyMirror } from '@cparra/apex-reflection';
3
3
 
4
4
  export function declareField(
5
- title: string,
6
5
  markdownFile: MarkdownFile,
7
6
  fields: FieldMirror[] | PropertyMirror[],
8
7
  startingHeadingLevel: number,
8
+ grouped = false,
9
9
  ) {
10
- markdownFile.addTitle(title, startingHeadingLevel + 1);
11
10
  markdownFile.addBlankLine();
12
11
  fields
13
12
  .sort((propA, propB) => {
@@ -16,7 +15,7 @@ export function declareField(
16
15
  return 0;
17
16
  })
18
17
  .forEach((propertyModel) => {
19
- addFieldSection(markdownFile, propertyModel, startingHeadingLevel);
18
+ addFieldSection(markdownFile, propertyModel, startingHeadingLevel, grouped);
20
19
  });
21
20
 
22
21
  markdownFile.addHorizontalRule();
@@ -24,19 +23,42 @@ export function declareField(
24
23
 
25
24
  function addFieldSection(
26
25
  markdownFile: MarkdownFile,
27
- propertyModel: FieldMirror | PropertyMirror,
26
+ mirrorModel: FieldMirror | PropertyMirror,
28
27
  startingHeadingLevel: number,
28
+ grouped: boolean,
29
29
  ) {
30
- markdownFile.addTitle(`\`${propertyModel.name}\` → \`${propertyModel.type}\``, startingHeadingLevel + 2);
30
+ if (!grouped) {
31
+ markdownFile.addTitle(`\`${mirrorModel.name}\` → \`${mirrorModel.type}\``, startingHeadingLevel + 2);
32
+ markdownFile.addBlankLine();
33
+
34
+ mirrorModel.annotations.forEach((annotation) => {
35
+ markdownFile.addText(`\`${annotation.type.toUpperCase()}\` `);
36
+ });
31
37
 
32
- propertyModel.annotations.forEach((annotation) => {
38
+ if (mirrorModel.docComment?.description) {
39
+ markdownFile.addBlankLine();
40
+ markdownFile.addText(mirrorModel.docComment.description);
41
+ }
33
42
  markdownFile.addBlankLine();
34
- markdownFile.addText(`\`${annotation.type.toUpperCase()}\``);
35
- });
43
+ } else {
44
+ let annotations = '';
45
+ const hasAnnotations = !!mirrorModel.annotations.length;
46
+ if (hasAnnotations) {
47
+ annotations += ' [';
48
+ }
49
+ mirrorModel.annotations.forEach((annotation) => {
50
+ annotations += `\`${annotation.type.toUpperCase()}\` `;
51
+ });
52
+ if (hasAnnotations) {
53
+ annotations += ']';
54
+ }
36
55
 
37
- if (propertyModel.docComment?.description) {
56
+ // If grouped we want to display these as a list
57
+ let description = '';
58
+ if (mirrorModel.docComment?.description) {
59
+ description = ` - ${mirrorModel.docComment?.description}`;
60
+ }
61
+ markdownFile.addListItem(`\`${mirrorModel.name}\` → \`${mirrorModel.type}\`${annotations} ${description}`);
38
62
  markdownFile.addBlankLine();
39
- markdownFile.addText(propertyModel.docComment.description);
40
63
  }
41
- markdownFile.addBlankLine();
42
64
  }
@@ -4,13 +4,11 @@ import { ParameterMirror } from '@cparra/apex-reflection/index';
4
4
  import { addCustomDocCommentAnnotations } from './doc-comment-annotation-util';
5
5
 
6
6
  export function declareMethod(
7
- title: string,
8
7
  markdownFile: MarkdownFile,
9
8
  methods: ConstructorMirror[] | MethodMirror[],
10
9
  startingHeadingLevel: number,
11
10
  className = '',
12
11
  ): void {
13
- markdownFile.addTitle(title, startingHeadingLevel + 1);
14
12
  methods.forEach((currentMethod) => {
15
13
  const signatureName = isMethod(currentMethod) ? (currentMethod as MethodMirror).name : className;
16
14
  markdownFile.addTitle(`\`${buildSignature(signatureName, currentMethod)}\``, startingHeadingLevel + 2);
@@ -2,9 +2,7 @@ import { MarkdownFile } from '../markdown-file';
2
2
  import { addCustomDocCommentAnnotations } from './doc-comment-annotation-util';
3
3
  import { Annotation, Type } from '@cparra/apex-reflection';
4
4
 
5
- export function declareType(markdownFile: MarkdownFile, typeMirror: Type, startingHeadingLevel: number): void {
6
- markdownFile.addTitle(typeMirror.name, startingHeadingLevel);
7
-
5
+ export function declareType(markdownFile: MarkdownFile, typeMirror: Type): void {
8
6
  typeMirror.annotations.forEach((currentAnnotation: Annotation) => {
9
7
  markdownFile.addBlankLine();
10
8
  markdownFile.addText(`\`${currentAnnotation.type.toUpperCase()}\``);
@@ -14,8 +14,16 @@ import { MarkdownFile } from './markdown-file';
14
14
  import { declareType, declareMethod, declareField } from './markdown-generation-util';
15
15
  import ClassFileGeneratorHelper from '../transpiler/markdown/class-file-generatorHelper';
16
16
 
17
+ interface GroupAware {
18
+ group?: string;
19
+ }
20
+
21
+ interface GroupMap {
22
+ [key: string]: GroupAware[];
23
+ }
24
+
17
25
  export class MarkdownTypeFile extends MarkdownFile implements WalkerListener {
18
- constructor(public type: Type, public startingHeadingLevel: number = 1, headerContent?: string) {
26
+ constructor(public type: Type, public headingLevel: number = 1, headerContent?: string) {
19
27
  super(`${type.name}`, ClassFileGeneratorHelper.getSanitizedGroup(type));
20
28
  if (headerContent) {
21
29
  this.addText(headerContent);
@@ -29,24 +37,29 @@ export class MarkdownTypeFile extends MarkdownFile implements WalkerListener {
29
37
  super.addText(text, encodeHtml);
30
38
  }
31
39
 
32
- public onTypeDeclaration(typeMirror: Type, headingLevel?: 1): void {
33
- declareType(this, typeMirror, this.startingHeadingLevel);
40
+ public onTypeDeclaration(typeMirror: Type): void {
41
+ this.addTitle(typeMirror.name, this.headingLevel);
42
+ declareType(this, typeMirror);
34
43
  }
35
44
 
36
45
  public onConstructorDeclaration(className: string, constructors: ConstructorMirror[]): void {
37
- declareMethod('Constructors', this, constructors, this.startingHeadingLevel, className);
46
+ this.addTitle('Constructors', this.headingLevel + 1);
47
+ this.declareMethodWithGroupings(constructors, className);
38
48
  }
39
49
 
40
50
  public onFieldsDeclaration(fields: FieldMirror[]): void {
41
- declareField('Fields', this, fields, this.startingHeadingLevel);
51
+ this.addTitle('Fields', this.headingLevel + 1);
52
+ this.declareFieldOrProperty(fields);
42
53
  }
43
54
 
44
55
  public onPropertiesDeclaration(properties: PropertyMirror[]): void {
45
- declareField('Properties', this, properties, this.startingHeadingLevel);
56
+ this.addTitle('Properties', this.headingLevel + 1);
57
+ this.declareFieldOrProperty(properties);
46
58
  }
47
59
 
48
60
  public onMethodsDeclaration(methods: MethodMirror[]): void {
49
- declareMethod('Methods', this, methods, this.startingHeadingLevel);
61
+ this.addTitle('Methods', this.headingLevel + 1);
62
+ this.declareMethodWithGroupings(methods);
50
63
  }
51
64
 
52
65
  public onInnerEnumsDeclaration(enums: EnumMirror[]): void {
@@ -62,7 +75,7 @@ export class MarkdownTypeFile extends MarkdownFile implements WalkerListener {
62
75
  }
63
76
 
64
77
  private addInnerTypes(title: string, types: Type[], addSeparator = true) {
65
- this.addTitle(title, this.startingHeadingLevel + 1);
78
+ this.addTitle(title, this.headingLevel + 1);
66
79
  types
67
80
  .sort((typeA, typeB) => {
68
81
  if (typeA.name < typeB.name) return -1;
@@ -70,11 +83,64 @@ export class MarkdownTypeFile extends MarkdownFile implements WalkerListener {
70
83
  return 0;
71
84
  })
72
85
  .forEach((currentType) => {
73
- const innerFile = new MarkdownTypeFile(currentType, this.startingHeadingLevel + 2);
86
+ const innerFile = new MarkdownTypeFile(currentType, this.headingLevel + 2);
74
87
  this.addText(innerFile._contents);
75
88
  });
76
89
  if (addSeparator) {
77
90
  this.addHorizontalRule();
78
91
  }
79
92
  }
93
+
94
+ private hasGroupings(groupAware: GroupAware[]): boolean {
95
+ return !!groupAware.find((current) => !!current.group);
96
+ }
97
+
98
+ private declareMethodWithGroupings(methods: ConstructorMirror[] | MethodMirror[], className = ''): void {
99
+ const hasGroupings = this.hasGroupings(methods);
100
+ if (!hasGroupings) {
101
+ declareMethod(this, methods, this.headingLevel, className);
102
+ } else {
103
+ const groupedConstructors = this.group(methods);
104
+ for (const key in groupedConstructors) {
105
+ this.startGroup(key);
106
+ const constructorsForGroup = groupedConstructors[key] as ConstructorMirror[];
107
+ declareMethod(this, constructorsForGroup, this.headingLevel, className);
108
+ this.endGroup();
109
+ }
110
+ }
111
+ }
112
+
113
+ private declareFieldOrProperty(fieldsOrProperties: FieldMirror[] | PropertyMirror[]): void {
114
+ const hasGroupings = this.hasGroupings(fieldsOrProperties);
115
+ if (!hasGroupings) {
116
+ declareField(this, fieldsOrProperties, this.headingLevel, false);
117
+ } else {
118
+ const groupedFields = this.group(fieldsOrProperties);
119
+ for (const key in groupedFields) {
120
+ this.startGroup(key);
121
+ const fieldsForGroup = groupedFields[key] as FieldMirror[];
122
+ declareField(this, fieldsForGroup, this.headingLevel, true);
123
+ this.endGroup();
124
+ }
125
+ }
126
+ }
127
+
128
+ private startGroup(groupName: string) {
129
+ this.headingLevel = this.headingLevel + 2;
130
+ this.addTitle(groupName, this.headingLevel);
131
+ }
132
+
133
+ private endGroup() {
134
+ this.headingLevel = this.headingLevel - 2;
135
+ }
136
+
137
+ private group(list: GroupAware[]) {
138
+ return list.reduce((groups: GroupMap, item) => {
139
+ const groupName: string = item.group ?? 'Other';
140
+ const group: GroupAware[] = groups[groupName] || [];
141
+ group.push(item);
142
+ groups[groupName] = group;
143
+ return groups;
144
+ }, {});
145
+ }
80
146
  }