UNPKG

@zspk/ts-esm-generator

Version:

Генератор определений типов TypeScript для пользовательских элементов управления UI5, реализованных в TypeScript.

265 lines 13.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createJSDoc = exports.buildJSDocStringFromLines = void 0; const typescript_1 = __importDefault(require("typescript")); function buildJSDocStringFromLines(lines) { if (lines.length > 0) { return "\n * " + lines.join("\n * ") + "\n "; } return ""; } exports.buildJSDocStringFromLines = buildJSDocStringFromLines; function createJSDoc(node, jsDoc, lines) { lines = lines || []; const tags = []; if (jsDoc) { if (jsDoc.comment && jsDoc.comment.length) { lines.push(...jsDoc.comment); } } if (jsDoc.tagSince && jsDoc.tagSince.length) { tags.push("@since " + jsDoc.tagSince); } if (jsDoc.tagName && jsDoc.tagName.length) { tags.push("@name " + jsDoc.tagName); } if (jsDoc.tagNamespace && jsDoc.tagNamespace.length) { tags.push("@namespace " + jsDoc.tagNamespace); } if (jsDoc.tagAlias && jsDoc.tagAlias.length) { tags.push("@alias " + jsDoc.tagAlias); } if (jsDoc.tagReadonly && jsDoc.tagReadonly.length) { tags.push("@readonly " + jsDoc.tagReadonly); } if (jsDoc.tagExperimental && jsDoc.tagExperimental.length) { tags.push("@experimental " + jsDoc.tagExperimental); } if (jsDoc.tagDeprecation && jsDoc.tagDeprecation.length) { tags.push("@deprecated " + jsDoc.tagDeprecation); } if (tags.length) { lines.push("", ...tags); } if (lines.length) { typescript_1.default.addSyntheticLeadingComment(node, typescript_1.default.SyntaxKind.SingleLineCommentTrivia, ""); typescript_1.default.addSyntheticLeadingComment(node, typescript_1.default.SyntaxKind.SingleLineCommentTrivia, ""); typescript_1.default.addSyntheticLeadingComment(node, typescript_1.default.SyntaxKind.MultiLineCommentTrivia, "*" + buildJSDocStringFromLines(lines), true); } } exports.createJSDoc = createJSDoc; function addJSDoc(oClassInfo) { oClassInfo.generatedJSDoc = {}; function isEmpty(obj) { if (!obj) { return true; } for (const n in obj) { if (Object.prototype.hasOwnProperty.call(obj, n)) { return false; } } return true; } // for (const n in oClassInfo.properties) { // const info = oClassInfo.properties[n]; // // if (info.visibility === "hidden") { // // continue; // // } // newJSDoc( // MethodType.PropertyGet, // n, // info, // [], // [info.defaultValue !== null ? "Значение по умолчанию: " + JSON.stringify(info.defaultValue) : "", "@returns `" + info.type + "`"] // ); // newJSDoc( // MethodType.PropertySet, // n, // info, // [], // [ // generateParamTag(n, "новое значение свойства `" + n + "`. Значение `null` or `undefined` восстановит значение по умолчанию.", info.defaultValue as string), // "@returns ссылка на этот объект `this`" // ] // ); // if (info.bindable) { // newJSDoc(MethodType.PropertyBind, n, info, [], ["@param bindingInfo информация о привязке.", "@returns ссылка на этот объект `this`"]); // newJSDoc(MethodType.PropertyUnbind, n, info, [], ["@returns ссылка на этот объект `this`"]); // } // } // for (const n in oClassInfo.aggregations) { // const info = oClassInfo.aggregations[n]; // // if (info.visibility === "hidden") { // // continue; // // } // newJSDoc(MethodType.AggregationGet, n, info, [], ["@returns `" + info.type + "`"]); // if (info.cardinality == "0..n") { // const n1 = info.singularName; // newJSDoc( // MethodType.AggregationInsert, // n, // info, // [], // [ // "@param " + n1 + " вставить `" + info.type + "`. Если `null` или `undefined`, то ничего не будет вставлено.", // "@param index Позиция, в которую должен быть вставлен `" + n1 + "`.", // " Отрицительное значение вставит `" + n1 + "` в позицию 0.", // " Если индекс больше текущего размера аграгации, то `" + n1 + "` будет вставлен в конец.", // "@returns ссылка на этот объект `this`" // ] // ); // newJSDoc( // MethodType.AggregationAdd, // n, // info, // [], // ["@param " + n1 + " новый `" + info.type + "` для добавления. Если `null` или `undefined`, то ничего не будет вставлено.", "@returns ссылка на этот объект `this`"] // ); // newJSDoc( // MethodType.AggregationRemove, // n, // info, // [], // ["@param " + n1 + " удаляемый `" + info.type + "` или индекс или ID.", "@returns удаленный `" + n1 + "` или `null`"] // ); // newJSDoc(MethodType.AggregationRemoveAll, n, info, [], ["@returns список удаленных элементов"]); // newJSDoc( // MethodType.AggregationIndexOf, // n, // info, // ["Проверяет входит ли `" + info.type + "` в агрегацию и возвращает его индекс если найдено, иначе -1."], // ["@param " + n1 + " объект `" + info.type + "`, чей индекс нужно найти.", "@returns найденный индекс или -1."] // ); // } else { // newJSDoc(MethodType.AggregationSet, n, info, [], ["@param " + n + " объект `" + info.type + "` для установки.", "@returns ссылка на этот объект `this`"]); // } // newJSDoc(MethodType.AggregationDestroy, n, info, [], ["@returns ссылка на этот объект `this`"]); // if (info.bindable) { // newJSDoc(MethodType.AggregationBind, n, info, [], ["@returns ссылка на этот объект `this`"]); // newJSDoc(MethodType.AggregationUnbind, n, info, [], ["@returns ссылка на этот объект `this`"]); // } // } // for (const n in oClassInfo.associations) { // const info = oClassInfo.associations[n]; // // if (info.visibility === "hidden") { // // continue; // // } // newJSDoc( // MethodType.AssociationGet, // n, // info, // [ // info.cardinality === "0..n" // ? "возвращает массив идентификаторов элементов, которые являются текущими целями ассоциации `" + n + "`." // : "идентификатор элемента, который является текущей целью ассоциации `" + n + "`, или `null`." // ], // [] // ); // if (info.cardinality === "0..n") { // const n1 = info.singularName; // newJSDoc( // MethodType.AssociationAdd, // n, // info, // [], // ["@param " + n1 + " добавить `" + info.type + "`. Если `null` или `undefined`, то ничего не будет вставлено", "@returns ссылка на этот объект `this`"] // ); // newJSDoc( // MethodType.AssociationRemove, // n, // info, // [], // ["@param " + n1 + " объект `" + info.type + "` для удаления или индекс или ID", "@returns The removed " + n1 + ' or "null"'] // ); // newJSDoc(MethodType.AssociationRemoveAll, n, info, [], ["@returns список удаленных элементов"]); // } else { // newJSDoc( // MethodType.AssociationSet, // n, // info, // [], // [ // "@param " + n + " идентификатор элемента, который становится новой целью этого ассоциации; альтернативно можно указать экземпляр элемента.", // "@returns ссылка на этот объект `this`" // ] // ); // } // } // for (const n in oClassInfo.events) { // const info = oClassInfo.events[n]; // newJSDoc( // MethodType.EventAttach, // n, // info, // ["Прикрепляет обработчик событий `fn` к событию `" + n + "` объекта `" + oClassInfo.name + "`."], // [ // "При вызове контекст обработчика событий (его `this`) будет привязан к `listener`, если он указан,", // "в противном случае это будет связано с этим объектом`" + oClassInfo.name + "`.", // "", // "@param fn функция, вызываемая при возникновении события", // "@param listener контекст, с помощью которого будет вызов обработчика событий. По умолчанию это сам объект `" + oClassInfo.name + "`", // "", // "@returns ссылка на этот объект `this`" // ] // ); // newJSDoc( // MethodType.EventAttachWithData, // n, // info, // ["Прикрепляет обработчик событий `fn` к событию `" + n + "` объекта `" + oClassInfo.name + "`."], // [ // "При вызове контекст обработчика событий (его `this`) будет привязан к `listener`, если он указан,", // "в противном случае это будет связано с этим объектом`" + oClassInfo.name + "`.", // "", // "@param data объект полезной нагрузки, специфичный для приложения, который будет передан обработчику событий вместе с объектом события при запуске события.", // "@param fn функция, вызываемая при возникновении события", // "@param listener контекст, с помощью которого будет вызов обработчика событий. По умолчанию это сам объект `" + oClassInfo.name + "`", // "", // "@returns ссылка на этот объект `this`" // ] // ); // newJSDoc( // MethodType.EventDetach, // n, // info, // ["Открепляет обработчик событий `fn` к событию `" + n + "` объекта `" + oClassInfo.name + "`."], // [ // "Передаваемая функция и объект прослушивателя должны соответствовать тем, которые используются для регистрации событий.", // "", // "@param fn функция, вызываемая при возникновении события", // "@param listener контекст, с помощью которого будет вызов обработчика событий.", // "@returns ссылка на этот объект `this`", // info.since ? "@since " + info.since : "", // info.deprecation ? "@deprecated " + info.deprecation : "", // info.experimental ? "@experimental " + info.experimental : "" // ] // ); // const suffixLines = []; // if (info.allowPreventDefault) { // suffixLines.push( // "", // "Прослушиватели могут предотвратить действие этого события по умолчанию, вызвав метод `preventDefault` объекта события.", // "Возвращаемое значение этого метода указывает, должно ли выполняться действие по умолчанию.", // "" // ); // } // suffixLines.push("", "@param parameters параметры, передаваемые вместе с событием"); // if (!isEmpty(info.parameters)) { // for (const pName in info.parameters) { // suffixLines.push("@param [mParameters." + pName + "] " + (info.parameters[pName].doc || "")); // } // suffixLines.push(""); // } // if (info.allowPreventDefault) { // suffixLines.push("@returns cледует ли предотвращать действие по умолчанию"); // } else { // suffixLines.push("@returns ссылка на этот объект `this`"); // } // newJSDoc(MethodType.EventFire, n, info, [], suffixLines); // } } //# sourceMappingURL=jsdocGenerator.js.map