UNPKG

@xpack/docusaurus-plugin-doxygen

Version:

A Docusaurus plugin to integrate Doxygen into a Docusaurus project.

104 lines 5.49 kB
/* * This file is part of the xPack project (http://xpack.github.io). * Copyright (c) 2025 Liviu Ionescu. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software * for any purpose is hereby granted, under the terms of the MIT license. * * If a copy of the license was not distributed with this file, it can * be obtained from https://opensource.org/licenses/MIT. */ // ---------------------------------------------------------------------------- import assert from 'assert'; import * as util from 'node:util'; import { DefValDataModel, TypeDataModel, TypeConstraintDataModel } from './linkedtexttype-dm.js'; import { AbstractDataModelBase } from '../types.js'; // ---------------------------------------------------------------------------- // <xsd:complexType name="paramType"> // <xsd:sequence> // <xsd:element name="attributes" type="xsd:string" minOccurs="0" /> // <xsd:element name="type" type="linkedTextType" minOccurs="0" /> // <xsd:element name="declname" type="xsd:string" minOccurs="0" /> // <xsd:element name="defname" type="xsd:string" minOccurs="0" /> // <xsd:element name="array" type="xsd:string" minOccurs="0" /> // <xsd:element name="defval" type="linkedTextType" minOccurs="0" /> // <xsd:element name="typeconstraint" type="linkedTextType" minOccurs="0" /> // <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" /> // </xsd:sequence> // </xsd:complexType> export class AbstractParamType extends AbstractDataModelBase { constructor(xml, element, elementName) { super(elementName); // console.log(elementName, util.inspect(element, { compact: false, depth: 999 })) // ------------------------------------------------------------------------ // Process elements. const innerElements = xml.getInnerElements(element, elementName); // May be empty. // assert(innerElements.length > 0) for (const innerElement of innerElements) { // console.log(util.inspect(paramElement)) if (xml.hasInnerText(innerElement)) { // Ignore texts. } else if (xml.hasInnerElement(innerElement, 'attributes')) { const attributesElements = xml.getInnerElements(innerElement, 'attributes'); // console.log(util.inspect(defvalElements)) assert(attributesElements.length === 1); assert(attributesElements[0] !== undefined); this.attributes = xml.getInnerText(attributesElements[0]); } else if (xml.hasInnerElement(innerElement, 'type')) { this.type = new TypeDataModel(xml, innerElement); } else if (xml.hasInnerElement(innerElement, 'declname')) { const declnameElements = xml.getInnerElements(innerElement, 'declname'); // console.log(util.inspect(defvalElements)) assert(declnameElements.length === 1); assert(declnameElements[0] !== undefined); this.declname = xml.getInnerText(declnameElements[0]); } else if (xml.hasInnerElement(innerElement, 'defname')) { const defnameElements = xml.getInnerElements(innerElement, 'defname'); // console.log(util.inspect(defvalElements)) assert(defnameElements.length === 1); assert(defnameElements[0] !== undefined); this.declname = xml.getInnerText(defnameElements[0]); } else if (xml.hasInnerElement(innerElement, 'array')) { const arrayElements = xml.getInnerElements(innerElement, 'array'); // console.log(util.inspect(defvalElements)) assert(arrayElements.length === 1); assert(arrayElements[0] !== undefined); this.array = xml.getInnerText(arrayElements[0]); } else if (xml.hasInnerElement(innerElement, 'defval')) { this.defval = new DefValDataModel(xml, innerElement); } else if (xml.hasInnerElement(innerElement, 'typeconstraint')) { this.typeconstraint = new TypeConstraintDataModel(xml, innerElement); } else if (xml.hasInnerElement(innerElement, 'briefdescription')) { // TODO } else { console.error(util.inspect(innerElement)); console.error(`${elementName} element:`, Object.keys(innerElement), 'not implemented yet in', this.constructor.name); } } // ------------------------------------------------------------------------ // Process attributes. assert(!xml.hasAttributes(element)); // ------------------------------------------------------------------------ // console.log(util.inspect(this, { compact: false, depth: 999 })) } } // ---------------------------------------------------------------------------- // <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" /> export class ParamDataModel extends AbstractParamType { constructor(xml, element) { // console.log(elementName, util.inspect(element, { compact: false, depth: 999 })) super(xml, element, 'param'); } } // ---------------------------------------------------------------------------- //# sourceMappingURL=paramtype-dm.js.map