@cparra/apexdocs 1.13.4 → 2.0.0-alpha.14

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 (251) hide show
  1. package/.eslintrc.js +12 -0
  2. package/.prettierrc.js +7 -0
  3. package/README.md +344 -277
  4. package/ROADMAP.md +18 -0
  5. package/docs/Gemfile.lock +1 -1
  6. package/docs/Sample-Classes/SampleClass.md +138 -30
  7. package/docs/Sample-Interfaces/SampleInterface.md +21 -4
  8. package/docs/index.md +1 -9
  9. package/examples/apex/SampleClass.cls +31 -6
  10. package/examples/apex/SampleInterface.cls +3 -2
  11. package/lib/application/Apexdocs.d.ts +11 -0
  12. package/lib/application/Apexdocs.js +41 -0
  13. package/lib/application/Apexdocs.js.map +1 -0
  14. package/lib/cli/generate.js +17 -21
  15. package/lib/cli/generate.js.map +1 -0
  16. package/lib/index.d.ts +1 -1
  17. package/lib/index.js +2 -1
  18. package/lib/index.js.map +1 -0
  19. package/lib/model/file.d.ts +10 -0
  20. package/lib/model/file.js +23 -0
  21. package/lib/model/file.js.map +1 -0
  22. package/lib/model/manifest.d.ts +22 -0
  23. package/lib/model/manifest.js +41 -0
  24. package/lib/model/manifest.js.map +1 -0
  25. package/lib/model/markdown-file.d.ts +10 -0
  26. package/lib/model/markdown-file.js +52 -0
  27. package/lib/model/markdown-file.js.map +1 -0
  28. package/lib/model/markdown-generation-util/field-declaration-util.d.ts +3 -0
  29. package/lib/model/markdown-generation-util/field-declaration-util.js +33 -0
  30. package/lib/model/markdown-generation-util/field-declaration-util.js.map +1 -0
  31. package/lib/model/markdown-generation-util/index.d.ts +3 -0
  32. package/lib/model/markdown-generation-util/index.js +9 -0
  33. package/lib/model/markdown-generation-util/index.js.map +1 -0
  34. package/lib/model/markdown-generation-util/method-declaration-util.d.ts +3 -0
  35. package/lib/model/markdown-generation-util/method-declaration-util.js +97 -0
  36. package/lib/model/markdown-generation-util/method-declaration-util.js.map +1 -0
  37. package/lib/model/markdown-generation-util/type-declaration-util.d.ts +3 -0
  38. package/lib/model/markdown-generation-util/type-declaration-util.js +25 -0
  39. package/lib/model/markdown-generation-util/type-declaration-util.js.map +1 -0
  40. package/lib/model/markdown-home-file.d.ts +11 -0
  41. package/lib/model/markdown-home-file.js +50 -0
  42. package/lib/model/markdown-home-file.js.map +1 -0
  43. package/lib/model/markdown-type-file.d.ts +17 -0
  44. package/lib/model/markdown-type-file.js +62 -0
  45. package/lib/model/markdown-type-file.js.map +1 -0
  46. package/lib/service/apex-file-reader.d.ts +13 -0
  47. package/lib/service/apex-file-reader.js +39 -0
  48. package/lib/service/apex-file-reader.js.map +1 -0
  49. package/lib/service/file-system.d.ts +12 -0
  50. package/lib/service/file-system.js +21 -0
  51. package/lib/service/file-system.js.map +1 -0
  52. package/lib/service/file-writer.d.ts +4 -0
  53. package/lib/service/file-writer.js +25 -0
  54. package/lib/service/file-writer.js.map +1 -0
  55. package/lib/service/manifest-factory.d.ts +9 -0
  56. package/lib/service/manifest-factory.js +13 -0
  57. package/lib/service/manifest-factory.js.map +1 -0
  58. package/lib/service/parser.d.ts +9 -0
  59. package/lib/service/parser.js +17 -0
  60. package/lib/service/parser.js.map +1 -0
  61. package/lib/service/walkers/class-walker.d.ts +4 -0
  62. package/lib/service/walkers/class-walker.js +32 -0
  63. package/lib/service/walkers/class-walker.js.map +1 -0
  64. package/lib/service/walkers/enum-walker.d.ts +4 -0
  65. package/lib/service/walkers/enum-walker.js +10 -0
  66. package/lib/service/walkers/enum-walker.js.map +1 -0
  67. package/lib/service/walkers/interface-walker.d.ts +4 -0
  68. package/lib/service/walkers/interface-walker.js +14 -0
  69. package/lib/service/walkers/interface-walker.js.map +1 -0
  70. package/lib/service/walkers/walker-factory.d.ts +5 -0
  71. package/lib/service/walkers/walker-factory.js +19 -0
  72. package/lib/service/walkers/walker-factory.js.map +1 -0
  73. package/lib/service/walkers/walker.d.ts +16 -0
  74. package/lib/service/walkers/walker.js +9 -0
  75. package/lib/service/walkers/walker.js.map +1 -0
  76. package/lib/settings.d.ts +21 -0
  77. package/lib/settings.js +42 -0
  78. package/lib/settings.js.map +1 -0
  79. package/lib/transpiler/file-container.d.ts +6 -0
  80. package/lib/transpiler/file-container.js +15 -0
  81. package/lib/transpiler/file-container.js.map +1 -0
  82. package/lib/transpiler/markdown/class-file-generatorHelper.d.ts +6 -0
  83. package/lib/transpiler/markdown/class-file-generatorHelper.js +17 -0
  84. package/lib/transpiler/markdown/class-file-generatorHelper.js.map +1 -0
  85. package/lib/transpiler/markdown/docsify/docsify-docs-processor.d.ts +4 -0
  86. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js +10 -0
  87. package/lib/transpiler/markdown/docsify/docsify-docs-processor.js.map +1 -0
  88. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.d.ts +8 -0
  89. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js +24 -0
  90. package/lib/transpiler/markdown/jekyll/jekyll-docsProcessor.js.map +1 -0
  91. package/lib/transpiler/markdown/markdown-transpiler-base.d.ts +11 -0
  92. package/lib/transpiler/markdown/markdown-transpiler-base.js +23 -0
  93. package/lib/transpiler/markdown/markdown-transpiler-base.js.map +1 -0
  94. package/lib/transpiler/processor-type-transpiler.d.ts +8 -0
  95. package/lib/transpiler/processor-type-transpiler.js +6 -0
  96. package/lib/transpiler/processor-type-transpiler.js.map +1 -0
  97. package/lib/transpiler/transpiler.d.ts +5 -0
  98. package/lib/transpiler/transpiler.js +21 -0
  99. package/lib/transpiler/transpiler.js.map +1 -0
  100. package/lib/util/logger.d.ts +18 -0
  101. package/lib/util/logger.js +32 -0
  102. package/lib/util/logger.js.map +1 -0
  103. package/package.json +22 -11
  104. package/src/application/Apexdocs.ts +41 -0
  105. package/src/cli/generate.ts +52 -64
  106. package/src/index.ts +1 -1
  107. package/src/model/__tests__/manifest.spec.ts +15 -0
  108. package/src/model/file.ts +23 -0
  109. package/src/model/manifest.ts +60 -0
  110. package/src/model/markdown-file.ts +56 -0
  111. package/src/model/markdown-generation-util/field-declaration-util.ts +42 -0
  112. package/src/model/markdown-generation-util/index.ts +3 -0
  113. package/src/model/markdown-generation-util/method-declaration-util.ts +128 -0
  114. package/src/model/markdown-generation-util/type-declaration-util.ts +29 -0
  115. package/src/model/markdown-home-file.ts +48 -0
  116. package/src/model/markdown-type-file.ts +75 -0
  117. package/src/service/__tests__/apex-file-reader.spec.ts +79 -0
  118. package/src/service/__tests__/manifest-factory.spec.ts +16 -0
  119. package/src/service/apex-file-reader.ts +45 -0
  120. package/src/service/file-system.ts +28 -0
  121. package/src/service/file-writer.ts +25 -0
  122. package/src/service/manifest-factory.ts +12 -0
  123. package/src/service/parser.ts +18 -0
  124. package/src/service/walkers/class-walker.ts +31 -0
  125. package/src/service/walkers/enum-walker.ts +8 -0
  126. package/src/service/walkers/interface-walker.ts +12 -0
  127. package/src/service/walkers/walker-factory.ts +18 -0
  128. package/src/service/walkers/walker.ts +35 -0
  129. package/src/settings.ts +57 -0
  130. package/src/transpiler/file-container.ts +13 -0
  131. package/src/transpiler/markdown/class-file-generatorHelper.ts +16 -0
  132. package/src/transpiler/markdown/docsify/docsify-docs-processor.ts +7 -0
  133. package/src/transpiler/markdown/jekyll/jekyll-docsProcessor.ts +22 -0
  134. package/src/transpiler/markdown/markdown-transpiler-base.ts +28 -0
  135. package/src/transpiler/processor-type-transpiler.ts +12 -0
  136. package/src/transpiler/transpiler.ts +18 -0
  137. package/src/util/logger.ts +31 -0
  138. package/tsconfig.json +9 -3
  139. package/.prettierrc +0 -5
  140. package/examples/config/config.json +0 -5
  141. package/lib/AsJsDocsProcessor.d.ts +0 -9
  142. package/lib/AsJsDocsProcessor.js +0 -61
  143. package/lib/ClassFileGeneratorHelper.d.ts +0 -5
  144. package/lib/ClassFileGeneratorHelper.js +0 -25
  145. package/lib/ClassFileGeneratorHelper.test.d.ts +0 -1
  146. package/lib/ClassFileGeneratorHelper.test.js +0 -32
  147. package/lib/Configuration.d.ts +0 -34
  148. package/lib/Configuration.js +0 -37
  149. package/lib/DocsProcessor.d.ts +0 -6
  150. package/lib/DocsProcessor.js +0 -9
  151. package/lib/DocsifyDocsProcessor.d.ts +0 -4
  152. package/lib/DocsifyDocsProcessor.js +0 -9
  153. package/lib/DocsifyDocsProcessor.test.d.ts +0 -1
  154. package/lib/DocsifyDocsProcessor.test.js +0 -7
  155. package/lib/FileManager.d.ts +0 -6
  156. package/lib/FileManager.js +0 -28
  157. package/lib/JekyllDocsProcessor.d.ts +0 -8
  158. package/lib/JekyllDocsProcessor.js +0 -20
  159. package/lib/JekyllDocsProcessor.test.d.ts +0 -1
  160. package/lib/JekyllDocsProcessor.test.js +0 -21
  161. package/lib/JsHelper.d.ts +0 -12
  162. package/lib/JsHelper.js +0 -72
  163. package/lib/MarkdownDocsProcessor.d.ts +0 -22
  164. package/lib/MarkdownDocsProcessor.js +0 -358
  165. package/lib/MarkdownHelper.d.ts +0 -13
  166. package/lib/MarkdownHelper.js +0 -78
  167. package/lib/Settings.d.ts +0 -22
  168. package/lib/Settings.js +0 -51
  169. package/lib/Settings.test.d.ts +0 -1
  170. package/lib/Settings.test.js +0 -38
  171. package/lib/command/Generate.d.ts +0 -2
  172. package/lib/command/Generate.js +0 -54
  173. package/lib/command/__test__/Generte.test.d.ts +0 -1
  174. package/lib/command/__test__/Generte.test.js +0 -30
  175. package/lib/model/ApexModel.d.ts +0 -30
  176. package/lib/model/ApexModel.js +0 -85
  177. package/lib/model/ClassModel.d.ts +0 -39
  178. package/lib/model/ClassModel.js +0 -125
  179. package/lib/model/EnumModel.d.ts +0 -6
  180. package/lib/model/EnumModel.js +0 -28
  181. package/lib/model/MethodModel.d.ts +0 -18
  182. package/lib/model/MethodModel.js +0 -74
  183. package/lib/model/PropertyModel.d.ts +0 -6
  184. package/lib/model/PropertyModel.js +0 -40
  185. package/lib/model/__test__/ClassModel.test.d.ts +0 -1
  186. package/lib/model/__test__/ClassModel.test.js +0 -79
  187. package/lib/model/__test__/MethodModel.test.d.ts +0 -1
  188. package/lib/model/__test__/MethodModel.test.js +0 -55
  189. package/lib/model/__test__/PropertyModel.test.d.ts +0 -1
  190. package/lib/model/__test__/PropertyModel.test.js +0 -25
  191. package/lib/parser/ClassParser.d.ts +0 -5
  192. package/lib/parser/ClassParser.js +0 -79
  193. package/lib/parser/EnumParser.d.ts +0 -5
  194. package/lib/parser/EnumParser.js +0 -45
  195. package/lib/parser/FileParser.d.ts +0 -8
  196. package/lib/parser/FileParser.js +0 -210
  197. package/lib/parser/MethodParser.d.ts +0 -5
  198. package/lib/parser/MethodParser.js +0 -109
  199. package/lib/parser/PropertyParser.d.ts +0 -5
  200. package/lib/parser/PropertyParser.js +0 -46
  201. package/lib/parser/__test__/ClassParser.test.d.ts +0 -1
  202. package/lib/parser/__test__/ClassParser.test.js +0 -52
  203. package/lib/parser/__test__/FileParser.test.d.ts +0 -1
  204. package/lib/parser/__test__/FileParser.test.js +0 -12
  205. package/lib/parser/__test__/MethodParser.test.d.ts +0 -1
  206. package/lib/parser/__test__/MethodParser.test.js +0 -69
  207. package/lib/parser/__test__/PropertyParser.test.d.ts +0 -1
  208. package/lib/parser/__test__/PropertyParser.test.js +0 -14
  209. package/lib/parser/__test__/testFileContents.d.ts +0 -1
  210. package/lib/parser/__test__/testFileContents.js +0 -82
  211. package/lib/utils.d.ts +0 -12
  212. package/lib/utils.js +0 -49
  213. package/lib/utils.test.d.ts +0 -1
  214. package/lib/utils.test.js +0 -35
  215. package/src/AsJsDocsProcessor.ts +0 -67
  216. package/src/ClassFileGeneratorHelper.test.ts +0 -44
  217. package/src/ClassFileGeneratorHelper.ts +0 -26
  218. package/src/Configuration.ts +0 -69
  219. package/src/DocsProcessor.ts +0 -9
  220. package/src/DocsifyDocsProcessor.test.ts +0 -6
  221. package/src/DocsifyDocsProcessor.ts +0 -7
  222. package/src/FileManager.ts +0 -32
  223. package/src/JekyllDocsProcessor.test.ts +0 -28
  224. package/src/JekyllDocsProcessor.ts +0 -22
  225. package/src/JsHelper.ts +0 -78
  226. package/src/MarkdownDocsProcessor.ts +0 -420
  227. package/src/MarkdownHelper.ts +0 -91
  228. package/src/Settings.test.ts +0 -54
  229. package/src/Settings.ts +0 -65
  230. package/src/command/Generate.ts +0 -69
  231. package/src/command/__test__/Generte.test.ts +0 -39
  232. package/src/model/ApexModel.ts +0 -102
  233. package/src/model/ClassModel.ts +0 -140
  234. package/src/model/EnumModel.ts +0 -27
  235. package/src/model/MethodModel.ts +0 -80
  236. package/src/model/PropertyModel.ts +0 -37
  237. package/src/model/__test__/ClassModel.test.ts +0 -100
  238. package/src/model/__test__/MethodModel.test.ts +0 -70
  239. package/src/model/__test__/PropertyModel.test.ts +0 -34
  240. package/src/parser/ClassParser.ts +0 -83
  241. package/src/parser/EnumParser.ts +0 -47
  242. package/src/parser/FileParser.ts +0 -250
  243. package/src/parser/MethodParser.ts +0 -119
  244. package/src/parser/PropertyParser.ts +0 -46
  245. package/src/parser/__test__/ClassParser.test.ts +0 -70
  246. package/src/parser/__test__/FileParser.test.ts +0 -14
  247. package/src/parser/__test__/MethodParser.test.ts +0 -90
  248. package/src/parser/__test__/PropertyParser.test.ts +0 -18
  249. package/src/parser/__test__/testFileContents.ts +0 -81
  250. package/src/utils.test.ts +0 -40
  251. package/src/utils.ts +0 -52
@@ -1,358 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs = require("fs");
4
- const path = require("path");
5
- const DocsProcessor_1 = require("./DocsProcessor");
6
- const MarkdownHelper_1 = require("./MarkdownHelper");
7
- const Settings_1 = require("./Settings");
8
- const Configuration_1 = require("./Configuration");
9
- const ClassFileGeneratorHelper_1 = require("./ClassFileGeneratorHelper");
10
- class MarkdownDocsProcessor extends DocsProcessor_1.default {
11
- constructor() {
12
- super(...arguments);
13
- this.classes = [];
14
- }
15
- // tslint:disable-next-line:no-empty
16
- onBeforeHomeFileCreated(generator) { }
17
- // tslint:disable-next-line:no-empty
18
- onBeforeClassFileCreated(generator) { }
19
- onBeforeProcess(classes, outputDir) {
20
- this.classes = classes;
21
- const headerContent = Configuration_1.default.getHeader();
22
- // Generate home page listing all classes.
23
- const generator = new MarkdownHelper_1.default(classes);
24
- this.onBeforeHomeFileCreated(generator);
25
- if (headerContent) {
26
- generator.addText(headerContent);
27
- }
28
- generator.addTitle('Classes');
29
- if (!Settings_1.default.getInstance().getShouldGroup()) {
30
- classes.forEach(classModel => {
31
- generator.addBlankLine();
32
- generator.addTitle(ClassFileGeneratorHelper_1.default.getFileLink(classModel), 2);
33
- generator.addBlankLine();
34
- generator.addBlankLine();
35
- generator.addText(classModel.getDescription());
36
- generator.addBlankLine();
37
- generator.addBlankLine();
38
- });
39
- }
40
- else {
41
- const groupedClasses = this.group(classes);
42
- groupedClasses.forEach((value, key) => {
43
- generator.addTitle(key, 2);
44
- value.forEach(classModel => {
45
- generator.addBlankLine();
46
- generator.addTitle(ClassFileGeneratorHelper_1.default.getFileLink(classModel), 3);
47
- generator.addBlankLine();
48
- generator.addBlankLine();
49
- generator.addText(classModel.getDescription());
50
- generator.addBlankLine();
51
- generator.addBlankLine();
52
- });
53
- });
54
- }
55
- if (!fs.existsSync(outputDir)) {
56
- fs.mkdirSync(outputDir);
57
- }
58
- const filePath = path.join(outputDir, this.getHomeFileName());
59
- fs.writeFile(filePath, generator.contents, 'utf8', () => {
60
- // tslint:disable-next-line:no-console
61
- console.log('Home page generated.');
62
- });
63
- }
64
- process(classModel, outputDir) {
65
- var _a, _b;
66
- const generator = new MarkdownHelper_1.default(this.classes);
67
- this.onBeforeClassFileCreated(generator);
68
- const startingHeadingLevel = ((_b = (_a = Configuration_1.default.getConfig()) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.startingHeadingLevel) || 1;
69
- this.generateDocsForClass(generator, classModel, startingHeadingLevel);
70
- if (!fs.existsSync(outputDir)) {
71
- fs.mkdirSync(outputDir);
72
- }
73
- let filePath;
74
- if (!Settings_1.default.getInstance().getShouldGroup()) {
75
- filePath = path.join(outputDir, `${classModel.getClassName()}.md`);
76
- }
77
- else {
78
- const classGroupPath = path.join(outputDir, ClassFileGeneratorHelper_1.default.getSanitizedGroup(classModel));
79
- if (!fs.existsSync(classGroupPath)) {
80
- fs.mkdirSync(classGroupPath);
81
- }
82
- filePath = path.join(classGroupPath, `${classModel.getClassName()}.md`);
83
- }
84
- fs.writeFile(filePath, generator.contents, 'utf8', () => {
85
- // tslint:disable-next-line:no-console
86
- console.log(`${classModel.getClassName()} processed.`);
87
- });
88
- }
89
- generateDocsForClass(generator, classModel, level) {
90
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
91
- (_e = (_d = (_c = (_b = (_a = Configuration_1.default.getConfig()) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.injections) === null || _c === void 0 ? void 0 : _c.doc) === null || _d === void 0 ? void 0 : _d.onInit) === null || _e === void 0 ? void 0 : _e.forEach(injection => {
92
- generator.addText(injection);
93
- });
94
- const suffix = classModel.getIsInterface() ? 'interface' : classModel.getIsEnum() ? 'enum' : 'class';
95
- generator.addTitle(`${classModel.getClassName()} ${suffix}`, level);
96
- if (classModel.getIsNamespaceAccessible()) {
97
- generator.addBlankLine();
98
- generator.addText('`NamespaceAccessible`');
99
- }
100
- if (classModel.getDescription()) {
101
- generator.addBlankLine();
102
- generator.addText(classModel.getDescription());
103
- generator.addBlankLine();
104
- }
105
- if (((_g = (_f = Configuration_1.default.getConfig()) === null || _f === void 0 ? void 0 : _f.content) === null || _g === void 0 ? void 0 : _g.includeAuthor) && classModel.getAuthor()) {
106
- generator.addBlankLine();
107
- generator.addText(`**Author:** ${classModel.getAuthor()}`);
108
- }
109
- if (((_j = (_h = Configuration_1.default.getConfig()) === null || _h === void 0 ? void 0 : _h.content) === null || _j === void 0 ? void 0 : _j.includeDate) && classModel.getDate()) {
110
- generator.addBlankLine();
111
- generator.addText(`**Date:** ${classModel.getDate()}`);
112
- }
113
- if (classModel.getSeeList().length !== 0) {
114
- generator.addTitle('Related', level + 1);
115
- classModel.getSeeList().forEach(relatedClassName => {
116
- const relatedClass = this.classes.find(currentClassModel => currentClassModel.getClassName() === relatedClassName);
117
- generator.addBlankLine();
118
- if (relatedClass) {
119
- generator.addText(ClassFileGeneratorHelper_1.default.getFileLink(relatedClass));
120
- }
121
- else {
122
- generator.addText(relatedClassName);
123
- }
124
- generator.addBlankLine();
125
- });
126
- }
127
- generator.addHorizontalRule();
128
- this.addConstructors(generator, level, classModel);
129
- this.addEnums(generator, level, classModel);
130
- this.addProperties(generator, level, classModel);
131
- this.addMethods(generator, level, classModel);
132
- this.addInnerClasses(classModel, generator, level);
133
- (_p = (_o = (_m = (_l = (_k = Configuration_1.default.getConfig()) === null || _k === void 0 ? void 0 : _k.content) === null || _l === void 0 ? void 0 : _l.injections) === null || _m === void 0 ? void 0 : _m.doc) === null || _o === void 0 ? void 0 : _o.onEnd) === null || _p === void 0 ? void 0 : _p.forEach(injection => {
134
- generator.addText(injection);
135
- });
136
- }
137
- group(classes) {
138
- return classes.reduce((groups, currentClass) => {
139
- const key = currentClass.getClassGroup();
140
- const group = groups.get(key) || [];
141
- group.push(currentClass);
142
- groups.set(key, group);
143
- return groups;
144
- }, new Map());
145
- }
146
- addProperties(generator, level, classModel) {
147
- if (classModel.getProperties().length === 0) {
148
- return;
149
- }
150
- generator.addTitle('Properties', level + 1);
151
- generator.addBlankLine();
152
- classModel
153
- .getProperties()
154
- .sort((propA, propB) => {
155
- if (propA.getPropertyName() < propB.getPropertyName())
156
- return -1;
157
- if (propA.getPropertyName() > propB.getPropertyName())
158
- return 1;
159
- return 0;
160
- })
161
- .forEach(propertyModel => {
162
- generator.addTitle(`\`${propertyModel.getPropertyName()}\` → \`${propertyModel.getReturnType()}\``, level + 2);
163
- if (classModel.getIsNamespaceAccessible()) {
164
- generator.addBlankLine();
165
- generator.addText('`NamespaceAccessible`');
166
- }
167
- if (propertyModel.getDescription()) {
168
- generator.addBlankLine();
169
- generator.addText(propertyModel.getDescription());
170
- }
171
- generator.addBlankLine();
172
- });
173
- generator.addHorizontalRule();
174
- }
175
- addConstructors(generator, level, classModel) {
176
- if (classModel.getMethods().filter(method => method.getIsConstructor()).length === 0) {
177
- return;
178
- }
179
- generator.addTitle('Constructors', level + 1);
180
- classModel
181
- .getMethods()
182
- .filter(method => method.getIsConstructor())
183
- .forEach(methodModel => {
184
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
185
- (_f = (_e = (_d = (_c = (_b = (_a = Configuration_1.default.getConfig()) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.injections) === null || _c === void 0 ? void 0 : _c.doc) === null || _d === void 0 ? void 0 : _d.method) === null || _e === void 0 ? void 0 : _e.onInit) === null || _f === void 0 ? void 0 : _f.forEach(injection => {
186
- generator.addText(injection);
187
- });
188
- generator.addTitle(`\`${methodModel.getSignature()}\``, level + 2);
189
- if (classModel.getIsNamespaceAccessible()) {
190
- generator.addBlankLine();
191
- generator.addText('`NamespaceAccessible`');
192
- }
193
- if (methodModel.getDescription()) {
194
- generator.addBlankLine();
195
- generator.addText(methodModel.getDescription());
196
- }
197
- if (methodModel.getParams().length) {
198
- this.addParameters(generator, level, methodModel);
199
- }
200
- if (methodModel.getThrownExceptions().length) {
201
- this.addThrowsBlock(generator, level, methodModel);
202
- }
203
- if (methodModel.getExample() !== '') {
204
- (_m = (_l = (_k = (_j = (_h = (_g = Configuration_1.default.getConfig()) === null || _g === void 0 ? void 0 : _g.content) === null || _h === void 0 ? void 0 : _h.injections) === null || _j === void 0 ? void 0 : _j.doc) === null || _k === void 0 ? void 0 : _k.method) === null || _l === void 0 ? void 0 : _l.onBeforeExample) === null || _m === void 0 ? void 0 : _m.forEach(injection => {
205
- generator.addText(injection);
206
- });
207
- this.addExample(generator, methodModel, level);
208
- }
209
- (_t = (_s = (_r = (_q = (_p = (_o = Configuration_1.default.getConfig()) === null || _o === void 0 ? void 0 : _o.content) === null || _p === void 0 ? void 0 : _p.injections) === null || _q === void 0 ? void 0 : _q.doc) === null || _r === void 0 ? void 0 : _r.method) === null || _s === void 0 ? void 0 : _s.onEnd) === null || _t === void 0 ? void 0 : _t.forEach(injection => {
210
- generator.addText(injection);
211
- });
212
- });
213
- generator.addHorizontalRule();
214
- }
215
- addEnums(generator, level, classModel) {
216
- if (classModel.getChildEnums().length === 0) {
217
- return;
218
- }
219
- generator.addTitle('Enums', level + 1);
220
- classModel
221
- .getChildEnums()
222
- .sort((enumA, enumB) => {
223
- if (enumA.getClassName() < enumB.getClassName())
224
- return -1;
225
- if (enumA.getClassName() > enumB.getClassName())
226
- return 1;
227
- return 0;
228
- })
229
- .forEach(enumModel => {
230
- generator.addTitle(enumModel.getClassName(), level + 2);
231
- generator.addBlankLine();
232
- if (classModel.getIsNamespaceAccessible()) {
233
- generator.addBlankLine();
234
- generator.addText('`NamespaceAccessible`');
235
- }
236
- if (enumModel.getDescription()) {
237
- generator.addBlankLine();
238
- generator.addText(enumModel.getDescription());
239
- generator.addBlankLine();
240
- }
241
- });
242
- generator.addHorizontalRule();
243
- }
244
- addMethods(generator, level, classModel) {
245
- if (classModel.getMethods().filter(method => !method.getIsConstructor()).length === 0) {
246
- return;
247
- }
248
- generator.addTitle('Methods', level + 1);
249
- classModel
250
- .getMethods()
251
- .sort((methodA, methodB) => {
252
- if (methodA.getMethodName() < methodB.getMethodName())
253
- return -1;
254
- if (methodA.getMethodName() > methodB.getMethodName())
255
- return 1;
256
- return 0;
257
- })
258
- .filter(method => !method.getIsConstructor())
259
- .forEach(methodModel => {
260
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
261
- (_f = (_e = (_d = (_c = (_b = (_a = Configuration_1.default.getConfig()) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.injections) === null || _c === void 0 ? void 0 : _c.doc) === null || _d === void 0 ? void 0 : _d.method) === null || _e === void 0 ? void 0 : _e.onInit) === null || _f === void 0 ? void 0 : _f.forEach(injection => {
262
- generator.addText(injection);
263
- });
264
- generator.addTitle(`\`${methodModel.getSignature()}\` → \`${methodModel.getReturnType()}\``, level + 2);
265
- if (classModel.getIsNamespaceAccessible()) {
266
- generator.addBlankLine();
267
- generator.addText('`NamespaceAccessible`');
268
- }
269
- if (methodModel.getDescription()) {
270
- generator.addBlankLine();
271
- generator.addText(methodModel.getDescription());
272
- generator.addBlankLine();
273
- }
274
- if (methodModel.getParams().length) {
275
- this.addParameters(generator, level, methodModel);
276
- }
277
- if (methodModel.getReturns().length) {
278
- this.addReturns(generator, level, methodModel);
279
- }
280
- if (methodModel.getThrownExceptions().length) {
281
- this.addThrowsBlock(generator, level, methodModel);
282
- }
283
- if (methodModel.getExample() !== '') {
284
- (_m = (_l = (_k = (_j = (_h = (_g = Configuration_1.default.getConfig()) === null || _g === void 0 ? void 0 : _g.content) === null || _h === void 0 ? void 0 : _h.injections) === null || _j === void 0 ? void 0 : _j.doc) === null || _k === void 0 ? void 0 : _k.method) === null || _l === void 0 ? void 0 : _l.onBeforeExample) === null || _m === void 0 ? void 0 : _m.forEach(injection => {
285
- generator.addText(injection);
286
- });
287
- this.addExample(generator, methodModel, level);
288
- }
289
- (_t = (_s = (_r = (_q = (_p = (_o = Configuration_1.default.getConfig()) === null || _o === void 0 ? void 0 : _o.content) === null || _p === void 0 ? void 0 : _p.injections) === null || _q === void 0 ? void 0 : _q.doc) === null || _r === void 0 ? void 0 : _r.method) === null || _s === void 0 ? void 0 : _s.onEnd) === null || _t === void 0 ? void 0 : _t.forEach(injection => {
290
- generator.addText(injection);
291
- });
292
- });
293
- generator.addHorizontalRule();
294
- }
295
- addInnerClasses(classModel, generator, level) {
296
- if (classModel.getChildClasses().length > 0) {
297
- generator.addTitle('Inner Classes', ++level);
298
- level++;
299
- generator.addBlankLine();
300
- classModel
301
- .getChildClasses()
302
- .sort((classA, classB) => {
303
- if (classA.getClassName() < classB.getClassName())
304
- return -1;
305
- if (classA.getClassName() > classB.getClassName())
306
- return 1;
307
- return 0;
308
- })
309
- .forEach(innerClass => {
310
- this.generateDocsForClass(generator, innerClass, level);
311
- });
312
- }
313
- }
314
- addParameters(generator, level, methodModel) {
315
- generator.addTitle('Parameters', level + 3);
316
- // Building a table to display the parameters
317
- generator.addText('|Param|Description|');
318
- generator.addText('|-----|-----------|');
319
- methodModel.getParams().forEach(param => {
320
- const paramName = param.substr(0, param.indexOf(' '));
321
- const paramDescription = param.substr(param.indexOf(' '));
322
- generator.addText(`|\`${paramName}\` | ${paramDescription} |`);
323
- });
324
- generator.addBlankLine();
325
- }
326
- addReturns(generator, level, methodModel) {
327
- generator.addTitle('Return', level + 3);
328
- generator.addBlankLine();
329
- generator.addText('**Type**');
330
- generator.addBlankLine();
331
- generator.addText(methodModel.getReturnType());
332
- generator.addBlankLine();
333
- generator.addText('**Description**');
334
- generator.addBlankLine();
335
- generator.addText(methodModel.getReturns());
336
- generator.addBlankLine();
337
- }
338
- addThrowsBlock(generator, level, methodModel) {
339
- generator.addTitle('Throws', level + 3);
340
- // Building a table to display the exceptions
341
- generator.addText('|Exception|Description|');
342
- generator.addText('|---------|-----------|');
343
- methodModel.getThrownExceptions().forEach(param => {
344
- const exceptionName = param.substr(0, param.indexOf(' '));
345
- const exceptionDescription = param.substr(param.indexOf(' '));
346
- generator.addText(`|\`${exceptionName}\` | ${exceptionDescription} |`);
347
- });
348
- generator.addBlankLine();
349
- }
350
- addExample(generator, methodModel, level) {
351
- generator.addTitle('Example', level + 3);
352
- generator.startCodeBlock();
353
- generator.addText(methodModel.getExample(), false);
354
- generator.endCodeBlock();
355
- generator.addBlankLine();
356
- }
357
- }
358
- exports.default = MarkdownDocsProcessor;
@@ -1,13 +0,0 @@
1
- import ClassModel from './model/ClassModel';
2
- export default class MarkdownHelper {
3
- contents: string;
4
- classes: ClassModel[];
5
- constructor(classes: ClassModel[]);
6
- addBlankLine(): void;
7
- addTitle(text: string, level?: number): void;
8
- addText(text: string, encodeHtml?: boolean): void;
9
- addHorizontalRule(): void;
10
- addLink(title: string, url: string): void;
11
- startCodeBlock(): void;
12
- endCodeBlock(): void;
13
- }
@@ -1,78 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const html_entities_1 = require("html-entities");
4
- const ClassFileGeneratorHelper_1 = require("./ClassFileGeneratorHelper");
5
- const Configuration_1 = require("./Configuration");
6
- class MarkdownHelper {
7
- constructor(classes) {
8
- this.contents = '';
9
- this.classes = classes;
10
- }
11
- addBlankLine() {
12
- this.contents += '\n';
13
- }
14
- addTitle(text, level = 1) {
15
- let title = '';
16
- for (let i = 0; i < level; i++) {
17
- title += '#';
18
- }
19
- title += ' ';
20
- title += text;
21
- this.contents += title;
22
- this.addBlankLine();
23
- }
24
- addText(text, encodeHtml = true) {
25
- // Parsing text to extract possible linking classes.
26
- const possibleLinks = text.match(/<<.*?>>/g);
27
- possibleLinks === null || possibleLinks === void 0 ? void 0 : possibleLinks.forEach(currentMatch => {
28
- const classNameForMatch = currentMatch.replace('<<', '').replace('>>', '');
29
- this.classes.forEach(classModel => {
30
- if (classModel.getClassName() === classNameForMatch) {
31
- text = text.replace(currentMatch, ClassFileGeneratorHelper_1.default.getFileLink(classModel));
32
- }
33
- });
34
- });
35
- // Parsing links using {@link ClassName} format
36
- const linkFormatRegEx = '{@link (.*?)}';
37
- const expression = new RegExp(linkFormatRegEx, 'gi');
38
- let match;
39
- const matches = [];
40
- do {
41
- match = expression.exec(text);
42
- if (match) {
43
- matches.push(match);
44
- }
45
- } while (match);
46
- for (const currentMatch of matches) {
47
- this.classes.forEach(classModel => {
48
- if (classModel.getClassName() === currentMatch[1]) {
49
- text = text.replace(currentMatch[0], ClassFileGeneratorHelper_1.default.getFileLink(classModel));
50
- }
51
- });
52
- }
53
- const textToAdd = encodeHtml ? html_entities_1.encode(text) : text;
54
- this.contents += textToAdd;
55
- this.addBlankLine();
56
- }
57
- addHorizontalRule() {
58
- this.contents += '---';
59
- this.addBlankLine();
60
- }
61
- addLink(title, url) {
62
- this.contents += `[${title}](${url})`;
63
- }
64
- startCodeBlock() {
65
- var _a;
66
- this.contents += '```';
67
- const sourceLanguage = (_a = Configuration_1.default.getConfig()) === null || _a === void 0 ? void 0 : _a.sourceLanguage;
68
- if (sourceLanguage) {
69
- this.contents += sourceLanguage;
70
- }
71
- this.addBlankLine();
72
- }
73
- endCodeBlock() {
74
- this.contents += '```';
75
- this.addBlankLine();
76
- }
77
- }
78
- exports.default = MarkdownHelper;
package/lib/Settings.d.ts DELETED
@@ -1,22 +0,0 @@
1
- import DocsProcessor from './DocsProcessor';
2
- export default class Settings {
3
- private static instance;
4
- private desiredScope;
5
- private outputDir;
6
- private configPath;
7
- private shouldGroup;
8
- private processor;
9
- private constructor();
10
- static getInstance(): Settings;
11
- setScope(desiredScope: string[]): void;
12
- getScope(): string[];
13
- setOutputDir(outputDir: string): void;
14
- getOutputDir(): string;
15
- setDocsProcessor(processor: DocsProcessor): void;
16
- getDocsProcessor(): DocsProcessor | null;
17
- setConfigPath(configPath: string): void;
18
- getConfigPath(): string | null;
19
- setShouldGroup(shouldGroup: boolean): void;
20
- getShouldGroup(): boolean | null;
21
- includeNamespaceAccessible(): boolean;
22
- }
package/lib/Settings.js DELETED
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Settings {
4
- constructor() {
5
- this.desiredScope = ['global', 'public', 'namespaceaccessible'];
6
- this.outputDir = 'docs';
7
- this.configPath = null;
8
- this.shouldGroup = true;
9
- this.processor = null;
10
- }
11
- static getInstance() {
12
- if (!Settings.instance) {
13
- Settings.instance = new Settings();
14
- }
15
- return Settings.instance;
16
- }
17
- setScope(desiredScope) {
18
- this.desiredScope = desiredScope;
19
- }
20
- getScope() {
21
- return this.desiredScope;
22
- }
23
- setOutputDir(outputDir) {
24
- this.outputDir = outputDir;
25
- }
26
- getOutputDir() {
27
- return this.outputDir;
28
- }
29
- setDocsProcessor(processor) {
30
- this.processor = processor;
31
- }
32
- getDocsProcessor() {
33
- return this.processor;
34
- }
35
- setConfigPath(configPath) {
36
- this.configPath = configPath;
37
- }
38
- getConfigPath() {
39
- return this.configPath;
40
- }
41
- setShouldGroup(shouldGroup) {
42
- this.shouldGroup = shouldGroup;
43
- }
44
- getShouldGroup() {
45
- return this.shouldGroup;
46
- }
47
- includeNamespaceAccessible() {
48
- return this.getScope().includes('namespaceaccessible');
49
- }
50
- }
51
- exports.default = Settings;
@@ -1 +0,0 @@
1
- export {};
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Settings_1 = require("./Settings");
4
- test('has global, public and namespaceaccessbile as default scope', () => {
5
- expect(Settings_1.default.getInstance().getScope()).toHaveLength(3);
6
- expect(Settings_1.default.getInstance().getScope()).toContain('global');
7
- expect(Settings_1.default.getInstance().getScope()).toContain('public');
8
- expect(Settings_1.default.getInstance().getScope()).toContain('namespaceaccessible');
9
- });
10
- test('can set scope', () => {
11
- const expectedScope = ['private'];
12
- Settings_1.default.getInstance().setScope(expectedScope);
13
- expect(Settings_1.default.getInstance().getScope()).toHaveLength(1);
14
- expect(Settings_1.default.getInstance().getScope()).toContain('private');
15
- });
16
- test('has "docs" as the default output directory', () => {
17
- expect(Settings_1.default.getInstance().getOutputDir()).toBe('docs');
18
- });
19
- test('can set output directory', () => {
20
- const directory = 'cutomdir';
21
- Settings_1.default.getInstance().setOutputDir(directory);
22
- expect(Settings_1.default.getInstance().getOutputDir()).toBe(directory);
23
- });
24
- test('that the processor can be set', () => {
25
- const docsProcessor = jest.genMockFromModule('./DocsProcessor');
26
- Settings_1.default.getInstance().setDocsProcessor(docsProcessor);
27
- expect(Settings_1.default.getInstance().getDocsProcessor()).toBe(docsProcessor);
28
- });
29
- test('that the config path can be set', () => {
30
- const configPath = './config.json';
31
- Settings_1.default.getInstance().setConfigPath(configPath);
32
- expect(Settings_1.default.getInstance().getConfigPath()).toBe(configPath);
33
- });
34
- test('that shouldGroup can be set', () => {
35
- const shouldGroup = false;
36
- Settings_1.default.getInstance().setShouldGroup(shouldGroup);
37
- expect(Settings_1.default.getInstance().getShouldGroup()).toBe(shouldGroup);
38
- });
@@ -1,2 +0,0 @@
1
- import ClassModel from '../model/ClassModel';
2
- export declare function generate(sourceDirectory: string, recursive?: boolean, scope?: string[], outputDir?: string, targetGenerator?: string, configPath?: string, group?: boolean): ClassModel[];
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs = require("fs");
4
- const path = require("path");
5
- const Settings_1 = require("../Settings");
6
- const FileParser_1 = require("../parser/FileParser");
7
- const DocsifyDocsProcessor_1 = require("../DocsifyDocsProcessor");
8
- const JekyllDocsProcessor_1 = require("../JekyllDocsProcessor");
9
- const AsJsDocsProcessor_1 = require("../AsJsDocsProcessor");
10
- function generate(sourceDirectory, recursive = true, scope = ['global', 'public', 'namespaceaccessible'], outputDir = 'docs', targetGenerator = 'jekyll', configPath, group) {
11
- Settings_1.default.getInstance().setScope(scope);
12
- Settings_1.default.getInstance().setOutputDir(outputDir);
13
- if (targetGenerator === 'jekyll') {
14
- Settings_1.default.getInstance().setDocsProcessor(new JekyllDocsProcessor_1.default());
15
- }
16
- else if (targetGenerator === 'docsify') {
17
- Settings_1.default.getInstance().setDocsProcessor(new DocsifyDocsProcessor_1.default());
18
- }
19
- else {
20
- Settings_1.default.getInstance().setDocsProcessor(new AsJsDocsProcessor_1.default());
21
- }
22
- if (group !== undefined) {
23
- Settings_1.default.getInstance().setShouldGroup(group);
24
- }
25
- if (configPath) {
26
- Settings_1.default.getInstance().setConfigPath(configPath);
27
- }
28
- // TODO: Assert data validation to avoid exposing 'fs' and 'path' errors to callers.
29
- const classes = getClassesFromDirectory(sourceDirectory, recursive);
30
- // tslint:disable-next-line:no-console
31
- console.log(`Processed ${classes.length} files`);
32
- return classes;
33
- }
34
- exports.generate = generate;
35
- function getClassesFromDirectory(sourceDirectory, recursive) {
36
- let classes = [];
37
- const directoryContents = fs.readdirSync(sourceDirectory);
38
- directoryContents.forEach(currentFile => {
39
- const currentPath = path.join(sourceDirectory, currentFile);
40
- if (recursive && fs.statSync(currentPath).isDirectory()) {
41
- classes = classes.concat(getClassesFromDirectory(currentPath, recursive));
42
- }
43
- if (!currentFile.endsWith('.cls')) {
44
- return;
45
- }
46
- const rawFile = fs.readFileSync(currentPath);
47
- const response = new FileParser_1.default().parseFileContents(rawFile.toString());
48
- if (!response) {
49
- return;
50
- }
51
- classes.push(response);
52
- });
53
- return classes;
54
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs = require("fs");
4
- const Generate_1 = require("../Generate");
5
- const FileParser_1 = require("../../parser/FileParser");
6
- jest.mock('fs');
7
- jest.mock('../../parser/FileParser');
8
- beforeEach(() => {
9
- FileParser_1.default.mockClear();
10
- });
11
- it('returns an empty list when there are no files', () => {
12
- fs.readdirSync.mockReturnValue([]);
13
- const classes = Generate_1.generate('src');
14
- expect(classes.length).toBe(0);
15
- });
16
- it('returns an empty list when there are no files ending in .cls', () => {
17
- fs.readdirSync.mockReturnValue(['file.xml', 'README.md']);
18
- const classes = Generate_1.generate('src', false);
19
- expect(classes.length).toBe(0);
20
- });
21
- it('returns parsed files when there are .cls files', () => {
22
- fs.readdirSync.mockReturnValue(['TestClass.cls', 'README.md']);
23
- fs.readFileSync.mockReturnValue('Raw class data');
24
- Generate_1.generate('src', false);
25
- expect(FileParser_1.default).toHaveBeenCalledTimes(1);
26
- const mockFileParserInstance = FileParser_1.default.mock.instances[0];
27
- const mockParseFileContents = mockFileParserInstance.parseFileContents;
28
- expect(mockParseFileContents).toHaveBeenCalledTimes(1);
29
- expect(mockParseFileContents).toHaveBeenCalledWith('Raw class data');
30
- });