@@ -19,6 +19,8 @@ import html.page.diagram.DiagramStats
19
19
trait DiagramDirectiveParser {
20
20
this : ModelFactory with DiagramFactory with CommentFactory with TreeFactory =>
21
21
22
+ import this .global .definitions .AnyRefClass
23
+
22
24
// /// DIAGRAM FILTERS //////////////////////////////////////////////////////////////////////////////////////////////
23
25
24
26
/**
@@ -48,16 +50,22 @@ trait DiagramDirectiveParser {
48
50
/** Hide subclasses (for type hierarchy diagrams) */
49
51
def hideSubclasses : Boolean
50
52
/** Show related classes from other objects/traits/packages (for content diagrams) */
51
- def showInheritedNodes : Boolean
53
+ def hideInheritedNodes : Boolean
52
54
/** Hide a node from the diagram */
53
- def hideNode (clazz : TemplateEntity ): Boolean
55
+ def hideNode (clazz : Node ): Boolean
54
56
/** Hide an edge from the diagram */
55
- def hideEdge (clazz1 : TemplateEntity , clazz2 : TemplateEntity ): Boolean
57
+ def hideEdge (clazz1 : Node , clazz2 : Node ): Boolean
56
58
}
57
59
58
60
/** Main entry point into this trait: generate the filter for inheritance diagrams */
59
61
def makeInheritanceDiagramFilter (template : DocTemplateImpl ): DiagramFilter = {
60
- val defaultFilter = if (template.isClass || template.isTrait) FullDiagram else NoDiagramAtAll
62
+
63
+ val defaultFilter =
64
+ if (template.isClass || template.isTrait || template.sym == AnyRefClass )
65
+ FullDiagram
66
+ else
67
+ NoDiagramAtAll
68
+
61
69
if (template.comment.isDefined)
62
70
makeDiagramFilter(template, template.comment.get.inheritDiagram, defaultFilter, true )
63
71
else
@@ -83,9 +91,9 @@ trait DiagramDirectiveParser {
83
91
val hideOutgoingImplicits : Boolean = false
84
92
val hideSuperclasses : Boolean = false
85
93
val hideSubclasses : Boolean = false
86
- val showInheritedNodes : Boolean = false
87
- def hideNode (clazz : TemplateEntity ): Boolean = false
88
- def hideEdge (clazz1 : TemplateEntity , clazz2 : TemplateEntity ): Boolean = false
94
+ val hideInheritedNodes : Boolean = false
95
+ def hideNode (clazz : Node ): Boolean = false
96
+ def hideEdge (clazz1 : Node , clazz2 : Node ): Boolean = false
89
97
}
90
98
91
99
/** Hide the diagram completely, no need for special filtering */
@@ -95,9 +103,9 @@ trait DiagramDirectiveParser {
95
103
val hideOutgoingImplicits : Boolean = true
96
104
val hideSuperclasses : Boolean = true
97
105
val hideSubclasses : Boolean = true
98
- val showInheritedNodes : Boolean = false
99
- def hideNode (clazz : TemplateEntity ): Boolean = true
100
- def hideEdge (clazz1 : TemplateEntity , clazz2 : TemplateEntity ): Boolean = true
106
+ val hideInheritedNodes : Boolean = true
107
+ def hideNode (clazz : Node ): Boolean = true
108
+ def hideEdge (clazz1 : Node , clazz2 : Node ): Boolean = true
101
109
}
102
110
103
111
/** The AnnotationDiagramFilter trait directs the diagram engine according to an annotation
@@ -107,12 +115,18 @@ trait DiagramDirectiveParser {
107
115
hideOutgoingImplicits : Boolean ,
108
116
hideSuperclasses : Boolean ,
109
117
hideSubclasses : Boolean ,
110
- showInheritedNodes : Boolean ,
118
+ hideInheritedNodes : Boolean ,
111
119
hideNodesFilter : List [Pattern ],
112
120
hideEdgesFilter : List [(Pattern , Pattern )]) extends DiagramFilter {
113
121
114
- def hideNode (clazz : TemplateEntity ): Boolean = {
115
- val qualifiedName = clazz.qualifiedName
122
+ private [this ] def getName (n : Node ): String =
123
+ if (n.tpl.isDefined)
124
+ n.tpl.get.qualifiedName
125
+ else
126
+ n.name
127
+
128
+ def hideNode (clazz : Node ): Boolean = {
129
+ val qualifiedName = getName(clazz)
116
130
for (hideFilter <- hideNodesFilter)
117
131
if (hideFilter.matcher(qualifiedName).matches) {
118
132
// println(hideFilter + ".matcher(" + qualifiedName + ").matches = " + hideFilter.matcher(qualifiedName).matches)
@@ -121,9 +135,9 @@ trait DiagramDirectiveParser {
121
135
false
122
136
}
123
137
124
- def hideEdge (clazz1 : TemplateEntity , clazz2 : TemplateEntity ): Boolean = {
125
- val clazz1Name = clazz1.qualifiedName
126
- val clazz2Name = clazz2.qualifiedName
138
+ def hideEdge (clazz1 : Node , clazz2 : Node ): Boolean = {
139
+ val clazz1Name = getName( clazz1)
140
+ val clazz2Name = getName( clazz2)
127
141
for ((clazz1Filter, clazz2Filter) <- hideEdgesFilter) {
128
142
if (clazz1Filter.matcher(clazz1Name).matches &&
129
143
clazz2Filter.matcher(clazz2Name).matches) {
@@ -162,7 +176,7 @@ trait DiagramDirectiveParser {
162
176
var hideOutgoingImplicits0 : Boolean = false
163
177
var hideSuperclasses0 : Boolean = false
164
178
var hideSubclasses0 : Boolean = false
165
- var showInheritedNodes0 : Boolean = false
179
+ var hideInheritedNodes0 : Boolean = false
166
180
var hideNodesFilter0 : List [Pattern ] = Nil
167
181
var hideEdgesFilter0 : List [(Pattern , Pattern )] = Nil
168
182
@@ -190,8 +204,8 @@ trait DiagramDirectiveParser {
190
204
hideSuperclasses0 = true
191
205
case " hideSubclasses" if isInheritanceDiagram =>
192
206
hideSubclasses0 = true
193
- case " showInheritedNodes " if ! isInheritanceDiagram =>
194
- showInheritedNodes0 = true
207
+ case " hideInheritedNodes " if ! isInheritanceDiagram =>
208
+ hideInheritedNodes0 = true
195
209
case HideNodesRegex (last) =>
196
210
val matcher = NodeSpecPattern .matcher(entry)
197
211
while (matcher.find()) {
@@ -225,7 +239,7 @@ trait DiagramDirectiveParser {
225
239
(hideOutgoingImplicits0 == false ) &&
226
240
(hideSuperclasses0 == false ) &&
227
241
(hideSubclasses0 == false ) &&
228
- (showInheritedNodes0 == false ) &&
242
+ (hideInheritedNodes0 == false ) &&
229
243
(hideDiagram0 == false ))
230
244
FullDiagram
231
245
else
@@ -235,7 +249,7 @@ trait DiagramDirectiveParser {
235
249
hideOutgoingImplicits = hideOutgoingImplicits0,
236
250
hideSuperclasses = hideSuperclasses0,
237
251
hideSubclasses = hideSubclasses0,
238
- showInheritedNodes = showInheritedNodes0 ,
252
+ hideInheritedNodes = hideInheritedNodes0 ,
239
253
hideNodesFilter = hideNodesFilter0,
240
254
hideEdgesFilter = hideEdgesFilter0)
241
255
0 commit comments