@xpack/doxygen2docusaurus 2.0.0 → 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 (350) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -1
  3. package/bin/doxygen2docusaurus.js +1 -1
  4. package/dist/cli/main.d.ts +0 -14
  5. package/dist/cli/main.d.ts.map +1 -1
  6. package/dist/cli/main.js +0 -34
  7. package/dist/cli/main.js.map +1 -1
  8. package/dist/docusaurus/cli-options.d.ts +3 -292
  9. package/dist/docusaurus/cli-options.d.ts.map +1 -1
  10. package/dist/docusaurus/cli-options.js +6 -290
  11. package/dist/docusaurus/cli-options.js.map +1 -1
  12. package/dist/docusaurus/generator.d.ts +0 -172
  13. package/dist/docusaurus/generator.d.ts.map +1 -1
  14. package/dist/docusaurus/generator.js +20 -280
  15. package/dist/docusaurus/generator.js.map +1 -1
  16. package/dist/docusaurus/renderers/descriptiontype.d.ts +0 -417
  17. package/dist/docusaurus/renderers/descriptiontype.d.ts.map +1 -1
  18. package/dist/docusaurus/renderers/descriptiontype.js +11 -555
  19. package/dist/docusaurus/renderers/descriptiontype.js.map +1 -1
  20. package/dist/docusaurus/renderers/docinternalstype.d.ts +0 -132
  21. package/dist/docusaurus/renderers/docinternalstype.d.ts.map +1 -1
  22. package/dist/docusaurus/renderers/docinternalstype.js +0 -156
  23. package/dist/docusaurus/renderers/docinternalstype.js.map +1 -1
  24. package/dist/docusaurus/renderers/doclisttype.d.ts +0 -22
  25. package/dist/docusaurus/renderers/doclisttype.d.ts.map +1 -1
  26. package/dist/docusaurus/renderers/doclisttype.js +0 -42
  27. package/dist/docusaurus/renderers/doclisttype.js.map +1 -1
  28. package/dist/docusaurus/renderers/doctabletype.d.ts +0 -88
  29. package/dist/docusaurus/renderers/doctabletype.d.ts.map +1 -1
  30. package/dist/docusaurus/renderers/doctabletype.js +1 -113
  31. package/dist/docusaurus/renderers/doctabletype.js.map +1 -1
  32. package/dist/docusaurus/renderers/doctitletype.d.ts +0 -22
  33. package/dist/docusaurus/renderers/doctitletype.d.ts.map +1 -1
  34. package/dist/docusaurus/renderers/doctitletype.js +0 -42
  35. package/dist/docusaurus/renderers/doctitletype.js.map +1 -1
  36. package/dist/docusaurus/renderers/docvariablelisttype.d.ts +0 -44
  37. package/dist/docusaurus/renderers/docvariablelisttype.d.ts.map +1 -1
  38. package/dist/docusaurus/renderers/docvariablelisttype.js +1 -69
  39. package/dist/docusaurus/renderers/docvariablelisttype.js.map +1 -1
  40. package/dist/docusaurus/renderers/docxrefsecttype.d.ts +0 -22
  41. package/dist/docusaurus/renderers/docxrefsecttype.d.ts.map +1 -1
  42. package/dist/docusaurus/renderers/docxrefsecttype.js +0 -38
  43. package/dist/docusaurus/renderers/docxrefsecttype.js.map +1 -1
  44. package/dist/docusaurus/renderers/element-renderer-base.d.ts +0 -74
  45. package/dist/docusaurus/renderers/element-renderer-base.d.ts.map +1 -1
  46. package/dist/docusaurus/renderers/element-renderer-base.js +0 -64
  47. package/dist/docusaurus/renderers/element-renderer-base.js.map +1 -1
  48. package/dist/docusaurus/renderers/inctype.d.ts +0 -23
  49. package/dist/docusaurus/renderers/inctype.d.ts.map +1 -1
  50. package/dist/docusaurus/renderers/inctype.js +0 -41
  51. package/dist/docusaurus/renderers/inctype.js.map +1 -1
  52. package/dist/docusaurus/renderers/linkedtexttype.d.ts +0 -22
  53. package/dist/docusaurus/renderers/linkedtexttype.d.ts.map +1 -1
  54. package/dist/docusaurus/renderers/linkedtexttype.js +0 -45
  55. package/dist/docusaurus/renderers/linkedtexttype.js.map +1 -1
  56. package/dist/docusaurus/renderers/listingtype.d.ts +0 -52
  57. package/dist/docusaurus/renderers/listingtype.d.ts.map +1 -1
  58. package/dist/docusaurus/renderers/listingtype.js +1 -88
  59. package/dist/docusaurus/renderers/listingtype.js.map +1 -1
  60. package/dist/docusaurus/renderers/paramtype.d.ts +0 -22
  61. package/dist/docusaurus/renderers/paramtype.d.ts.map +1 -1
  62. package/dist/docusaurus/renderers/paramtype.js +2 -51
  63. package/dist/docusaurus/renderers/paramtype.js.map +1 -1
  64. package/dist/docusaurus/renderers/referencetype.d.ts +0 -23
  65. package/dist/docusaurus/renderers/referencetype.d.ts.map +1 -1
  66. package/dist/docusaurus/renderers/referencetype.js +0 -38
  67. package/dist/docusaurus/renderers/referencetype.js.map +1 -1
  68. package/dist/docusaurus/renderers/reftexttype.d.ts +0 -22
  69. package/dist/docusaurus/renderers/reftexttype.d.ts.map +1 -1
  70. package/dist/docusaurus/renderers/reftexttype.js +0 -38
  71. package/dist/docusaurus/renderers/reftexttype.js.map +1 -1
  72. package/dist/docusaurus/renderers/reftype.d.ts +0 -22
  73. package/dist/docusaurus/renderers/reftype.d.ts.map +1 -1
  74. package/dist/docusaurus/renderers/reftype.js +0 -38
  75. package/dist/docusaurus/renderers/reftype.js.map +1 -1
  76. package/dist/docusaurus/renderers/renderers.d.ts +0 -151
  77. package/dist/docusaurus/renderers/renderers.d.ts.map +1 -1
  78. package/dist/docusaurus/renderers/renderers.js +4 -184
  79. package/dist/docusaurus/renderers/renderers.js.map +1 -1
  80. package/dist/docusaurus/renderers/substringtype.d.ts +0 -22
  81. package/dist/docusaurus/renderers/substringtype.d.ts.map +1 -1
  82. package/dist/docusaurus/renderers/substringtype.js +0 -39
  83. package/dist/docusaurus/renderers/substringtype.js.map +1 -1
  84. package/dist/docusaurus/renderers/tableofcontentstype.d.ts +0 -22
  85. package/dist/docusaurus/renderers/tableofcontentstype.d.ts.map +1 -1
  86. package/dist/docusaurus/renderers/tableofcontentstype.js +0 -39
  87. package/dist/docusaurus/renderers/tableofcontentstype.js.map +1 -1
  88. package/dist/docusaurus/types.d.ts +0 -110
  89. package/dist/docusaurus/types.d.ts.map +1 -1
  90. package/dist/docusaurus/types.js +0 -11
  91. package/dist/docusaurus/types.js.map +1 -1
  92. package/dist/docusaurus/utils.d.ts +0 -214
  93. package/dist/docusaurus/utils.d.ts.map +1 -1
  94. package/dist/docusaurus/utils.js +0 -296
  95. package/dist/docusaurus/utils.js.map +1 -1
  96. package/dist/docusaurus/view-model/classes-vm.d.ts +0 -137
  97. package/dist/docusaurus/view-model/classes-vm.d.ts.map +1 -1
  98. package/dist/docusaurus/view-model/classes-vm.js +9 -225
  99. package/dist/docusaurus/view-model/classes-vm.js.map +1 -1
  100. package/dist/docusaurus/view-model/collection-base.d.ts +0 -120
  101. package/dist/docusaurus/view-model/collection-base.d.ts.map +1 -1
  102. package/dist/docusaurus/view-model/collection-base.js +11 -101
  103. package/dist/docusaurus/view-model/collection-base.js.map +1 -1
  104. package/dist/docusaurus/view-model/compound-base-vm.d.ts +2 -147
  105. package/dist/docusaurus/view-model/compound-base-vm.d.ts.map +1 -1
  106. package/dist/docusaurus/view-model/compound-base-vm.js +47 -225
  107. package/dist/docusaurus/view-model/compound-base-vm.js.map +1 -1
  108. package/dist/docusaurus/view-model/concepts-vm.d.ts +26 -0
  109. package/dist/docusaurus/view-model/concepts-vm.d.ts.map +1 -0
  110. package/dist/docusaurus/view-model/concepts-vm.js +329 -0
  111. package/dist/docusaurus/view-model/concepts-vm.js.map +1 -0
  112. package/dist/docusaurus/view-model/description-anchors.d.ts +0 -58
  113. package/dist/docusaurus/view-model/description-anchors.d.ts.map +1 -1
  114. package/dist/docusaurus/view-model/description-anchors.js +0 -71
  115. package/dist/docusaurus/view-model/description-anchors.js.map +1 -1
  116. package/dist/docusaurus/view-model/files-and-folders-vm.d.ts +0 -247
  117. package/dist/docusaurus/view-model/files-and-folders-vm.d.ts.map +1 -1
  118. package/dist/docusaurus/view-model/files-and-folders-vm.js +61 -353
  119. package/dist/docusaurus/view-model/files-and-folders-vm.js.map +1 -1
  120. package/dist/docusaurus/view-model/groups-vm.d.ts +0 -148
  121. package/dist/docusaurus/view-model/groups-vm.d.ts.map +1 -1
  122. package/dist/docusaurus/view-model/groups-vm.js +2 -223
  123. package/dist/docusaurus/view-model/groups-vm.js.map +1 -1
  124. package/dist/docusaurus/view-model/members-vm.d.ts +0 -552
  125. package/dist/docusaurus/view-model/members-vm.d.ts.map +1 -1
  126. package/dist/docusaurus/view-model/members-vm.js +17 -702
  127. package/dist/docusaurus/view-model/members-vm.js.map +1 -1
  128. package/dist/docusaurus/view-model/namespaces-vm.d.ts +4 -199
  129. package/dist/docusaurus/view-model/namespaces-vm.d.ts.map +1 -1
  130. package/dist/docusaurus/view-model/namespaces-vm.js +79 -284
  131. package/dist/docusaurus/view-model/namespaces-vm.js.map +1 -1
  132. package/dist/docusaurus/view-model/options.d.ts +0 -43
  133. package/dist/docusaurus/view-model/options.d.ts.map +1 -1
  134. package/dist/docusaurus/view-model/options.js +0 -57
  135. package/dist/docusaurus/view-model/options.js.map +1 -1
  136. package/dist/docusaurus/view-model/pages-vm.d.ts +0 -115
  137. package/dist/docusaurus/view-model/pages-vm.d.ts.map +1 -1
  138. package/dist/docusaurus/view-model/pages-vm.js +0 -162
  139. package/dist/docusaurus/view-model/pages-vm.js.map +1 -1
  140. package/dist/docusaurus/view-model/tree-entries-vm.d.ts +8 -142
  141. package/dist/docusaurus/view-model/tree-entries-vm.d.ts.map +1 -1
  142. package/dist/docusaurus/view-model/tree-entries-vm.js +54 -174
  143. package/dist/docusaurus/view-model/tree-entries-vm.js.map +1 -1
  144. package/dist/docusaurus/view-model/view-model.d.ts +0 -125
  145. package/dist/docusaurus/view-model/view-model.d.ts.map +1 -1
  146. package/dist/docusaurus/view-model/view-model.js +20 -182
  147. package/dist/docusaurus/view-model/view-model.js.map +1 -1
  148. package/dist/docusaurus/workspace.d.ts +1 -126
  149. package/dist/docusaurus/workspace.d.ts.map +1 -1
  150. package/dist/docusaurus/workspace.js +8 -221
  151. package/dist/docusaurus/workspace.js.map +1 -1
  152. package/dist/doxygen/data-model/compounds/compounddef-dm.d.ts +5 -492
  153. package/dist/doxygen/data-model/compounds/compounddef-dm.d.ts.map +1 -1
  154. package/dist/doxygen/data-model/compounds/compounddef-dm.js +23 -672
  155. package/dist/doxygen/data-model/compounds/compounddef-dm.js.map +1 -1
  156. package/dist/doxygen/data-model/compounds/compoundreftype-dm.d.ts +0 -129
  157. package/dist/doxygen/data-model/compounds/compoundreftype-dm.d.ts.map +1 -1
  158. package/dist/doxygen/data-model/compounds/compoundreftype-dm.js +1 -145
  159. package/dist/doxygen/data-model/compounds/compoundreftype-dm.js.map +1 -1
  160. package/dist/doxygen/data-model/compounds/descriptiontype-dm.d.ts +104 -2848
  161. package/dist/doxygen/data-model/compounds/descriptiontype-dm.d.ts.map +1 -1
  162. package/dist/doxygen/data-model/compounds/descriptiontype-dm.js +73 -3975
  163. package/dist/doxygen/data-model/compounds/descriptiontype-dm.js.map +1 -1
  164. package/dist/doxygen/data-model/compounds/docvarlistentrytype-dm.d.ts +0 -165
  165. package/dist/doxygen/data-model/compounds/docvarlistentrytype-dm.d.ts.map +1 -1
  166. package/dist/doxygen/data-model/compounds/docvarlistentrytype-dm.js +0 -229
  167. package/dist/doxygen/data-model/compounds/docvarlistentrytype-dm.js.map +1 -1
  168. package/dist/doxygen/data-model/compounds/doxygentype-dm.d.ts +0 -70
  169. package/dist/doxygen/data-model/compounds/doxygentype-dm.d.ts.map +1 -1
  170. package/dist/doxygen/data-model/compounds/doxygentype-dm.js +0 -105
  171. package/dist/doxygen/data-model/compounds/doxygentype-dm.js.map +1 -1
  172. package/dist/doxygen/data-model/compounds/enumvaluetype-dm.d.ts +0 -84
  173. package/dist/doxygen/data-model/compounds/enumvaluetype-dm.d.ts.map +1 -1
  174. package/dist/doxygen/data-model/compounds/enumvaluetype-dm.js +1 -122
  175. package/dist/doxygen/data-model/compounds/enumvaluetype-dm.js.map +1 -1
  176. package/dist/doxygen/data-model/compounds/inctype-dm.d.ts +0 -116
  177. package/dist/doxygen/data-model/compounds/inctype-dm.d.ts.map +1 -1
  178. package/dist/doxygen/data-model/compounds/inctype-dm.js +3 -155
  179. package/dist/doxygen/data-model/compounds/inctype-dm.js.map +1 -1
  180. package/dist/doxygen/data-model/compounds/linkedtexttype-dm.d.ts +3 -138
  181. package/dist/doxygen/data-model/compounds/linkedtexttype-dm.d.ts.map +1 -1
  182. package/dist/doxygen/data-model/compounds/linkedtexttype-dm.js +5 -180
  183. package/dist/doxygen/data-model/compounds/linkedtexttype-dm.js.map +1 -1
  184. package/dist/doxygen/data-model/compounds/listofallmemberstype-dm.d.ts +0 -76
  185. package/dist/doxygen/data-model/compounds/listofallmemberstype-dm.d.ts.map +1 -1
  186. package/dist/doxygen/data-model/compounds/listofallmemberstype-dm.js +0 -107
  187. package/dist/doxygen/data-model/compounds/listofallmemberstype-dm.js.map +1 -1
  188. package/dist/doxygen/data-model/compounds/locationtype-dm.d.ts +0 -162
  189. package/dist/doxygen/data-model/compounds/locationtype-dm.d.ts.map +1 -1
  190. package/dist/doxygen/data-model/compounds/locationtype-dm.js +4 -203
  191. package/dist/doxygen/data-model/compounds/locationtype-dm.js.map +1 -1
  192. package/dist/doxygen/data-model/compounds/memberdeftype-dm.d.ts +2 -443
  193. package/dist/doxygen/data-model/compounds/memberdeftype-dm.d.ts.map +1 -1
  194. package/dist/doxygen/data-model/compounds/memberdeftype-dm.js +19 -475
  195. package/dist/doxygen/data-model/compounds/memberdeftype-dm.js.map +1 -1
  196. package/dist/doxygen/data-model/compounds/memberreftype-dm.d.ts +0 -141
  197. package/dist/doxygen/data-model/compounds/memberreftype-dm.d.ts.map +1 -1
  198. package/dist/doxygen/data-model/compounds/memberreftype-dm.js +0 -176
  199. package/dist/doxygen/data-model/compounds/memberreftype-dm.js.map +1 -1
  200. package/dist/doxygen/data-model/compounds/membertype-dm.d.ts +0 -101
  201. package/dist/doxygen/data-model/compounds/membertype-dm.d.ts.map +1 -1
  202. package/dist/doxygen/data-model/compounds/membertype-dm.js +0 -115
  203. package/dist/doxygen/data-model/compounds/membertype-dm.js.map +1 -1
  204. package/dist/doxygen/data-model/compounds/paramtype-dm.d.ts +0 -164
  205. package/dist/doxygen/data-model/compounds/paramtype-dm.d.ts.map +1 -1
  206. package/dist/doxygen/data-model/compounds/paramtype-dm.js +0 -208
  207. package/dist/doxygen/data-model/compounds/paramtype-dm.js.map +1 -1
  208. package/dist/doxygen/data-model/compounds/referencetype-dm.d.ts +0 -139
  209. package/dist/doxygen/data-model/compounds/referencetype-dm.d.ts.map +1 -1
  210. package/dist/doxygen/data-model/compounds/referencetype-dm.js +2 -175
  211. package/dist/doxygen/data-model/compounds/referencetype-dm.js.map +1 -1
  212. package/dist/doxygen/data-model/compounds/reftexttype-dm.d.ts +0 -120
  213. package/dist/doxygen/data-model/compounds/reftexttype-dm.d.ts.map +1 -1
  214. package/dist/doxygen/data-model/compounds/reftexttype-dm.js +2 -141
  215. package/dist/doxygen/data-model/compounds/reftexttype-dm.js.map +1 -1
  216. package/dist/doxygen/data-model/compounds/reftype-dm.d.ts +0 -268
  217. package/dist/doxygen/data-model/compounds/reftype-dm.d.ts.map +1 -1
  218. package/dist/doxygen/data-model/compounds/reftype-dm.js +4 -326
  219. package/dist/doxygen/data-model/compounds/reftype-dm.js.map +1 -1
  220. package/dist/doxygen/data-model/compounds/reimplementtype-dm.d.ts +0 -105
  221. package/dist/doxygen/data-model/compounds/reimplementtype-dm.d.ts.map +1 -1
  222. package/dist/doxygen/data-model/compounds/reimplementtype-dm.js +1 -139
  223. package/dist/doxygen/data-model/compounds/reimplementtype-dm.js.map +1 -1
  224. package/dist/doxygen/data-model/compounds/sectiondeftype-dm.d.ts +0 -168
  225. package/dist/doxygen/data-model/compounds/sectiondeftype-dm.d.ts.map +1 -1
  226. package/dist/doxygen/data-model/compounds/sectiondeftype-dm.js +0 -209
  227. package/dist/doxygen/data-model/compounds/sectiondeftype-dm.js.map +1 -1
  228. package/dist/doxygen/data-model/compounds/tableofcontentstype-dm.d.ts +0 -267
  229. package/dist/doxygen/data-model/compounds/tableofcontentstype-dm.d.ts.map +1 -1
  230. package/dist/doxygen/data-model/compounds/tableofcontentstype-dm.js +0 -354
  231. package/dist/doxygen/data-model/compounds/tableofcontentstype-dm.js.map +1 -1
  232. package/dist/doxygen/data-model/compounds/templateparamlisttype-dm.d.ts +0 -66
  233. package/dist/doxygen/data-model/compounds/templateparamlisttype-dm.d.ts.map +1 -1
  234. package/dist/doxygen/data-model/compounds/templateparamlisttype-dm.js +0 -97
  235. package/dist/doxygen/data-model/compounds/templateparamlisttype-dm.js.map +1 -1
  236. package/dist/doxygen/data-model/data-model.d.ts +0 -149
  237. package/dist/doxygen/data-model/data-model.d.ts.map +1 -1
  238. package/dist/doxygen/data-model/data-model.js +4 -197
  239. package/dist/doxygen/data-model/data-model.js.map +1 -1
  240. package/dist/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.d.ts +0 -115
  241. package/dist/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.d.ts.map +1 -1
  242. package/dist/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.js +4 -129
  243. package/dist/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.js.map +1 -1
  244. package/dist/doxygen/data-model/doxyfile/doxyfiletype-dm.d.ts +0 -87
  245. package/dist/doxygen/data-model/doxyfile/doxyfiletype-dm.d.ts.map +1 -1
  246. package/dist/doxygen/data-model/doxyfile/doxyfiletype-dm.js +0 -118
  247. package/dist/doxygen/data-model/doxyfile/doxyfiletype-dm.js.map +1 -1
  248. package/dist/doxygen/data-model/doxygen-xml-parser.d.ts +0 -253
  249. package/dist/doxygen/data-model/doxygen-xml-parser.d.ts.map +1 -1
  250. package/dist/doxygen/data-model/doxygen-xml-parser.js +0 -291
  251. package/dist/doxygen/data-model/doxygen-xml-parser.js.map +1 -1
  252. package/dist/doxygen/data-model/index/indexcompoundtype-dm.d.ts +0 -98
  253. package/dist/doxygen/data-model/index/indexcompoundtype-dm.d.ts.map +1 -1
  254. package/dist/doxygen/data-model/index/indexcompoundtype-dm.js +2 -122
  255. package/dist/doxygen/data-model/index/indexcompoundtype-dm.js.map +1 -1
  256. package/dist/doxygen/data-model/index/indexdoxygentype-dm.d.ts +0 -82
  257. package/dist/doxygen/data-model/index/indexdoxygentype-dm.d.ts.map +1 -1
  258. package/dist/doxygen/data-model/index/indexdoxygentype-dm.js +0 -114
  259. package/dist/doxygen/data-model/index/indexdoxygentype-dm.js.map +1 -1
  260. package/dist/doxygen/data-model/index/indexmembertype-dm.d.ts +0 -85
  261. package/dist/doxygen/data-model/index/indexmembertype-dm.d.ts.map +1 -1
  262. package/dist/doxygen/data-model/index/indexmembertype-dm.js +1 -107
  263. package/dist/doxygen/data-model/index/indexmembertype-dm.js.map +1 -1
  264. package/dist/doxygen/data-model/types.d.ts +0 -104
  265. package/dist/doxygen/data-model/types.d.ts.map +1 -1
  266. package/dist/doxygen/data-model/types.js +0 -52
  267. package/dist/doxygen/data-model/types.js.map +1 -1
  268. package/dist/index.d.ts +4 -16
  269. package/dist/index.d.ts.map +1 -1
  270. package/dist/index.js +4 -42
  271. package/dist/index.js.map +1 -1
  272. package/package.json +45 -51
  273. package/src/cli/main.ts +122 -0
  274. package/src/docusaurus/cli-options.ts +560 -0
  275. package/src/docusaurus/generator.ts +788 -0
  276. package/src/docusaurus/renderers/descriptiontype.ts +1299 -0
  277. package/src/docusaurus/renderers/docinternalstype.ts +354 -0
  278. package/src/docusaurus/renderers/doclisttype.ts +134 -0
  279. package/src/docusaurus/renderers/doctabletype.ts +220 -0
  280. package/src/docusaurus/renderers/doctitletype.ts +77 -0
  281. package/src/docusaurus/renderers/docvariablelisttype.ts +123 -0
  282. package/src/docusaurus/renderers/docxrefsecttype.ts +84 -0
  283. package/src/docusaurus/renderers/element-renderer-base.ts +112 -0
  284. package/src/docusaurus/renderers/inctype.ts +75 -0
  285. package/src/docusaurus/renderers/linkedtexttype.ts +64 -0
  286. package/src/docusaurus/renderers/listingtype.ts +235 -0
  287. package/src/docusaurus/renderers/paramtype.ts +116 -0
  288. package/src/docusaurus/renderers/referencetype.ts +83 -0
  289. package/src/docusaurus/renderers/reftexttype.ts +81 -0
  290. package/src/docusaurus/renderers/reftype.ts +77 -0
  291. package/src/docusaurus/renderers/renderers.ts +756 -0
  292. package/src/docusaurus/renderers/substringtype.ts +53 -0
  293. package/src/docusaurus/renderers/tableofcontentstype.ts +74 -0
  294. package/src/docusaurus/types.ts +187 -0
  295. package/src/docusaurus/utils.ts +409 -0
  296. package/src/docusaurus/view-model/README.md +12 -0
  297. package/src/docusaurus/view-model/classes-vm.ts +1088 -0
  298. package/src/docusaurus/view-model/collection-base.ts +352 -0
  299. package/src/docusaurus/view-model/compound-base-vm.ts +1340 -0
  300. package/src/docusaurus/view-model/concepts-vm.ts +719 -0
  301. package/src/docusaurus/view-model/description-anchors.ts +107 -0
  302. package/src/docusaurus/view-model/files-and-folders-vm.ts +1293 -0
  303. package/src/docusaurus/view-model/groups-vm.ts +548 -0
  304. package/src/docusaurus/view-model/members-vm.ts +1943 -0
  305. package/src/docusaurus/view-model/namespaces-vm.ts +1018 -0
  306. package/src/docusaurus/view-model/options.ts +95 -0
  307. package/src/docusaurus/view-model/pages-vm.ts +342 -0
  308. package/src/docusaurus/view-model/tree-entries-vm.ts +376 -0
  309. package/src/docusaurus/view-model/view-model.ts +513 -0
  310. package/src/docusaurus/workspace.ts +588 -0
  311. package/src/doxygen/data-model/README.md +13 -0
  312. package/src/doxygen/data-model/compounds/compounddef-dm.ts +1156 -0
  313. package/src/doxygen/data-model/compounds/compoundreftype-dm.ts +266 -0
  314. package/src/doxygen/data-model/compounds/descriptiontype-dm.ts +10107 -0
  315. package/src/doxygen/data-model/compounds/docvarlistentrytype-dm.ts +354 -0
  316. package/src/doxygen/data-model/compounds/doxygentype-dm.ts +187 -0
  317. package/src/doxygen/data-model/compounds/enumvaluetype-dm.ts +218 -0
  318. package/src/doxygen/data-model/compounds/inctype-dm.ts +217 -0
  319. package/src/doxygen/data-model/compounds/linkedtexttype-dm.ts +288 -0
  320. package/src/doxygen/data-model/compounds/listofallmemberstype-dm.ts +160 -0
  321. package/src/doxygen/data-model/compounds/locationtype-dm.ts +284 -0
  322. package/src/doxygen/data-model/compounds/memberdeftype-dm.ts +874 -0
  323. package/src/doxygen/data-model/compounds/memberreftype-dm.ts +270 -0
  324. package/src/doxygen/data-model/compounds/membertype-dm.ts +239 -0
  325. package/src/doxygen/data-model/compounds/paramtype-dm.ts +302 -0
  326. package/src/doxygen/data-model/compounds/referencetype-dm.ts +248 -0
  327. package/src/doxygen/data-model/compounds/reftexttype-dm.ts +234 -0
  328. package/src/doxygen/data-model/compounds/reftype-dm.ts +430 -0
  329. package/src/doxygen/data-model/compounds/reimplementtype-dm.ts +201 -0
  330. package/src/doxygen/data-model/compounds/sectiondeftype-dm.ts +330 -0
  331. package/src/doxygen/data-model/compounds/tableofcontentstype-dm.ts +563 -0
  332. package/src/doxygen/data-model/compounds/templateparamlisttype-dm.ts +150 -0
  333. package/src/doxygen/data-model/data-model.ts +377 -0
  334. package/src/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.ts +271 -0
  335. package/src/doxygen/data-model/doxyfile/doxyfiletype-dm.ts +200 -0
  336. package/src/doxygen/data-model/doxygen-xml-parser.ts +522 -0
  337. package/src/doxygen/data-model/index/indexcompoundtype-dm.ts +256 -0
  338. package/src/doxygen/data-model/index/indexdoxygentype-dm.ts +196 -0
  339. package/src/doxygen/data-model/index/indexmembertype-dm.ts +230 -0
  340. package/src/doxygen/data-model/types.ts +175 -0
  341. package/src/doxygen/data-model/xsds/README.md +6 -0
  342. package/src/doxygen/data-model/xsds/compound.xsd +1699 -0
  343. package/src/doxygen/data-model/xsds/doxyfile.xsd +355 -0
  344. package/src/doxygen/data-model/xsds/index.xsd +72 -0
  345. package/src/doxygen/data-model/xsds/xml.xsd +23 -0
  346. package/src/index.ts +261 -0
  347. package/src/tsconfig.json +10 -0
  348. package/dist/doxygen2docusaurus.d.ts +0 -4774
  349. package/dist/tsconfig.tsbuildinfo +0 -1
  350. package/dist/tsdoc-metadata.json +0 -11
@@ -0,0 +1,756 @@
1
+ /*
2
+ * This file is part of the xPack project (http://xpack.github.io).
3
+ * Copyright (c) 2025-2026 Liviu Ionescu. All rights reserved.
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software
6
+ * for any purpose is hereby granted, under the terms of the MIT license.
7
+ *
8
+ * If a copy of the license was not distributed with this file, it can
9
+ * be obtained from https://opensource.org/licenses/MIT.
10
+ */
11
+
12
+ // ----------------------------------------------------------------------------
13
+
14
+ import * as util from 'node:util'
15
+ import assert from 'node:assert'
16
+
17
+ import type {
18
+ ElementLinesRendererBase,
19
+ ElementStringRendererBase,
20
+ } from './element-renderer-base.js'
21
+ import {
22
+ BlockquoteLinesRenderer,
23
+ ComputerOutputDataModelStringRenderer,
24
+ DescriptionTypeLinesRenderer,
25
+ DocAnchorTypeLinesRenderer,
26
+ DocEmptyTypeStringRenderer,
27
+ DocMarkupTypeStringRenderer,
28
+ DocParamListTypeLinesRenderer,
29
+ DocParaTypeLinesRenderer,
30
+ DocRefTextTypeStringRenderer,
31
+ DocSimpleSectTypeLinesRenderer,
32
+ DocURLLinkStringRenderer,
33
+ EmojiStringRenderer,
34
+ FormulaStringRenderer,
35
+ HeadingLinesRenderer,
36
+ HtmlOnlyStringRenderer,
37
+ ImageStringRenderer,
38
+ PreformattedStringRenderer,
39
+ SpTypeStringRenderer,
40
+ VerbatimStringRenderer,
41
+ } from './descriptiontype.js'
42
+ import {
43
+ ListingTypeLinesRenderer,
44
+ HighlightTypeLinesRenderer,
45
+ } from './listingtype.js'
46
+ import { DocListTypeLinesRenderer } from './doclisttype.js'
47
+ import {
48
+ DocS1TypeLinesRenderer,
49
+ DocS2TypeLinesRenderer,
50
+ DocS3TypeLinesRenderer,
51
+ DocS4TypeLinesRenderer,
52
+ DocS5TypeLinesRenderer,
53
+ DocS6TypeLinesRenderer,
54
+ } from './docinternalstype.js'
55
+ import { DocTitleTypeLinesRenderer } from './doctitletype.js'
56
+ import {
57
+ DocVariableListTypeLinesRenderer,
58
+ VariableListPairLinesRenderer,
59
+ } from './docvariablelisttype.js'
60
+ import { DocXRefSectLinesRenderer as DocXRefSectStringRenderer } from './docxrefsecttype.js'
61
+ import { IncTypeLinesRenderer } from './inctype.js'
62
+ import { LinkedTextTypeStringRenderer } from './linkedtexttype.js'
63
+ import { ParamTypeLinesRenderer } from './paramtype.js'
64
+ import { RefTextTypeStringRenderer } from './reftexttype.js'
65
+ import { RefTypeLinesRenderer } from './reftype.js'
66
+ import type { Workspace } from '../workspace.js'
67
+ import { SubstringDocMarkupTypeRenderer } from './substringtype.js'
68
+ import {
69
+ DocCaptionLinesRenderer,
70
+ DocEntryTypeStringRenderer,
71
+ DocRowTypeLinesRenderer,
72
+ DocTableTypeLinesRenderer,
73
+ } from './doctabletype.js'
74
+ import { TocListLinesRenderer } from './tableofcontentstype.js'
75
+ import { ReferenceTypeStringRenderer } from './referencetype.js'
76
+ import type { DataModelElement } from '../../doxygen/data-model/types.js'
77
+
78
+ // ----------------------------------------------------------------------------
79
+
80
+ /**
81
+ * Central registry and coordinator for all rendering functionality.
82
+ *
83
+ * The Renderers class manages the registration and lookup of specialised
84
+ * renderer objects that convert Doxygen data model elements into
85
+ * Docusaurus-compatible Markdown output.
86
+ *
87
+ * @public
88
+ */
89
+ export class Renderers {
90
+ /** Map of element types to their corresponding line-based renderers. */
91
+ elementLinesRenderers = new Map<string, ElementLinesRendererBase>()
92
+
93
+ /** Map of element types to their corresponding string-based renderers. */
94
+ elementStringRenderers = new Map<string, ElementStringRendererBase>()
95
+
96
+ /**
97
+ * Registers all available renderers with the rendering system.
98
+ *
99
+ * Initialises and maps all specialised renderer instances to their
100
+ * corresponding data model element types, enabling proper conversion
101
+ * of XML elements to Markdown format.
102
+ *
103
+ * @param workspace - The workspace context containing configuration and data.
104
+ */
105
+ registerRenderers(workspace: Workspace): void {
106
+ // Add renderers for the parsed xml elements (in alphabetical order).
107
+
108
+ this.elementLinesRenderers.set(
109
+ 'VariableListPairDataModel',
110
+ new VariableListPairLinesRenderer(workspace)
111
+ )
112
+
113
+ this.elementLinesRenderers.set(
114
+ 'AbstractDescriptionType',
115
+ new DescriptionTypeLinesRenderer(workspace)
116
+ )
117
+ this.elementLinesRenderers.set(
118
+ 'AbstractDocAnchorType',
119
+ new DocAnchorTypeLinesRenderer(workspace)
120
+ )
121
+ this.elementLinesRenderers.set(
122
+ 'AbstractDocBlockQuoteType',
123
+ new BlockquoteLinesRenderer(workspace)
124
+ )
125
+ this.elementLinesRenderers.set(
126
+ 'AbstractDocCaptionType',
127
+ new DocCaptionLinesRenderer(workspace)
128
+ )
129
+ this.elementLinesRenderers.set(
130
+ 'AbstractDocHeadingType',
131
+ new HeadingLinesRenderer(workspace)
132
+ )
133
+ this.elementLinesRenderers.set(
134
+ 'AbstractDocListType',
135
+ new DocListTypeLinesRenderer(workspace)
136
+ )
137
+ this.elementLinesRenderers.set(
138
+ 'AbstractDocParamListType',
139
+ new DocParamListTypeLinesRenderer(workspace)
140
+ )
141
+ this.elementLinesRenderers.set(
142
+ 'AbstractDocParaType',
143
+ new DocParaTypeLinesRenderer(workspace)
144
+ )
145
+ this.elementLinesRenderers.set(
146
+ 'AbstractDocRowType',
147
+ new DocRowTypeLinesRenderer(workspace)
148
+ )
149
+ this.elementLinesRenderers.set(
150
+ 'AbstractDocSect1Type',
151
+ new DocS1TypeLinesRenderer(workspace)
152
+ )
153
+ this.elementLinesRenderers.set(
154
+ 'AbstractDocSect2Type',
155
+ new DocS2TypeLinesRenderer(workspace)
156
+ )
157
+ this.elementLinesRenderers.set(
158
+ 'AbstractDocSect3Type',
159
+ new DocS3TypeLinesRenderer(workspace)
160
+ )
161
+ this.elementLinesRenderers.set(
162
+ 'AbstractDocSect4Type',
163
+ new DocS4TypeLinesRenderer(workspace)
164
+ )
165
+ this.elementLinesRenderers.set(
166
+ 'AbstractDocSect5Type',
167
+ new DocS5TypeLinesRenderer(workspace)
168
+ )
169
+ this.elementLinesRenderers.set(
170
+ 'AbstractDocSect6Type',
171
+ new DocS6TypeLinesRenderer(workspace)
172
+ )
173
+ this.elementLinesRenderers.set(
174
+ 'AbstractDocSimpleSectType',
175
+ new DocSimpleSectTypeLinesRenderer(workspace)
176
+ )
177
+ this.elementLinesRenderers.set(
178
+ 'AbstractDocTableType',
179
+ new DocTableTypeLinesRenderer(workspace)
180
+ )
181
+ this.elementLinesRenderers.set(
182
+ 'AbstractDocTitleType',
183
+ new DocTitleTypeLinesRenderer(workspace)
184
+ )
185
+ this.elementLinesRenderers.set(
186
+ 'AbstractDocTocListType',
187
+ new TocListLinesRenderer(workspace)
188
+ )
189
+ this.elementLinesRenderers.set(
190
+ 'AbstractDocVariableListType',
191
+ new DocVariableListTypeLinesRenderer(workspace)
192
+ )
193
+ this.elementLinesRenderers.set(
194
+ 'AbstractDocXRefSectType',
195
+ new DocXRefSectStringRenderer(workspace)
196
+ )
197
+ this.elementLinesRenderers.set(
198
+ 'AbstractHighlightType',
199
+ new HighlightTypeLinesRenderer(workspace)
200
+ )
201
+ this.elementLinesRenderers.set(
202
+ 'AbstractIncType',
203
+ new IncTypeLinesRenderer(workspace)
204
+ )
205
+ this.elementLinesRenderers.set(
206
+ 'AbstractListingTypeBase',
207
+ new ListingTypeLinesRenderer(workspace)
208
+ )
209
+ this.elementLinesRenderers.set(
210
+ 'AbstractParamType',
211
+ new ParamTypeLinesRenderer(workspace)
212
+ )
213
+ this.elementLinesRenderers.set(
214
+ 'AbstractProgramListingType',
215
+ new ListingTypeLinesRenderer(workspace)
216
+ )
217
+ this.elementLinesRenderers.set(
218
+ 'AbstractRefType',
219
+ new RefTypeLinesRenderer(workspace)
220
+ )
221
+ // console.log(this.elementGenerators.size, 'element generators')
222
+
223
+ this.elementStringRenderers.set(
224
+ 'ComputerOutputDataModel',
225
+ new ComputerOutputDataModelStringRenderer(workspace)
226
+ )
227
+
228
+ this.elementStringRenderers.set(
229
+ 'AbstractDocEmptyType',
230
+ new DocEmptyTypeStringRenderer(workspace)
231
+ )
232
+ this.elementStringRenderers.set(
233
+ 'AbstractDocEntryType',
234
+ new DocEntryTypeStringRenderer(workspace)
235
+ )
236
+ this.elementStringRenderers.set(
237
+ 'AbstractEmojiType',
238
+ new EmojiStringRenderer(workspace)
239
+ )
240
+ this.elementStringRenderers.set(
241
+ 'AbstractDocFormulaType',
242
+ new FormulaStringRenderer(workspace)
243
+ )
244
+ this.elementStringRenderers.set(
245
+ 'AbstractDocHtmlOnlyType',
246
+ new HtmlOnlyStringRenderer(workspace)
247
+ )
248
+ this.elementStringRenderers.set(
249
+ 'AbstractDocImageType',
250
+ new ImageStringRenderer(workspace)
251
+ )
252
+ this.elementStringRenderers.set(
253
+ 'AbstractDocMarkupType',
254
+ new DocMarkupTypeStringRenderer(workspace)
255
+ )
256
+ this.elementStringRenderers.set(
257
+ 'AbstractDocRefTextType',
258
+ new DocRefTextTypeStringRenderer(workspace)
259
+ )
260
+ this.elementStringRenderers.set(
261
+ 'AbstractDocURLLink',
262
+ new DocURLLinkStringRenderer(workspace)
263
+ )
264
+ this.elementStringRenderers.set(
265
+ 'AbstractLinkedTextType',
266
+ new LinkedTextTypeStringRenderer(workspace)
267
+ )
268
+ this.elementStringRenderers.set(
269
+ 'AbstractPreformattedType',
270
+ new PreformattedStringRenderer(workspace)
271
+ )
272
+ this.elementStringRenderers.set(
273
+ 'AbstractReferenceType',
274
+ new ReferenceTypeStringRenderer(workspace)
275
+ )
276
+ this.elementStringRenderers.set(
277
+ 'AbstractRefTextType',
278
+ new RefTextTypeStringRenderer(workspace)
279
+ )
280
+ this.elementStringRenderers.set(
281
+ 'AbstractSpType',
282
+ new SpTypeStringRenderer(workspace)
283
+ )
284
+ this.elementStringRenderers.set(
285
+ 'AbstractVerbatimType',
286
+ new VerbatimStringRenderer(workspace)
287
+ )
288
+ this.elementStringRenderers.set(
289
+ 'SubstringDocMarkupType',
290
+ new SubstringDocMarkupTypeRenderer(workspace)
291
+ )
292
+ }
293
+
294
+ /**
295
+ * Retrieves a line-based renderer for the specified element.
296
+ *
297
+ * @remarks
298
+ * Searches through the element's class hierarchy to find a registered
299
+ * line-based renderer. Uses prototype chain traversal to support
300
+ * inheritance-based renderer selection for abstract types.
301
+ *
302
+ * @param element - The element object to find a renderer for
303
+ * @returns The corresponding line-based renderer, or undefined if none found
304
+ */
305
+ getElementLinesRenderer(
306
+ element: object
307
+ ): ElementLinesRendererBase | undefined {
308
+ let elementClass = element.constructor
309
+ while (elementClass.name !== '') {
310
+ // console.log(elementClass.name)
311
+ // console.log(this.elementGenerators)
312
+ const elementGenerator = this.elementLinesRenderers.get(elementClass.name)
313
+ if (elementGenerator !== undefined) {
314
+ return elementGenerator
315
+ }
316
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
317
+ elementClass = Object.getPrototypeOf(elementClass)
318
+ }
319
+
320
+ return undefined
321
+ }
322
+
323
+ /**
324
+ * Retrieves a string-based renderer for the specified element.
325
+ *
326
+ * @remarks
327
+ * Searches through the element's class hierarchy to find a registered
328
+ * string-based renderer. Uses prototype chain traversal to support
329
+ * inheritance-based renderer selection for abstract types.
330
+ *
331
+ * @param element - The element object to find a renderer for
332
+ * @returns The corresponding string-based renderer, or undefined if not found
333
+ */
334
+ getElementTextRenderer(
335
+ element: object
336
+ ): ElementStringRendererBase | undefined {
337
+ let elementClass = element.constructor
338
+ while (elementClass.name !== '') {
339
+ // console.log(elementClass.name)
340
+ // console.log(this.elementGenerators)
341
+ const elementGenerator = this.elementStringRenderers.get(
342
+ elementClass.name
343
+ )
344
+ if (elementGenerator !== undefined) {
345
+ return elementGenerator
346
+ }
347
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
348
+ elementClass = Object.getPrototypeOf(elementClass)
349
+ }
350
+
351
+ return undefined
352
+ }
353
+
354
+ // --------------------------------------------------------------------------
355
+
356
+ /**
357
+ * Renders a string with appropriate escaping for the target format.
358
+ *
359
+ * @remarks
360
+ * Applies format-specific character escaping to ensure proper rendering
361
+ * in different output contexts. Handles HTML entity escaping for HTML
362
+ * output and Markdown character escaping for Markdown output.
363
+ *
364
+ * @param element - The string to render and escape
365
+ * @param type - The target format ('text', 'markdown', 'html')
366
+ * @returns The properly escaped string for the target format
367
+ */
368
+ renderString(element: string, type: string): string {
369
+ if (type === 'text') {
370
+ return element
371
+ } else if (type === 'markdown') {
372
+ return element
373
+ .replaceAll(/&/g, '&amp;')
374
+ .replaceAll(/</g, '&lt;')
375
+ .replaceAll(/>/g, '&gt;')
376
+ .replaceAll(/\\/g, '\\\\') // Must be placed before \[ \]
377
+ .replaceAll(/\[/g, '\\[')
378
+ .replaceAll(/\]/g, '\\]')
379
+ .replaceAll(/\*/g, '\\*') // Markdown for bold
380
+ .replaceAll(/_/g, '\\_') // Markdown for italics
381
+ .replaceAll(/~/g, '\\~') // Markdown for strikethrough in GFM
382
+ } else if (type === 'html') {
383
+ return element
384
+ .replaceAll(/&/g, '&amp;')
385
+ .replaceAll(/</g, '&lt;')
386
+ .replaceAll(/>/g, '&gt;')
387
+ } else {
388
+ console.error('Unsupported type', type, 'in renderString')
389
+ return element
390
+ }
391
+ }
392
+
393
+ /**
394
+ * Renders an array of elements to formatted output lines.
395
+ *
396
+ * @remarks
397
+ * Processes each element in the array through the appropriate renderer
398
+ * and concatenates the resulting lines. Handles undefined arrays
399
+ * gracefully by returning empty arrays.
400
+ *
401
+ * @param elements - Array of elements to render, or undefined
402
+ * @param type - The rendering context type
403
+ * @returns Array of formatted output lines from all elements
404
+ */
405
+ renderElementsArrayToLines(
406
+ elements: DataModelElement[] | undefined,
407
+ type: string
408
+ ): string[] {
409
+ if (!Array.isArray(elements)) {
410
+ return []
411
+ }
412
+
413
+ const lines: string[] = []
414
+
415
+ for (const element of elements) {
416
+ lines.push(...this.renderElementToLines(element, type))
417
+ }
418
+
419
+ return lines
420
+ }
421
+
422
+ /**
423
+ * Renders a single element or element array to formatted output lines.
424
+ *
425
+ * @remarks
426
+ * Determines the appropriate renderer based on element type and delegates
427
+ * rendering. Handles strings, arrays, and objects with fallback logic
428
+ * between line and string renderers. Provides error handling for
429
+ * unrecognised element types.
430
+ *
431
+ * @param element - The element to render (single, array, or undefined)
432
+ * @param type - The rendering context type
433
+ * @returns Array of formatted output lines
434
+ */
435
+ renderElementToLines(
436
+ element: DataModelElement | DataModelElement[] | undefined,
437
+ type: string
438
+ ): string[] {
439
+ if (element === undefined) {
440
+ return []
441
+ }
442
+
443
+ if (typeof element === 'string') {
444
+ if (element.startsWith('\n')) {
445
+ return []
446
+ } else {
447
+ return [this.renderString(element, type)]
448
+ }
449
+ }
450
+
451
+ if (Array.isArray(element)) {
452
+ const lines: string[] = []
453
+ for (const elementOfArray of element) {
454
+ lines.push(...this.renderElementToLines(elementOfArray, type))
455
+ }
456
+ return lines
457
+ }
458
+
459
+ const linesRenderer: ElementLinesRendererBase | undefined =
460
+ this.getElementLinesRenderer(element)
461
+ if (linesRenderer !== undefined) {
462
+ return linesRenderer.renderToLines(element, type)
463
+ }
464
+
465
+ const textRenderer: ElementStringRendererBase | undefined =
466
+ this.getElementTextRenderer(element)
467
+ if (textRenderer !== undefined) {
468
+ return textRenderer.renderToString(element, type).split('\n')
469
+ }
470
+
471
+ console.error(util.inspect(element, { compact: false, depth: 999 }))
472
+ console.error(
473
+ 'no element lines renderer for',
474
+ element.constructor.name,
475
+ 'in',
476
+ this.constructor.name,
477
+ 'renderElementToLines'
478
+ )
479
+ assert(false)
480
+ }
481
+
482
+ /**
483
+ * Renders an array of elements to a concatenated string.
484
+ *
485
+ * @remarks
486
+ * Processes each element in the array through string rendering and
487
+ * concatenates all results into a single string. Handles undefined
488
+ * arrays by returning empty strings.
489
+ *
490
+ * @param elements - Array of elements to render, or undefined
491
+ * @param type - The rendering context type
492
+ * @returns Concatenated string from all rendered elements
493
+ */
494
+ renderElementsArrayToString(
495
+ elements: DataModelElement[] | undefined,
496
+ type: string
497
+ ): string {
498
+ if (elements === undefined) {
499
+ return ''
500
+ }
501
+
502
+ let text = ''
503
+ for (const element of elements) {
504
+ text += this.renderElementToString(element, type)
505
+ }
506
+
507
+ return text
508
+ }
509
+
510
+ /**
511
+ * Renders a single element or element array to a formatted string.
512
+ *
513
+ * @remarks
514
+ * Determines the appropriate renderer based on element type and delegates
515
+ * string rendering. Prioritises string renderers over line renderers
516
+ * with fallback conversion. Handles strings, arrays, and objects with
517
+ * comprehensive error handling.
518
+ *
519
+ * @param element - The element to render (single, array, or undefined)
520
+ * @param type - The rendering context type
521
+ * @returns The formatted string representation
522
+ */
523
+ renderElementToString(
524
+ element: DataModelElement | DataModelElement[] | undefined,
525
+ type: string
526
+ ): string {
527
+ if (element === undefined) {
528
+ return ''
529
+ }
530
+
531
+ if (typeof element === 'string') {
532
+ return this.renderString(element, type)
533
+ }
534
+
535
+ if (Array.isArray(element)) {
536
+ let text = ''
537
+ for (const elementOfArray of element) {
538
+ text += this.renderElementToString(elementOfArray, type)
539
+ }
540
+ return text
541
+ }
542
+
543
+ const textRenderer: ElementStringRendererBase | undefined =
544
+ this.getElementTextRenderer(element)
545
+ if (textRenderer !== undefined) {
546
+ return textRenderer.renderToString(element, type)
547
+ }
548
+
549
+ // console.warn(
550
+ // 'trying element lines renderer for',
551
+ // element.constructor.name,
552
+ // 'in',
553
+ // this.constructor.name,
554
+ // 'renderElementToString'
555
+ // )
556
+ const linesRenderer: ElementLinesRendererBase | undefined =
557
+ this.getElementLinesRenderer(element)
558
+ if (linesRenderer !== undefined) {
559
+ return linesRenderer.renderToLines(element, type).join('\n')
560
+ }
561
+
562
+ console.error(util.inspect(element, { compact: false, depth: 999 }))
563
+ console.error(
564
+ 'no element text renderer for',
565
+ element.constructor.name,
566
+ 'in',
567
+ this.constructor.name,
568
+ 'renderElementToString'
569
+ )
570
+ return ''
571
+ }
572
+
573
+ /**
574
+ * Renders a member index item to formatted HTML table rows.
575
+ *
576
+ * @remarks
577
+ * Generates HTML table rows for member documentation indices with
578
+ * support for templates, types, names, and descriptions. Creates
579
+ * structured layouts with appropriate CSS classes for consistent
580
+ * member presentation.
581
+ *
582
+ * @param params - Object containing member index rendering parameters
583
+ * @param params.template - Optional template text for member display
584
+ * @param params.type - Optional type information for the member
585
+ * @param params.name - The member name (required)
586
+ * @param params.childrenLines - Optional description lines for the member
587
+ * @returns Array of HTML table row strings
588
+ */
589
+ renderMembersIndexItemToHtmlLines({
590
+ template,
591
+ type,
592
+ name,
593
+ childrenLines,
594
+ }: {
595
+ template?: string | undefined
596
+ type?: string | undefined
597
+ name: string
598
+ childrenLines?: string[] | undefined
599
+ }): string[] {
600
+ const lines: string[] = []
601
+
602
+ if (template !== undefined && template.length > 0) {
603
+ lines.push('<tr class="doxyMemberIndexTemplate">')
604
+ lines.push(
605
+ `<td class="doxyMemberIndexTemplate" colspan="2">` +
606
+ `<div>${template}</div></td>`
607
+ )
608
+ lines.push('</tr>')
609
+
610
+ lines.push('<tr class="doxyMemberIndexItem">')
611
+ if (type !== undefined && type.length > 0) {
612
+ lines.push(
613
+ `<td class="doxyMemberIndexItemTypeTemplate" align="left" ` +
614
+ `valign="top">${type}</td>`
615
+ )
616
+ lines.push(
617
+ `<td class="doxyMemberIndexItemNameTemplate" align="left" ` +
618
+ `valign="top">${name}</td>`
619
+ )
620
+ } else {
621
+ lines.push(
622
+ `<td class="doxyMemberIndexItemNoTypeNameTemplate" colspan="2"` +
623
+ ` align="left" valign="top">${name}</td>`
624
+ )
625
+ }
626
+ lines.push('</tr>')
627
+ } else {
628
+ lines.push('<tr class="doxyMemberIndexItem">')
629
+ assert(type !== undefined)
630
+ lines.push(
631
+ `<td class="doxyMemberIndexItemType" align="left" valign="top">` +
632
+ `${type}</td>`
633
+ )
634
+ lines.push(
635
+ `<td class="doxyMemberIndexItemName" align="left" valign="top">` +
636
+ `${name}</td>`
637
+ )
638
+ lines.push('</tr>')
639
+ }
640
+
641
+ if (childrenLines !== undefined) {
642
+ lines.push('<tr class="doxyMemberIndexDescription">')
643
+ lines.push('<td class="doxyMemberIndexDescriptionLeft"></td>')
644
+ lines.push('<td class="doxyMemberIndexDescriptionRight">')
645
+ lines.push(...childrenLines)
646
+ lines.push('</td>')
647
+ lines.push('</tr>')
648
+ }
649
+
650
+ lines.push('<tr class="doxyMemberIndexSeparator">')
651
+ lines.push('<td class="doxyMemberIndexSeparator" colspan="2"></td>')
652
+ lines.push('</tr>')
653
+
654
+ return lines
655
+ }
656
+
657
+ /**
658
+ * Renders tree-structured data as HTML table with hierarchical display.
659
+ *
660
+ * @remarks
661
+ * Converts tree node structures into formatted HTML tables with
662
+ * predefined column layouts and CSS classes. Provides structured
663
+ * presentation for hierarchical data with consistent table markup
664
+ * and width-proportioned columns.
665
+ *
666
+ * @param params - Object containing tree table rendering parameters
667
+ * @param params.contentLines - Array of HTML content lines for table rows
668
+ * @returns Array of HTML table strings with wrapper markup
669
+ */
670
+ renderTreeTableToHtmlLines({
671
+ contentLines,
672
+ }: {
673
+ contentLines: string[]
674
+ }): string[] {
675
+ const lines: string[] = []
676
+
677
+ lines.push('')
678
+ lines.push('<table class="doxyTreeTable">')
679
+ lines.push('<colgroup><col style="width:40%"><col></colgroup>')
680
+
681
+ lines.push(...contentLines)
682
+
683
+ lines.push('')
684
+ lines.push('</table>')
685
+
686
+ return lines
687
+ }
688
+
689
+ /**
690
+ * Renders individual tree table row with hierarchical styling and content.
691
+ *
692
+ * @remarks
693
+ * Generates HTML table rows for tree structures with depth-based
694
+ * indentation, icon support, and linked labels. Provides consistent
695
+ * formatting for tree node presentation including descriptions and
696
+ * visual hierarchy indicators.
697
+ *
698
+ * @param params - Object containing tree row rendering parameters
699
+ * @param params.itemIconLetter - Optional icon character for the item
700
+ * @param params.itemIconClass - Optional CSS class for icon styling
701
+ * @param params.itemLabel - The display label for the tree item
702
+ * @param params.itemLink - The URL link for the tree item
703
+ * @param params.depth - The hierarchical depth level (0-based)
704
+ * @param params.description - The descriptive text for the item
705
+ * @returns Array of HTML table row strings
706
+ */
707
+ renderTreeTableRowToHtmlLines({
708
+ itemIconLetter,
709
+ itemIconClass,
710
+ itemLabel,
711
+ itemLink,
712
+ depth,
713
+ description,
714
+ }: {
715
+ itemIconLetter?: string
716
+ itemIconClass?: string
717
+ itemLabel: string
718
+ itemLink: string
719
+ depth: number
720
+ description: string
721
+ }): string[] {
722
+ const lines: string[] = []
723
+
724
+ lines.push('<tr class="doxyTreeItem">')
725
+ lines.push('<td class="doxyTreeItemLeft" align="left" valign="top">')
726
+ const depthStr = (depth * 12).toString()
727
+ lines.push(
728
+ `<span style="width: ${depthStr}px; display: inline-block;"></span>`
729
+ )
730
+ if (itemIconLetter !== undefined && itemIconLetter.length > 0) {
731
+ lines.push(
732
+ `<span class="doxyTreeIconBox">` +
733
+ `<span class="doxyTreeIcon">${itemIconLetter}</span>` +
734
+ `</span>`
735
+ )
736
+ }
737
+ if (itemIconClass !== undefined && itemIconClass.length > 0) {
738
+ lines.push(
739
+ `<a href="${itemLink}">` +
740
+ `<span class="${itemIconClass}">${itemLabel}</span>` +
741
+ `</a>`
742
+ )
743
+ } else {
744
+ lines.push(`<a href="${itemLink}">${itemLabel}</a>`)
745
+ }
746
+ lines.push('</td>')
747
+ lines.push('<td class="doxyTreeItemRight" align="left" valign="top">')
748
+ lines.push(description)
749
+ lines.push('</td>')
750
+ lines.push('</tr>')
751
+
752
+ return lines
753
+ }
754
+ }
755
+
756
+ // ----------------------------------------------------------------------------