1- using System ;
1+ using Mal . DocGen2 . Services . Markdown ;
2+ using Mal . DocGen2 . Services . XmlDocs ;
3+ using System ;
24using System . Collections . Generic ;
35using System . Diagnostics ;
46using System . IO ;
57using System . Linq ;
68using System . Net ;
79using System . Reflection ;
810using System . Threading . Tasks ;
9- using Mal . DocGen2 . Services . Markdown ;
10- using Mal . DocGen2 . Services . XmlDocs ;
1111
1212namespace Mal . DocGen2 . Services . MarkdownGenerators
1313{
14- class TypeGenerator : DocumentGenerator
14+ class TypeGenerator : DocumentGenerator
1515 {
1616 readonly TypeDefinitions _typeDefinitions ;
1717
@@ -84,7 +84,14 @@ async Task GeneratePage(ProgrammableBlockApi api, DirectoryInfo directory, ApiEn
8484
8585 async Task WriteTypeDefinitions ( ApiEntry entry , MarkdownWriter writer )
8686 {
87- var defs = _typeDefinitions . Definitions . Where ( d => d . TypeName == entry . FullName ) . ToList ( ) ;
87+ if ( entry . Name == null
88+ || entry . Name . EndsWith ( "IMyFunctionalBlock" )
89+ || entry . Name . EndsWith ( "IMyTerminalBlock" )
90+ || entry . Name . EndsWith ( "IMyCubeBlock" )
91+ || entry . Name . EndsWith ( "IMyEntity" ) )
92+ return ;
93+
94+ var defs = _typeDefinitions . Definitions . Where ( d => IsRelevantDefinition ( entry , d ) ) . ToList ( ) ;
8895 if ( ! defs . Any ( ) )
8996 return ;
9097 await writer . BeginParagraphAsync ( ) ;
@@ -99,9 +106,16 @@ async Task WriteTypeDefinitions(ApiEntry entry, MarkdownWriter writer)
99106 await writer . EndParagraphAsync ( ) ;
100107 }
101108
109+ private bool IsRelevantDefinition ( ApiEntry entry , TypeDefinitions . Definition definition )
110+ {
111+ if ( definition . TypeName == entry . FullName )
112+ return true ;
113+ return entry . InheritorEntries . Any ( e => IsRelevantDefinition ( e , definition ) ) ;
114+ }
115+
102116 string ConstructOf ( ApiEntry entry )
103117 {
104- var type = ( Type ) entry . Member ;
118+ var type = ( Type ) entry . Member ;
105119 if ( typeof ( Delegate ) . IsAssignableFrom ( type ) )
106120 return "Delegate" ;
107121 if ( type . IsEnum )
@@ -127,11 +141,7 @@ async Task WriteInterfaces(ApiEntry entry, MarkdownWriter writer)
127141 await writer . BeginParagraphAsync ( ) ;
128142 await writer . WriteLineAsync ( MarkdownInline . Strong ( "Implements: " ) ) ;
129143
130- var lines = entry . InheritedEntries . Select ( iface => new
131- {
132- Text = iface . ToString ( ApiEntryStringFlags . ShortDisplayName ) ,
133- Interface = iface
134- } )
144+ var lines = entry . InheritedEntries . Select ( iface => new { Text = iface . ToString ( ApiEntryStringFlags . ShortDisplayName ) , Interface = iface } )
135145 . OrderBy ( o => o . Text )
136146 . Select ( o => MemberGenerator . LinkTo ( o . Text , o . Interface ) )
137147 . ToList ( ) ;
@@ -145,11 +155,7 @@ async Task WriteInheritors(ApiEntry entry, MarkdownWriter writer)
145155 await writer . BeginParagraphAsync ( ) ;
146156 await writer . WriteLineAsync ( MarkdownInline . Strong ( "Inheritors: " ) ) ;
147157
148- var lines = entry . InheritorEntries . Select ( iface => new
149- {
150- Text = iface . ToString ( ApiEntryStringFlags . ShortDisplayName ) ,
151- Interface = iface
152- } )
158+ var lines = entry . InheritorEntries . Select ( iface => new { Text = iface . ToString ( ApiEntryStringFlags . ShortDisplayName ) , Interface = iface } )
153159 . OrderBy ( o => o . Text )
154160 . Select ( o => MemberGenerator . LinkTo ( o . Text , o . Interface ) )
155161 . ToList ( ) ;
@@ -190,8 +196,11 @@ IEnumerable<ApiEntry> AllInheritedEntriesOf(ApiEntry entry)
190196 if ( item . BaseEntry != null && visitedMembers . Add ( item . BaseEntry ) )
191197 stack . Push ( item . BaseEntry ) ;
192198 foreach ( var iface in item . InheritedEntries )
199+ {
193200 if ( visitedMembers . Add ( iface ) )
194201 stack . Push ( iface ) ;
202+ }
203+
195204 foreach ( var member in item . MemberEntries )
196205 yield return member ;
197206 }
@@ -235,6 +244,7 @@ async Task WriteTable(string title, IEnumerable<ApiEntry> entries, ProgrammableB
235244 await writer . WriteAsync ( MarkdownInline . Emphasized ( $ "Inherited from { MemberGenerator . LinkTo ( item . DeclaringEntry . ToString ( ApiEntryStringFlags . ShortDisplayName ) , item . DeclaringEntry ) } ") ) ;
236245 await writer . EndParagraphAsync ( ) ;
237246 }
247+
238248 await writer . EndQuoteAsync ( ) ;
239249
240250 //await writer.EndTableCellAsync();
0 commit comments