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