From 1de1cf5d2330b6aff8a1b839ea7d2349031c65f5 Mon Sep 17 00:00:00 2001 From: Sergey Volkov Date: Thu, 20 Feb 2020 15:40:56 +0300 Subject: [PATCH] fix(docgen): ts definition for Ti.Android.R fix #29 --- .../generators/typescript_generator.js | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/titanium-docgen/generators/typescript_generator.js b/packages/titanium-docgen/generators/typescript_generator.js index 563e1b82..3daf8044 100644 --- a/packages/titanium-docgen/generators/typescript_generator.js +++ b/packages/titanium-docgen/generators/typescript_generator.js @@ -263,7 +263,8 @@ class DocsParser { 'proxy', 'view' ]; - return validSubtypes.includes(typeInfo.__subtype) && !forcedInterfaces.includes(typeInfo.name); + return validSubtypes.includes(typeInfo.__subtype) && !forcedInterfaces.includes(typeInfo.name) + && !(typeInfo.createable === false && isConstantsOnlyProxy(typeInfo)); } /** @@ -882,14 +883,14 @@ class MemberNode { this.methods = []; - methods.sort(sortByName).forEach(methodDoc => { + const filterFunc = this.filterMethods.bind(this); + + methods.filter(filterFunc).sort(sortByName).forEach(methodDoc => { if (this.fullyQualifiedName === 'Titanium.Proxy' && /LifecycleContainer$/.test(methodDoc.name)) { methodDoc.optional = true; } const isEventMethod = eventsMethods.includes(methodDoc.name); - if (!isEventMethod && methodDoc.__inherits && methodDoc.__inherits !== this.fullyQualifiedName && !this.membersAreStatic) { - return; - } + if (this.proxyEventMap && isEventMethod) { const parameters = [ { name: 'name', @@ -946,6 +947,11 @@ class MemberNode { }); } + filterMethods(methodDoc) { + const isEventMethod = eventsMethods.includes(methodDoc.name); + return !(!isEventMethod && methodDoc.__inherits && methodDoc.__inherits !== this.fullyQualifiedName && !this.membersAreStatic); + } + parseEvents(events) { if (!events || !events.length) { return; @@ -1078,10 +1084,16 @@ class NamespaceNode extends MemberNode { filterProperties(propertyDoc) { // If we have interface/class for this namespace, then we need here only upper cased constants let onlyUpperCased = true; + let excluded = propertyDoc.__hide; if (this.relatedNode) { onlyUpperCased = propertyDoc.name.toUpperCase() === propertyDoc.name; } - return onlyUpperCased && super.filterProperties(propertyDoc); + return onlyUpperCased && !excluded && super.filterProperties(propertyDoc); + } + + filterMethods(methodDoc) { + let excluded = methodDoc.__hide; + return !excluded && super.filterMethods(methodDoc); } addNamespace(namespaceNode) {