@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.
- package/LICENSE +1 -1
- package/README.md +2 -1
- package/bin/doxygen2docusaurus.js +1 -1
- package/dist/cli/main.d.ts +0 -14
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +0 -34
- package/dist/cli/main.js.map +1 -1
- package/dist/docusaurus/cli-options.d.ts +3 -292
- package/dist/docusaurus/cli-options.d.ts.map +1 -1
- package/dist/docusaurus/cli-options.js +6 -290
- package/dist/docusaurus/cli-options.js.map +1 -1
- package/dist/docusaurus/generator.d.ts +0 -172
- package/dist/docusaurus/generator.d.ts.map +1 -1
- package/dist/docusaurus/generator.js +20 -280
- package/dist/docusaurus/generator.js.map +1 -1
- package/dist/docusaurus/renderers/descriptiontype.d.ts +0 -417
- package/dist/docusaurus/renderers/descriptiontype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/descriptiontype.js +11 -555
- package/dist/docusaurus/renderers/descriptiontype.js.map +1 -1
- package/dist/docusaurus/renderers/docinternalstype.d.ts +0 -132
- package/dist/docusaurus/renderers/docinternalstype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/docinternalstype.js +0 -156
- package/dist/docusaurus/renderers/docinternalstype.js.map +1 -1
- package/dist/docusaurus/renderers/doclisttype.d.ts +0 -22
- package/dist/docusaurus/renderers/doclisttype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/doclisttype.js +0 -42
- package/dist/docusaurus/renderers/doclisttype.js.map +1 -1
- package/dist/docusaurus/renderers/doctabletype.d.ts +0 -88
- package/dist/docusaurus/renderers/doctabletype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/doctabletype.js +1 -113
- package/dist/docusaurus/renderers/doctabletype.js.map +1 -1
- package/dist/docusaurus/renderers/doctitletype.d.ts +0 -22
- package/dist/docusaurus/renderers/doctitletype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/doctitletype.js +0 -42
- package/dist/docusaurus/renderers/doctitletype.js.map +1 -1
- package/dist/docusaurus/renderers/docvariablelisttype.d.ts +0 -44
- package/dist/docusaurus/renderers/docvariablelisttype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/docvariablelisttype.js +1 -69
- package/dist/docusaurus/renderers/docvariablelisttype.js.map +1 -1
- package/dist/docusaurus/renderers/docxrefsecttype.d.ts +0 -22
- package/dist/docusaurus/renderers/docxrefsecttype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/docxrefsecttype.js +0 -38
- package/dist/docusaurus/renderers/docxrefsecttype.js.map +1 -1
- package/dist/docusaurus/renderers/element-renderer-base.d.ts +0 -74
- package/dist/docusaurus/renderers/element-renderer-base.d.ts.map +1 -1
- package/dist/docusaurus/renderers/element-renderer-base.js +0 -64
- package/dist/docusaurus/renderers/element-renderer-base.js.map +1 -1
- package/dist/docusaurus/renderers/inctype.d.ts +0 -23
- package/dist/docusaurus/renderers/inctype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/inctype.js +0 -41
- package/dist/docusaurus/renderers/inctype.js.map +1 -1
- package/dist/docusaurus/renderers/linkedtexttype.d.ts +0 -22
- package/dist/docusaurus/renderers/linkedtexttype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/linkedtexttype.js +0 -45
- package/dist/docusaurus/renderers/linkedtexttype.js.map +1 -1
- package/dist/docusaurus/renderers/listingtype.d.ts +0 -52
- package/dist/docusaurus/renderers/listingtype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/listingtype.js +1 -88
- package/dist/docusaurus/renderers/listingtype.js.map +1 -1
- package/dist/docusaurus/renderers/paramtype.d.ts +0 -22
- package/dist/docusaurus/renderers/paramtype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/paramtype.js +2 -51
- package/dist/docusaurus/renderers/paramtype.js.map +1 -1
- package/dist/docusaurus/renderers/referencetype.d.ts +0 -23
- package/dist/docusaurus/renderers/referencetype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/referencetype.js +0 -38
- package/dist/docusaurus/renderers/referencetype.js.map +1 -1
- package/dist/docusaurus/renderers/reftexttype.d.ts +0 -22
- package/dist/docusaurus/renderers/reftexttype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/reftexttype.js +0 -38
- package/dist/docusaurus/renderers/reftexttype.js.map +1 -1
- package/dist/docusaurus/renderers/reftype.d.ts +0 -22
- package/dist/docusaurus/renderers/reftype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/reftype.js +0 -38
- package/dist/docusaurus/renderers/reftype.js.map +1 -1
- package/dist/docusaurus/renderers/renderers.d.ts +0 -151
- package/dist/docusaurus/renderers/renderers.d.ts.map +1 -1
- package/dist/docusaurus/renderers/renderers.js +4 -184
- package/dist/docusaurus/renderers/renderers.js.map +1 -1
- package/dist/docusaurus/renderers/substringtype.d.ts +0 -22
- package/dist/docusaurus/renderers/substringtype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/substringtype.js +0 -39
- package/dist/docusaurus/renderers/substringtype.js.map +1 -1
- package/dist/docusaurus/renderers/tableofcontentstype.d.ts +0 -22
- package/dist/docusaurus/renderers/tableofcontentstype.d.ts.map +1 -1
- package/dist/docusaurus/renderers/tableofcontentstype.js +0 -39
- package/dist/docusaurus/renderers/tableofcontentstype.js.map +1 -1
- package/dist/docusaurus/types.d.ts +0 -110
- package/dist/docusaurus/types.d.ts.map +1 -1
- package/dist/docusaurus/types.js +0 -11
- package/dist/docusaurus/types.js.map +1 -1
- package/dist/docusaurus/utils.d.ts +0 -214
- package/dist/docusaurus/utils.d.ts.map +1 -1
- package/dist/docusaurus/utils.js +0 -296
- package/dist/docusaurus/utils.js.map +1 -1
- package/dist/docusaurus/view-model/classes-vm.d.ts +0 -137
- package/dist/docusaurus/view-model/classes-vm.d.ts.map +1 -1
- package/dist/docusaurus/view-model/classes-vm.js +9 -225
- package/dist/docusaurus/view-model/classes-vm.js.map +1 -1
- package/dist/docusaurus/view-model/collection-base.d.ts +0 -120
- package/dist/docusaurus/view-model/collection-base.d.ts.map +1 -1
- package/dist/docusaurus/view-model/collection-base.js +11 -101
- package/dist/docusaurus/view-model/collection-base.js.map +1 -1
- package/dist/docusaurus/view-model/compound-base-vm.d.ts +2 -147
- package/dist/docusaurus/view-model/compound-base-vm.d.ts.map +1 -1
- package/dist/docusaurus/view-model/compound-base-vm.js +47 -225
- package/dist/docusaurus/view-model/compound-base-vm.js.map +1 -1
- package/dist/docusaurus/view-model/concepts-vm.d.ts +26 -0
- package/dist/docusaurus/view-model/concepts-vm.d.ts.map +1 -0
- package/dist/docusaurus/view-model/concepts-vm.js +329 -0
- package/dist/docusaurus/view-model/concepts-vm.js.map +1 -0
- package/dist/docusaurus/view-model/description-anchors.d.ts +0 -58
- package/dist/docusaurus/view-model/description-anchors.d.ts.map +1 -1
- package/dist/docusaurus/view-model/description-anchors.js +0 -71
- package/dist/docusaurus/view-model/description-anchors.js.map +1 -1
- package/dist/docusaurus/view-model/files-and-folders-vm.d.ts +0 -247
- package/dist/docusaurus/view-model/files-and-folders-vm.d.ts.map +1 -1
- package/dist/docusaurus/view-model/files-and-folders-vm.js +61 -353
- package/dist/docusaurus/view-model/files-and-folders-vm.js.map +1 -1
- package/dist/docusaurus/view-model/groups-vm.d.ts +0 -148
- package/dist/docusaurus/view-model/groups-vm.d.ts.map +1 -1
- package/dist/docusaurus/view-model/groups-vm.js +2 -223
- package/dist/docusaurus/view-model/groups-vm.js.map +1 -1
- package/dist/docusaurus/view-model/members-vm.d.ts +0 -552
- package/dist/docusaurus/view-model/members-vm.d.ts.map +1 -1
- package/dist/docusaurus/view-model/members-vm.js +17 -702
- package/dist/docusaurus/view-model/members-vm.js.map +1 -1
- package/dist/docusaurus/view-model/namespaces-vm.d.ts +4 -199
- package/dist/docusaurus/view-model/namespaces-vm.d.ts.map +1 -1
- package/dist/docusaurus/view-model/namespaces-vm.js +79 -284
- package/dist/docusaurus/view-model/namespaces-vm.js.map +1 -1
- package/dist/docusaurus/view-model/options.d.ts +0 -43
- package/dist/docusaurus/view-model/options.d.ts.map +1 -1
- package/dist/docusaurus/view-model/options.js +0 -57
- package/dist/docusaurus/view-model/options.js.map +1 -1
- package/dist/docusaurus/view-model/pages-vm.d.ts +0 -115
- package/dist/docusaurus/view-model/pages-vm.d.ts.map +1 -1
- package/dist/docusaurus/view-model/pages-vm.js +0 -162
- package/dist/docusaurus/view-model/pages-vm.js.map +1 -1
- package/dist/docusaurus/view-model/tree-entries-vm.d.ts +8 -142
- package/dist/docusaurus/view-model/tree-entries-vm.d.ts.map +1 -1
- package/dist/docusaurus/view-model/tree-entries-vm.js +54 -174
- package/dist/docusaurus/view-model/tree-entries-vm.js.map +1 -1
- package/dist/docusaurus/view-model/view-model.d.ts +0 -125
- package/dist/docusaurus/view-model/view-model.d.ts.map +1 -1
- package/dist/docusaurus/view-model/view-model.js +20 -182
- package/dist/docusaurus/view-model/view-model.js.map +1 -1
- package/dist/docusaurus/workspace.d.ts +1 -126
- package/dist/docusaurus/workspace.d.ts.map +1 -1
- package/dist/docusaurus/workspace.js +8 -221
- package/dist/docusaurus/workspace.js.map +1 -1
- package/dist/doxygen/data-model/compounds/compounddef-dm.d.ts +5 -492
- package/dist/doxygen/data-model/compounds/compounddef-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/compounddef-dm.js +23 -672
- package/dist/doxygen/data-model/compounds/compounddef-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/compoundreftype-dm.d.ts +0 -129
- package/dist/doxygen/data-model/compounds/compoundreftype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/compoundreftype-dm.js +1 -145
- package/dist/doxygen/data-model/compounds/compoundreftype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/descriptiontype-dm.d.ts +104 -2848
- package/dist/doxygen/data-model/compounds/descriptiontype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/descriptiontype-dm.js +73 -3975
- package/dist/doxygen/data-model/compounds/descriptiontype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/docvarlistentrytype-dm.d.ts +0 -165
- package/dist/doxygen/data-model/compounds/docvarlistentrytype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/docvarlistentrytype-dm.js +0 -229
- package/dist/doxygen/data-model/compounds/docvarlistentrytype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/doxygentype-dm.d.ts +0 -70
- package/dist/doxygen/data-model/compounds/doxygentype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/doxygentype-dm.js +0 -105
- package/dist/doxygen/data-model/compounds/doxygentype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/enumvaluetype-dm.d.ts +0 -84
- package/dist/doxygen/data-model/compounds/enumvaluetype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/enumvaluetype-dm.js +1 -122
- package/dist/doxygen/data-model/compounds/enumvaluetype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/inctype-dm.d.ts +0 -116
- package/dist/doxygen/data-model/compounds/inctype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/inctype-dm.js +3 -155
- package/dist/doxygen/data-model/compounds/inctype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/linkedtexttype-dm.d.ts +3 -138
- package/dist/doxygen/data-model/compounds/linkedtexttype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/linkedtexttype-dm.js +5 -180
- package/dist/doxygen/data-model/compounds/linkedtexttype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/listofallmemberstype-dm.d.ts +0 -76
- package/dist/doxygen/data-model/compounds/listofallmemberstype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/listofallmemberstype-dm.js +0 -107
- package/dist/doxygen/data-model/compounds/listofallmemberstype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/locationtype-dm.d.ts +0 -162
- package/dist/doxygen/data-model/compounds/locationtype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/locationtype-dm.js +4 -203
- package/dist/doxygen/data-model/compounds/locationtype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/memberdeftype-dm.d.ts +2 -443
- package/dist/doxygen/data-model/compounds/memberdeftype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/memberdeftype-dm.js +19 -475
- package/dist/doxygen/data-model/compounds/memberdeftype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/memberreftype-dm.d.ts +0 -141
- package/dist/doxygen/data-model/compounds/memberreftype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/memberreftype-dm.js +0 -176
- package/dist/doxygen/data-model/compounds/memberreftype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/membertype-dm.d.ts +0 -101
- package/dist/doxygen/data-model/compounds/membertype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/membertype-dm.js +0 -115
- package/dist/doxygen/data-model/compounds/membertype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/paramtype-dm.d.ts +0 -164
- package/dist/doxygen/data-model/compounds/paramtype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/paramtype-dm.js +0 -208
- package/dist/doxygen/data-model/compounds/paramtype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/referencetype-dm.d.ts +0 -139
- package/dist/doxygen/data-model/compounds/referencetype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/referencetype-dm.js +2 -175
- package/dist/doxygen/data-model/compounds/referencetype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/reftexttype-dm.d.ts +0 -120
- package/dist/doxygen/data-model/compounds/reftexttype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/reftexttype-dm.js +2 -141
- package/dist/doxygen/data-model/compounds/reftexttype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/reftype-dm.d.ts +0 -268
- package/dist/doxygen/data-model/compounds/reftype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/reftype-dm.js +4 -326
- package/dist/doxygen/data-model/compounds/reftype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/reimplementtype-dm.d.ts +0 -105
- package/dist/doxygen/data-model/compounds/reimplementtype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/reimplementtype-dm.js +1 -139
- package/dist/doxygen/data-model/compounds/reimplementtype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/sectiondeftype-dm.d.ts +0 -168
- package/dist/doxygen/data-model/compounds/sectiondeftype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/sectiondeftype-dm.js +0 -209
- package/dist/doxygen/data-model/compounds/sectiondeftype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/tableofcontentstype-dm.d.ts +0 -267
- package/dist/doxygen/data-model/compounds/tableofcontentstype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/tableofcontentstype-dm.js +0 -354
- package/dist/doxygen/data-model/compounds/tableofcontentstype-dm.js.map +1 -1
- package/dist/doxygen/data-model/compounds/templateparamlisttype-dm.d.ts +0 -66
- package/dist/doxygen/data-model/compounds/templateparamlisttype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/compounds/templateparamlisttype-dm.js +0 -97
- package/dist/doxygen/data-model/compounds/templateparamlisttype-dm.js.map +1 -1
- package/dist/doxygen/data-model/data-model.d.ts +0 -149
- package/dist/doxygen/data-model/data-model.d.ts.map +1 -1
- package/dist/doxygen/data-model/data-model.js +4 -197
- package/dist/doxygen/data-model/data-model.js.map +1 -1
- package/dist/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.d.ts +0 -115
- package/dist/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.js +4 -129
- package/dist/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.js.map +1 -1
- package/dist/doxygen/data-model/doxyfile/doxyfiletype-dm.d.ts +0 -87
- package/dist/doxygen/data-model/doxyfile/doxyfiletype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/doxyfile/doxyfiletype-dm.js +0 -118
- package/dist/doxygen/data-model/doxyfile/doxyfiletype-dm.js.map +1 -1
- package/dist/doxygen/data-model/doxygen-xml-parser.d.ts +0 -253
- package/dist/doxygen/data-model/doxygen-xml-parser.d.ts.map +1 -1
- package/dist/doxygen/data-model/doxygen-xml-parser.js +0 -291
- package/dist/doxygen/data-model/doxygen-xml-parser.js.map +1 -1
- package/dist/doxygen/data-model/index/indexcompoundtype-dm.d.ts +0 -98
- package/dist/doxygen/data-model/index/indexcompoundtype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/index/indexcompoundtype-dm.js +2 -122
- package/dist/doxygen/data-model/index/indexcompoundtype-dm.js.map +1 -1
- package/dist/doxygen/data-model/index/indexdoxygentype-dm.d.ts +0 -82
- package/dist/doxygen/data-model/index/indexdoxygentype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/index/indexdoxygentype-dm.js +0 -114
- package/dist/doxygen/data-model/index/indexdoxygentype-dm.js.map +1 -1
- package/dist/doxygen/data-model/index/indexmembertype-dm.d.ts +0 -85
- package/dist/doxygen/data-model/index/indexmembertype-dm.d.ts.map +1 -1
- package/dist/doxygen/data-model/index/indexmembertype-dm.js +1 -107
- package/dist/doxygen/data-model/index/indexmembertype-dm.js.map +1 -1
- package/dist/doxygen/data-model/types.d.ts +0 -104
- package/dist/doxygen/data-model/types.d.ts.map +1 -1
- package/dist/doxygen/data-model/types.js +0 -52
- package/dist/doxygen/data-model/types.js.map +1 -1
- package/dist/index.d.ts +4 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -42
- package/dist/index.js.map +1 -1
- package/package.json +45 -51
- package/src/cli/main.ts +122 -0
- package/src/docusaurus/cli-options.ts +560 -0
- package/src/docusaurus/generator.ts +788 -0
- package/src/docusaurus/renderers/descriptiontype.ts +1299 -0
- package/src/docusaurus/renderers/docinternalstype.ts +354 -0
- package/src/docusaurus/renderers/doclisttype.ts +134 -0
- package/src/docusaurus/renderers/doctabletype.ts +220 -0
- package/src/docusaurus/renderers/doctitletype.ts +77 -0
- package/src/docusaurus/renderers/docvariablelisttype.ts +123 -0
- package/src/docusaurus/renderers/docxrefsecttype.ts +84 -0
- package/src/docusaurus/renderers/element-renderer-base.ts +112 -0
- package/src/docusaurus/renderers/inctype.ts +75 -0
- package/src/docusaurus/renderers/linkedtexttype.ts +64 -0
- package/src/docusaurus/renderers/listingtype.ts +235 -0
- package/src/docusaurus/renderers/paramtype.ts +116 -0
- package/src/docusaurus/renderers/referencetype.ts +83 -0
- package/src/docusaurus/renderers/reftexttype.ts +81 -0
- package/src/docusaurus/renderers/reftype.ts +77 -0
- package/src/docusaurus/renderers/renderers.ts +756 -0
- package/src/docusaurus/renderers/substringtype.ts +53 -0
- package/src/docusaurus/renderers/tableofcontentstype.ts +74 -0
- package/src/docusaurus/types.ts +187 -0
- package/src/docusaurus/utils.ts +409 -0
- package/src/docusaurus/view-model/README.md +12 -0
- package/src/docusaurus/view-model/classes-vm.ts +1088 -0
- package/src/docusaurus/view-model/collection-base.ts +352 -0
- package/src/docusaurus/view-model/compound-base-vm.ts +1340 -0
- package/src/docusaurus/view-model/concepts-vm.ts +719 -0
- package/src/docusaurus/view-model/description-anchors.ts +107 -0
- package/src/docusaurus/view-model/files-and-folders-vm.ts +1293 -0
- package/src/docusaurus/view-model/groups-vm.ts +548 -0
- package/src/docusaurus/view-model/members-vm.ts +1943 -0
- package/src/docusaurus/view-model/namespaces-vm.ts +1018 -0
- package/src/docusaurus/view-model/options.ts +95 -0
- package/src/docusaurus/view-model/pages-vm.ts +342 -0
- package/src/docusaurus/view-model/tree-entries-vm.ts +376 -0
- package/src/docusaurus/view-model/view-model.ts +513 -0
- package/src/docusaurus/workspace.ts +588 -0
- package/src/doxygen/data-model/README.md +13 -0
- package/src/doxygen/data-model/compounds/compounddef-dm.ts +1156 -0
- package/src/doxygen/data-model/compounds/compoundreftype-dm.ts +266 -0
- package/src/doxygen/data-model/compounds/descriptiontype-dm.ts +10107 -0
- package/src/doxygen/data-model/compounds/docvarlistentrytype-dm.ts +354 -0
- package/src/doxygen/data-model/compounds/doxygentype-dm.ts +187 -0
- package/src/doxygen/data-model/compounds/enumvaluetype-dm.ts +218 -0
- package/src/doxygen/data-model/compounds/inctype-dm.ts +217 -0
- package/src/doxygen/data-model/compounds/linkedtexttype-dm.ts +288 -0
- package/src/doxygen/data-model/compounds/listofallmemberstype-dm.ts +160 -0
- package/src/doxygen/data-model/compounds/locationtype-dm.ts +284 -0
- package/src/doxygen/data-model/compounds/memberdeftype-dm.ts +874 -0
- package/src/doxygen/data-model/compounds/memberreftype-dm.ts +270 -0
- package/src/doxygen/data-model/compounds/membertype-dm.ts +239 -0
- package/src/doxygen/data-model/compounds/paramtype-dm.ts +302 -0
- package/src/doxygen/data-model/compounds/referencetype-dm.ts +248 -0
- package/src/doxygen/data-model/compounds/reftexttype-dm.ts +234 -0
- package/src/doxygen/data-model/compounds/reftype-dm.ts +430 -0
- package/src/doxygen/data-model/compounds/reimplementtype-dm.ts +201 -0
- package/src/doxygen/data-model/compounds/sectiondeftype-dm.ts +330 -0
- package/src/doxygen/data-model/compounds/tableofcontentstype-dm.ts +563 -0
- package/src/doxygen/data-model/compounds/templateparamlisttype-dm.ts +150 -0
- package/src/doxygen/data-model/data-model.ts +377 -0
- package/src/doxygen/data-model/doxyfile/doxyfileoptiontype-dm.ts +271 -0
- package/src/doxygen/data-model/doxyfile/doxyfiletype-dm.ts +200 -0
- package/src/doxygen/data-model/doxygen-xml-parser.ts +522 -0
- package/src/doxygen/data-model/index/indexcompoundtype-dm.ts +256 -0
- package/src/doxygen/data-model/index/indexdoxygentype-dm.ts +196 -0
- package/src/doxygen/data-model/index/indexmembertype-dm.ts +230 -0
- package/src/doxygen/data-model/types.ts +175 -0
- package/src/doxygen/data-model/xsds/README.md +6 -0
- package/src/doxygen/data-model/xsds/compound.xsd +1699 -0
- package/src/doxygen/data-model/xsds/doxyfile.xsd +355 -0
- package/src/doxygen/data-model/xsds/index.xsd +72 -0
- package/src/doxygen/data-model/xsds/xml.xsd +23 -0
- package/src/index.ts +261 -0
- package/src/tsconfig.json +10 -0
- package/dist/doxygen2docusaurus.d.ts +0 -4774
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/tsdoc-metadata.json +0 -11
|
@@ -0,0 +1,719 @@
|
|
|
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 { CompoundDefDataModel } from '../../doxygen/data-model/compounds/compounddef-dm.js'
|
|
18
|
+
import {
|
|
19
|
+
FrontMatter,
|
|
20
|
+
NavbarItem,
|
|
21
|
+
SidebarCategory,
|
|
22
|
+
SidebarCategoryItem,
|
|
23
|
+
SidebarItem,
|
|
24
|
+
} from '../types.js'
|
|
25
|
+
import { CollectionBase } from './collection-base.js'
|
|
26
|
+
import { CompoundBase } from './compound-base-vm.js'
|
|
27
|
+
import {
|
|
28
|
+
flattenPath,
|
|
29
|
+
sanitizeAnonymousNamespace,
|
|
30
|
+
sanitizeHierarchicalPath,
|
|
31
|
+
} from '../utils.js'
|
|
32
|
+
import { Namespace, Namespaces } from './namespaces-vm.js'
|
|
33
|
+
import { ConceptEntry, TreeEntryBase } from './tree-entries-vm.js'
|
|
34
|
+
|
|
35
|
+
// ----------------------------------------------------------------------------
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Manages the collection of C++20 concept documentation compounds.
|
|
39
|
+
*
|
|
40
|
+
* @remarks
|
|
41
|
+
* Handles the organisation and generation of concept-based documentation,
|
|
42
|
+
* including namespace hierarchy association, sidebar generation, and
|
|
43
|
+
* comprehensive index file creation. Concepts provide formal constraints
|
|
44
|
+
* on template parameters, and their documentation is arranged within
|
|
45
|
+
* the namespace hierarchy in which they are defined.
|
|
46
|
+
*
|
|
47
|
+
* @public
|
|
48
|
+
*/
|
|
49
|
+
export class Concepts extends CollectionBase {
|
|
50
|
+
/**
|
|
51
|
+
* Array of top-level concepts not nested in any namespace.
|
|
52
|
+
*
|
|
53
|
+
* @remarks
|
|
54
|
+
* Contains concepts whose fully qualified name contains no `::` separator,
|
|
55
|
+
* used for organising top-level concept entries in index pages and
|
|
56
|
+
* the sidebar hierarchy.
|
|
57
|
+
*/
|
|
58
|
+
topLevelConcepts: Concept[] = []
|
|
59
|
+
|
|
60
|
+
// constructor(workspace: Workspace) {
|
|
61
|
+
// super(workspace)
|
|
62
|
+
// }
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Adds a concept compound to the collection.
|
|
66
|
+
*
|
|
67
|
+
* @remarks
|
|
68
|
+
* Creates a new {@link Concept} instance from the compound definition
|
|
69
|
+
* and registers it in the collection map for later processing.
|
|
70
|
+
*
|
|
71
|
+
* @param compoundDef - The compound definition data for the concept
|
|
72
|
+
* @returns The created {@link Concept} instance
|
|
73
|
+
*/
|
|
74
|
+
addChild(compoundDef: CompoundDefDataModel): CompoundBase {
|
|
75
|
+
const concept = new Concept(this, compoundDef)
|
|
76
|
+
this.collectionCompoundsById.set(concept.id, concept)
|
|
77
|
+
|
|
78
|
+
return concept
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Creates hierarchical relationships between concepts and namespaces.
|
|
83
|
+
*
|
|
84
|
+
* @remarks
|
|
85
|
+
* Iterates over all concept compounds and resolves their parent namespace
|
|
86
|
+
* by stripping the last `::` component of the fully qualified name.
|
|
87
|
+
* Concepts without a namespace qualifier are added to
|
|
88
|
+
* {@link topLevelConcepts}. Concepts with a qualifying namespace that
|
|
89
|
+
* cannot be found in the namespace collection are reported to the console.
|
|
90
|
+
*/
|
|
91
|
+
createCompoundsHierarchies(): void {
|
|
92
|
+
// throw new Error('Method not implemented.')
|
|
93
|
+
for (const concept of this.collectionCompoundsById.values()) {
|
|
94
|
+
assert(concept instanceof Concept)
|
|
95
|
+
|
|
96
|
+
if (concept.compoundName.includes('::')) {
|
|
97
|
+
const namespaceCompoundName = concept.compoundName.replace(
|
|
98
|
+
/::[a-zA-Z0-9_]+$/,
|
|
99
|
+
''
|
|
100
|
+
)
|
|
101
|
+
const namespaces =
|
|
102
|
+
this.workspace.viewModel.collections.get('namespaces')
|
|
103
|
+
assert(namespaces !== undefined)
|
|
104
|
+
const namespace = (
|
|
105
|
+
namespaces as Namespaces
|
|
106
|
+
).findNamespaceByCompoundName(namespaceCompoundName)
|
|
107
|
+
if (namespace !== undefined) {
|
|
108
|
+
concept.parent = namespace
|
|
109
|
+
namespace.concepts.push(concept)
|
|
110
|
+
if (this.workspace.options.debug) {
|
|
111
|
+
console.log(
|
|
112
|
+
'concept',
|
|
113
|
+
concept.compoundName,
|
|
114
|
+
'has parent namespace',
|
|
115
|
+
namespace.compoundName
|
|
116
|
+
)
|
|
117
|
+
}
|
|
118
|
+
} else {
|
|
119
|
+
console.log(
|
|
120
|
+
'concept',
|
|
121
|
+
concept.compoundName,
|
|
122
|
+
'has no parent namespace'
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
} else {
|
|
126
|
+
if (this.workspace.options.debug) {
|
|
127
|
+
this.topLevelConcepts.push(concept)
|
|
128
|
+
console.log('topLevelConceptId:', concept.id, concept.compoundName)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Adds concept sidebar items to the provided sidebar category.
|
|
136
|
+
*
|
|
137
|
+
* @remarks
|
|
138
|
+
* Creates a 'Concepts' category containing a hierarchical 'Hierarchy'
|
|
139
|
+
* sub-category that mirrors the namespace tree, plus a flat 'All'
|
|
140
|
+
* index entry. Only namespaces and concepts with sidebar metadata
|
|
141
|
+
* are included.
|
|
142
|
+
*
|
|
143
|
+
* @param sidebarCategory - The sidebar category to populate with concept
|
|
144
|
+
* items
|
|
145
|
+
*/
|
|
146
|
+
addSidebarItems(sidebarCategory: SidebarCategory): void {
|
|
147
|
+
const indicesSet = this.workspace.indicesMaps.get('concepts')
|
|
148
|
+
if (indicesSet === undefined) {
|
|
149
|
+
return
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const conceptsCategory: SidebarCategoryItem = {
|
|
153
|
+
type: 'category',
|
|
154
|
+
label: 'Concepts',
|
|
155
|
+
link: {
|
|
156
|
+
type: 'doc',
|
|
157
|
+
id: `${this.workspace.sidebarBaseId}indices/concepts/index`,
|
|
158
|
+
},
|
|
159
|
+
collapsed: true,
|
|
160
|
+
items: [
|
|
161
|
+
{
|
|
162
|
+
type: 'category',
|
|
163
|
+
label: 'Hierarchy',
|
|
164
|
+
link: {
|
|
165
|
+
type: 'doc',
|
|
166
|
+
id: `${this.workspace.sidebarBaseId}indices/concepts/index`,
|
|
167
|
+
},
|
|
168
|
+
collapsed: true,
|
|
169
|
+
items: [],
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const namespaces = this.workspace.viewModel.collections.get('namespaces')
|
|
175
|
+
if (namespaces !== undefined) {
|
|
176
|
+
for (const namespace of (namespaces as Namespaces).topLevelNamespaces) {
|
|
177
|
+
const item = this.createNamespaceItemRecursively(namespace)
|
|
178
|
+
if (item !== undefined) {
|
|
179
|
+
;(conceptsCategory.items[0] as SidebarCategoryItem).items.push(item)
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
for (const concept of this.topLevelConcepts) {
|
|
185
|
+
const item = this.createConceptItem(concept)
|
|
186
|
+
if (item !== undefined) {
|
|
187
|
+
;(conceptsCategory.items[0] as SidebarCategoryItem).items.push(item)
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (indicesSet.has('all')) {
|
|
192
|
+
conceptsCategory.items.push({
|
|
193
|
+
type: 'doc',
|
|
194
|
+
label: 'All',
|
|
195
|
+
id: `${this.workspace.sidebarBaseId}indices/concepts/all`,
|
|
196
|
+
})
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
sidebarCategory.items.push(conceptsCategory)
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Recursively builds a sidebar item tree for a namespace and its concepts.
|
|
204
|
+
*
|
|
205
|
+
* @remarks
|
|
206
|
+
* Returns `undefined` when the namespace lacks sidebar metadata or
|
|
207
|
+
* contains no concepts anywhere in its subtree. Child namespaces are
|
|
208
|
+
* processed recursively before individual concept items are appended.
|
|
209
|
+
*
|
|
210
|
+
* @param namespace - The namespace to create a sidebar item for
|
|
211
|
+
* @returns A sidebar category item, or `undefined` if the namespace
|
|
212
|
+
* should be omitted
|
|
213
|
+
*/
|
|
214
|
+
private createNamespaceItemRecursively(
|
|
215
|
+
namespace: Namespace
|
|
216
|
+
): SidebarItem | undefined {
|
|
217
|
+
if (
|
|
218
|
+
namespace.sidebarLabel === undefined ||
|
|
219
|
+
namespace.sidebarId === undefined
|
|
220
|
+
) {
|
|
221
|
+
return undefined
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (!namespace.hasConcepts()) {
|
|
225
|
+
return undefined
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const categoryItem: SidebarCategoryItem = {
|
|
229
|
+
type: 'category',
|
|
230
|
+
label: namespace.sidebarLabel,
|
|
231
|
+
link: {
|
|
232
|
+
type: 'doc',
|
|
233
|
+
id: `${this.workspace.sidebarBaseId}${namespace.sidebarId}`,
|
|
234
|
+
},
|
|
235
|
+
className: 'doxyEllipsis',
|
|
236
|
+
collapsed: true,
|
|
237
|
+
items: [],
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
for (const childNamespace of namespace.children) {
|
|
241
|
+
if (childNamespace instanceof Namespace) {
|
|
242
|
+
const item = this.createNamespaceItemRecursively(childNamespace)
|
|
243
|
+
if (item !== undefined) {
|
|
244
|
+
categoryItem.items.push(item)
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
for (const concept of namespace.concepts) {
|
|
250
|
+
const item = this.createConceptItem(concept)
|
|
251
|
+
if (item !== undefined) {
|
|
252
|
+
categoryItem.items.push(item)
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
return categoryItem
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Creates a sidebar category item for a single concept.
|
|
261
|
+
*
|
|
262
|
+
* @remarks
|
|
263
|
+
* Returns `undefined` when the concept lacks the sidebar identifier
|
|
264
|
+
* or label required to construct a valid navigation entry.
|
|
265
|
+
*
|
|
266
|
+
* @param concept - The concept to create a sidebar item for
|
|
267
|
+
* @returns A sidebar category item, or `undefined` if the concept
|
|
268
|
+
* should be omitted
|
|
269
|
+
*/
|
|
270
|
+
private createConceptItem(concept: Concept): SidebarCategoryItem | undefined {
|
|
271
|
+
if (concept.sidebarId === undefined || concept.sidebarLabel === undefined) {
|
|
272
|
+
return undefined
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const item: SidebarCategoryItem = {
|
|
276
|
+
type: 'category',
|
|
277
|
+
label: concept.sidebarLabel,
|
|
278
|
+
link: {
|
|
279
|
+
type: 'doc',
|
|
280
|
+
id: `${this.workspace.sidebarBaseId}${concept.sidebarId}`,
|
|
281
|
+
},
|
|
282
|
+
collapsed: true,
|
|
283
|
+
items: [],
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return item
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Creates navbar items for the concepts section.
|
|
291
|
+
*
|
|
292
|
+
* @remarks
|
|
293
|
+
* Returns a single navbar item linking to the top-level concepts index
|
|
294
|
+
* page.
|
|
295
|
+
*
|
|
296
|
+
* @returns An array containing the concepts navbar item
|
|
297
|
+
*/
|
|
298
|
+
createNavbarItems(): NavbarItem[] {
|
|
299
|
+
const navbarItem: NavbarItem = {
|
|
300
|
+
label: 'Concepts',
|
|
301
|
+
to: `${this.workspace.menuBaseUrl}concepts/`,
|
|
302
|
+
}
|
|
303
|
+
return [navbarItem]
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Generates the main concepts index Markdown file.
|
|
308
|
+
*
|
|
309
|
+
* @remarks
|
|
310
|
+
* Writes `indices/concepts/index.md` containing a hierarchical tree table
|
|
311
|
+
* of all namespaces and their concepts. The file is skipped when the
|
|
312
|
+
* collection contains no renderable content.
|
|
313
|
+
*/
|
|
314
|
+
override async generateIndexDotMdFile(): Promise<void> {
|
|
315
|
+
const filePath =
|
|
316
|
+
this.workspace.outputFolderPath + 'indices/concepts/index.md'
|
|
317
|
+
const permalink = 'concepts'
|
|
318
|
+
|
|
319
|
+
const frontMatter: FrontMatter = {
|
|
320
|
+
title: 'Concepts',
|
|
321
|
+
slug: `${this.workspace.slugBaseUrl}${permalink}`,
|
|
322
|
+
description: 'The C++20 concepts defined in the project',
|
|
323
|
+
custom_edit_url: null,
|
|
324
|
+
keywords: ['doxygen', 'concepts', 'reference'],
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
const contentLines: string[] = []
|
|
328
|
+
|
|
329
|
+
const namespaces = this.workspace.viewModel.collections.get('namespaces')
|
|
330
|
+
if (namespaces !== undefined) {
|
|
331
|
+
for (const namespace of (namespaces as Namespaces).topLevelNamespaces) {
|
|
332
|
+
contentLines.push(
|
|
333
|
+
...this.generateNamespacesIndexMdLinesRecursively(namespace, 1)
|
|
334
|
+
)
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
contentLines.push(
|
|
339
|
+
...this.generateConceptsIndexMdFile(this.topLevelConcepts, 1)
|
|
340
|
+
)
|
|
341
|
+
|
|
342
|
+
if (contentLines.length === 0) {
|
|
343
|
+
return
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
const lines: string[] = []
|
|
347
|
+
|
|
348
|
+
lines.push('The C++20 concepts used by this project are:')
|
|
349
|
+
|
|
350
|
+
lines.push(...this.workspace.renderTreeTableToHtmlLines({ contentLines }))
|
|
351
|
+
|
|
352
|
+
if (this.workspace.options.verbose) {
|
|
353
|
+
console.log(`Writing concepts index file '${filePath}'...`)
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
await this.workspace.writeOutputMdFile({
|
|
357
|
+
filePath,
|
|
358
|
+
frontMatter,
|
|
359
|
+
bodyLines: lines,
|
|
360
|
+
})
|
|
361
|
+
|
|
362
|
+
return
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Recursively generates index Markdown lines for a namespace subtree.
|
|
367
|
+
*
|
|
368
|
+
* @remarks
|
|
369
|
+
* Produces an indented tree-table row for the namespace followed by rows
|
|
370
|
+
* for its direct concepts and then recurses into child namespaces.
|
|
371
|
+
* Returns an empty array when the namespace has no permalink or no
|
|
372
|
+
* concepts anywhere in its subtree.
|
|
373
|
+
*
|
|
374
|
+
* @param namespace - The namespace to render
|
|
375
|
+
* @param depth - The current indentation depth in the tree table
|
|
376
|
+
* @returns An array of HTML lines for the namespace and its concepts
|
|
377
|
+
*/
|
|
378
|
+
private generateNamespacesIndexMdLinesRecursively(
|
|
379
|
+
namespace: Namespace,
|
|
380
|
+
depth: number
|
|
381
|
+
): string[] {
|
|
382
|
+
// console.log(util.inspect(namespace, { compact: false, depth: 999 }))
|
|
383
|
+
|
|
384
|
+
const lines: string[] = []
|
|
385
|
+
|
|
386
|
+
const label = this.workspace.renderString(namespace.treeEntryName, 'html')
|
|
387
|
+
|
|
388
|
+
const permalink = this.workspace.getPagePermalink(namespace.id)
|
|
389
|
+
if (permalink === undefined || permalink.length === 0) {
|
|
390
|
+
// console.log(namespace)
|
|
391
|
+
return []
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
if (!namespace.hasConcepts()) {
|
|
395
|
+
return []
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// assert(permalink !== undefined && permalink.length > 1)
|
|
399
|
+
|
|
400
|
+
let description = ''
|
|
401
|
+
if (
|
|
402
|
+
namespace.briefDescriptionHtmlString !== undefined &&
|
|
403
|
+
namespace.briefDescriptionHtmlString.length > 0
|
|
404
|
+
) {
|
|
405
|
+
description = namespace.briefDescriptionHtmlString.replace(/[.]$/, '')
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
lines.push('')
|
|
409
|
+
lines.push(
|
|
410
|
+
...this.workspace.renderTreeTableRowToHtmlLines({
|
|
411
|
+
itemIconLetter: 'N',
|
|
412
|
+
itemLabel: label,
|
|
413
|
+
itemLink: permalink,
|
|
414
|
+
depth,
|
|
415
|
+
description,
|
|
416
|
+
})
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
lines.push('')
|
|
420
|
+
lines.push(
|
|
421
|
+
...this.generateConceptsIndexMdFile(namespace.concepts, depth + 1)
|
|
422
|
+
)
|
|
423
|
+
|
|
424
|
+
if (namespace.children.length > 0) {
|
|
425
|
+
for (const childNamespace of namespace.children) {
|
|
426
|
+
if (childNamespace instanceof Namespace) {
|
|
427
|
+
lines.push(
|
|
428
|
+
...this.generateNamespacesIndexMdLinesRecursively(
|
|
429
|
+
childNamespace,
|
|
430
|
+
depth + 1
|
|
431
|
+
)
|
|
432
|
+
)
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
return lines
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Generates index Markdown lines for a list of concepts.
|
|
442
|
+
*
|
|
443
|
+
* @remarks
|
|
444
|
+
* Produces one tree-table row per concept that has a valid permalink.
|
|
445
|
+
* Concepts without a permalink (i.e., those with no content and
|
|
446
|
+
* `suggestToDoDescriptions` disabled) are silently skipped.
|
|
447
|
+
*
|
|
448
|
+
* @param concepts - The concepts to render
|
|
449
|
+
* @param depth - The current indentation depth in the tree table
|
|
450
|
+
* @returns An array of HTML lines, one tree-table row per concept
|
|
451
|
+
*/
|
|
452
|
+
private generateConceptsIndexMdFile(
|
|
453
|
+
concepts: Concept[],
|
|
454
|
+
depth: number
|
|
455
|
+
): string[] {
|
|
456
|
+
// console.log(util.inspect(namespace, { compact: false, depth: 999 }))
|
|
457
|
+
|
|
458
|
+
const lines: string[] = []
|
|
459
|
+
|
|
460
|
+
for (const concept of concepts) {
|
|
461
|
+
const label = this.workspace.renderString(concept.treeEntryName, 'html')
|
|
462
|
+
|
|
463
|
+
const permalink = this.workspace.getPagePermalink(concept.id)
|
|
464
|
+
if (permalink === undefined || permalink.length === 0) {
|
|
465
|
+
// console.log(concept)
|
|
466
|
+
continue
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
let description = ''
|
|
470
|
+
if (
|
|
471
|
+
concept.briefDescriptionHtmlString !== undefined &&
|
|
472
|
+
concept.briefDescriptionHtmlString.length > 0
|
|
473
|
+
) {
|
|
474
|
+
description = concept.briefDescriptionHtmlString.replace(/[.]$/, '')
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
lines.push(
|
|
478
|
+
...this.workspace.renderTreeTableRowToHtmlLines({
|
|
479
|
+
itemIconLetter: 'R',
|
|
480
|
+
itemLabel: label,
|
|
481
|
+
itemLink: permalink,
|
|
482
|
+
depth,
|
|
483
|
+
description,
|
|
484
|
+
})
|
|
485
|
+
)
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
return lines
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* Generates the flat 'all concepts' index Markdown file.
|
|
493
|
+
*
|
|
494
|
+
* @remarks
|
|
495
|
+
* Writes a single alphabetical index file (`indices/concepts/all`) that
|
|
496
|
+
* lists every concept in the collection regardless of namespace nesting.
|
|
497
|
+
* The method returns immediately when the collection is empty.
|
|
498
|
+
*/
|
|
499
|
+
override async generatePerInitialsIndexMdFiles(): Promise<void> {
|
|
500
|
+
if (this.collectionCompoundsById.size === 0) {
|
|
501
|
+
return
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
const allUnorderedEntriesMap = new Map<string, TreeEntryBase>()
|
|
505
|
+
|
|
506
|
+
for (const [conceptId, concept] of this.collectionCompoundsById) {
|
|
507
|
+
const entry = new ConceptEntry(concept as Concept)
|
|
508
|
+
allUnorderedEntriesMap.set(conceptId, entry)
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
// ------------------------------------------------------------------------
|
|
512
|
+
|
|
513
|
+
await this.generateIndexFile({
|
|
514
|
+
group: 'concepts',
|
|
515
|
+
fileKind: 'all',
|
|
516
|
+
title: 'Concepts Definitions Index',
|
|
517
|
+
description: 'The C++20 concepts defined in the project are:',
|
|
518
|
+
map: allUnorderedEntriesMap,
|
|
519
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
520
|
+
filter: (kind) => true,
|
|
521
|
+
})
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// ============================================================================
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Represents a single C++20 concept documentation compound.
|
|
529
|
+
*
|
|
530
|
+
* @remarks
|
|
531
|
+
* Encapsulates all information derived from a Doxygen compound definition
|
|
532
|
+
* of kind `concept`, including template parameter specification, the
|
|
533
|
+
* concept constraint expression, and the rendered documentation page.
|
|
534
|
+
*
|
|
535
|
+
* @public
|
|
536
|
+
*/
|
|
537
|
+
export class Concept extends CompoundBase {
|
|
538
|
+
/**
|
|
539
|
+
* The unqualified concept name, without any namespace prefix.
|
|
540
|
+
*
|
|
541
|
+
* @remarks
|
|
542
|
+
* Derived from the fully qualified `compoundName` by stripping everything
|
|
543
|
+
* up to and including the last `::`. Anonymous namespace markers are
|
|
544
|
+
* also removed.
|
|
545
|
+
*/
|
|
546
|
+
unqualifiedName = '???'
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Rendered template parameter specification string.
|
|
550
|
+
*
|
|
551
|
+
* @remarks
|
|
552
|
+
* Contains the comma-separated list of template parameter names as they
|
|
553
|
+
* appear in the `template<...>` preamble of the concept definition.
|
|
554
|
+
* Empty when the concept has no template parameters.
|
|
555
|
+
*/
|
|
556
|
+
templateParameters = ''
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* The rendered HTML string representing the concept constraint expression.
|
|
560
|
+
*
|
|
561
|
+
* @remarks
|
|
562
|
+
* Populated during {@link initializeLate} by rendering the Doxygen
|
|
563
|
+
* `initializer` element. Defaults to `'???'` until initialised.
|
|
564
|
+
*/
|
|
565
|
+
initializerString = '???'
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Creates a new Concept instance.
|
|
569
|
+
*
|
|
570
|
+
* @remarks
|
|
571
|
+
* Derives display names, permalink, and sidebar identifiers from the
|
|
572
|
+
* compound definition. The constraint expression
|
|
573
|
+
* ({@link initializerString}) is not rendered here; it is deferred to
|
|
574
|
+
* {@link initializeLate} because it may reference other compounds that
|
|
575
|
+
* have not yet been created.
|
|
576
|
+
*
|
|
577
|
+
* @param collection - The owning {@link Concepts} collection
|
|
578
|
+
* @param compoundDef - The Doxygen compound definition data
|
|
579
|
+
*/
|
|
580
|
+
constructor(collection: Concepts, compoundDef: CompoundDefDataModel) {
|
|
581
|
+
super(collection, compoundDef)
|
|
582
|
+
|
|
583
|
+
// console.log('Class.constructor', util.inspect(compoundDef))
|
|
584
|
+
|
|
585
|
+
// The compoundName is the fully qualified namespace name.
|
|
586
|
+
// Keep only the last name.
|
|
587
|
+
this.unqualifiedName = sanitizeAnonymousNamespace(
|
|
588
|
+
compoundDef.compoundName.replace(/.*::/, '')
|
|
589
|
+
)
|
|
590
|
+
this.indexName = sanitizeAnonymousNamespace(
|
|
591
|
+
this.compoundName.replace(/.*::/, '')
|
|
592
|
+
)
|
|
593
|
+
|
|
594
|
+
this.pageTitle = `\`${this.unqualifiedName}\` Concept`
|
|
595
|
+
|
|
596
|
+
this.templateParameters = this.renderTemplateParameterNamesToString(
|
|
597
|
+
compoundDef.templateParamList
|
|
598
|
+
)
|
|
599
|
+
|
|
600
|
+
const sanitizedPath: string = sanitizeHierarchicalPath(
|
|
601
|
+
sanitizeAnonymousNamespace(this.compoundName.replaceAll('::', '/'))
|
|
602
|
+
)
|
|
603
|
+
|
|
604
|
+
this.relativePermalink = `concepts/${sanitizedPath}`
|
|
605
|
+
this.sidebarId = `concepts/${flattenPath(sanitizedPath)}`
|
|
606
|
+
const { unqualifiedName } = this
|
|
607
|
+
this.sidebarLabel = unqualifiedName
|
|
608
|
+
|
|
609
|
+
this.treeEntryName = this.indexName
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* Performs late initialisation that depends on the full compound graph.
|
|
614
|
+
*
|
|
615
|
+
* @remarks
|
|
616
|
+
* Renders the concept constraint expression after all compounds have
|
|
617
|
+
* been created, since the initializer may contain cross-references.
|
|
618
|
+
* Concepts with no content are hidden (permalink cleared) unless
|
|
619
|
+
* `suggestToDoDescriptions` is enabled.
|
|
620
|
+
*/
|
|
621
|
+
override initializeLate(): void {
|
|
622
|
+
super.initializeLate()
|
|
623
|
+
|
|
624
|
+
const { workspace } = this.collection
|
|
625
|
+
|
|
626
|
+
// console.log(this)
|
|
627
|
+
if (!this.hasAnyContent()) {
|
|
628
|
+
if (!workspace.options.suggestToDoDescriptions) {
|
|
629
|
+
console.log(this.kind, this.compoundName, 'has no content, not shown')
|
|
630
|
+
|
|
631
|
+
this.sidebarId = undefined
|
|
632
|
+
this.sidebarLabel = undefined
|
|
633
|
+
this.relativePermalink = undefined
|
|
634
|
+
|
|
635
|
+
return
|
|
636
|
+
} else {
|
|
637
|
+
if (workspace.options.verbose) {
|
|
638
|
+
console.log(
|
|
639
|
+
this.kind,
|
|
640
|
+
this.compoundName,
|
|
641
|
+
'has no content, see the TODO description'
|
|
642
|
+
)
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
// There might be references to other compounds in the initializer,
|
|
648
|
+
// so render it after all compounds are created.
|
|
649
|
+
if (this._private._compoundDef?.initializer !== undefined) {
|
|
650
|
+
this.initializerString = workspace
|
|
651
|
+
.renderElementToLines(this._private._compoundDef.initializer, 'html')
|
|
652
|
+
.join('<br/>\n')
|
|
653
|
+
.replace(/template/, 'template ')
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
/**
|
|
658
|
+
* Renders the concept documentation page body to an array of HTML lines.
|
|
659
|
+
*
|
|
660
|
+
* @remarks
|
|
661
|
+
* Produces the brief description header, the `## Definition` section
|
|
662
|
+
* containing the rendered constraint expression, and the detailed
|
|
663
|
+
* description block. The `frontMatter` parameter is currently unused
|
|
664
|
+
* but is required by the base class interface.
|
|
665
|
+
*
|
|
666
|
+
* @param frontMatter - The front matter object for the output page
|
|
667
|
+
* @returns An array of Markdown/HTML lines forming the page body
|
|
668
|
+
*/
|
|
669
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
670
|
+
renderToLines(frontMatter: FrontMatter): string[] {
|
|
671
|
+
const lines: string[] = []
|
|
672
|
+
|
|
673
|
+
// const { workspace } = this.collection
|
|
674
|
+
|
|
675
|
+
const name = this.collection.workspace.renderString(
|
|
676
|
+
this.compoundName,
|
|
677
|
+
'html'
|
|
678
|
+
)
|
|
679
|
+
const descriptionTodo = `@concept ${name}`
|
|
680
|
+
|
|
681
|
+
// The Description header is always shown.
|
|
682
|
+
const morePermalink = '#details'
|
|
683
|
+
|
|
684
|
+
lines.push(
|
|
685
|
+
this.renderBriefDescriptionToHtmlString({
|
|
686
|
+
briefDescriptionHtmlString: this.briefDescriptionHtmlString,
|
|
687
|
+
todo: descriptionTodo,
|
|
688
|
+
morePermalink,
|
|
689
|
+
})
|
|
690
|
+
)
|
|
691
|
+
|
|
692
|
+
lines.push('')
|
|
693
|
+
lines.push('## Definition')
|
|
694
|
+
|
|
695
|
+
lines.push('')
|
|
696
|
+
lines.push('<div class="doxyDefinition">')
|
|
697
|
+
|
|
698
|
+
lines.push(this.initializerString)
|
|
699
|
+
lines.push('</div>')
|
|
700
|
+
|
|
701
|
+
lines.push(
|
|
702
|
+
...this.renderDetailedDescriptionToHtmlLines({
|
|
703
|
+
briefDescriptionHtmlString: this.briefDescriptionHtmlString,
|
|
704
|
+
detailedDescriptionHtmlLines: this.detailedDescriptionHtmlLines,
|
|
705
|
+
todo: descriptionTodo,
|
|
706
|
+
showHeader: true,
|
|
707
|
+
showBrief: !this.hasSect1InDescription,
|
|
708
|
+
})
|
|
709
|
+
)
|
|
710
|
+
|
|
711
|
+
// lines.push(...this.renderSectionsToLines())
|
|
712
|
+
|
|
713
|
+
lines.push(...this.renderGeneratedFromToLines())
|
|
714
|
+
|
|
715
|
+
return lines
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
// ----------------------------------------------------------------------------
|