Skip to content

Commit 73501b5

Browse files
committed
fix: change link as plaintext if API is excluded
1 parent 0062a2d commit 73501b5

File tree

4 files changed

+32
-26
lines changed

4 files changed

+32
-26
lines changed

src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -707,22 +707,26 @@ Inline Cref(string commentId)
707707
Inline ShortLink(ISymbol symbol, Compilation compilation)
708708
{
709709
var title = SymbolFormatter.GetNameWithType(symbol, SyntaxLanguage.CSharp);
710-
var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies);
710+
var url = filter.IncludeApi(symbol)
711+
? SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies)
712+
: null;
711713
return Link(title, url);
712714
}
713715

714716
Inline FullLink(ISymbol symbol, Compilation compilation)
715717
{
716718
var parts = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.CSharp);
717-
var linkItems = SymbolFormatter.ToLinkItems(parts, compilation, config.MemberLayout, allAssemblies, overload: false, symbolUrlKind);
719+
var linkItems = SymbolFormatter.ToLinkItems(parts, compilation, config.MemberLayout, allAssemblies, overload: false, filter, symbolUrlKind);
718720

719721
return linkItems.Select(i => Link(i.DisplayName, i.Href)).ToArray();
720722
}
721723

722724
Inline NameOnlyLink(ISymbol symbol, Compilation compilation)
723725
{
724726
var title = SymbolFormatter.GetName(symbol, SyntaxLanguage.CSharp);
725-
var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies);
727+
var url = filter.IncludeApi(symbol)
728+
? SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies)
729+
: null;
726730
return Link(title, url);
727731
}
728732

src/Docfx.Dotnet/ManagedReference/Visitors/SymbolVisitorAdapter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ public string AddReference(ISymbol symbol)
374374
Debug.Fail("Unexpected member type.");
375375
throw new InvalidOperationException("Unexpected member type.");
376376
}
377-
return _generator.AddReference(symbol, _references);
377+
return _generator.AddReference(symbol, _references, _filter);
378378
}
379379

380380
public string AddReference(string id, string commentId)
@@ -390,7 +390,7 @@ public string AddReference(string id, string commentId)
390390
reference.QualifiedNameParts = new();
391391
reference.IsDefinition = symbol.IsDefinition;
392392

393-
_generator.GenerateReference(symbol, reference, asOverload: false);
393+
_generator.GenerateReference(symbol, reference, asOverload: false, _filter);
394394
}
395395

396396
_references[id] = reference;
@@ -406,7 +406,7 @@ public string AddOverloadReference(ISymbol symbol)
406406
case MemberType.Constructor:
407407
case MemberType.Method:
408408
case MemberType.Operator:
409-
return _generator.AddOverloadReference(symbol, _references);
409+
return _generator.AddOverloadReference(symbol, _references, _filter);
410410
default:
411411
Debug.Fail("Unexpected member type.");
412412
throw new InvalidOperationException("Unexpected member type.");
@@ -418,7 +418,7 @@ public string AddSpecReference(
418418
IReadOnlyList<string> typeGenericParameters = null,
419419
IReadOnlyList<string> methodGenericParameters = null)
420420
{
421-
return _generator.AddSpecReference(symbol, typeGenericParameters, methodGenericParameters, _references, this);
421+
return _generator.AddSpecReference(symbol, typeGenericParameters, methodGenericParameters, _references, _filter);
422422
}
423423

424424
private static MemberType GetMemberTypeFromSymbol(ISymbol symbol)

src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public void DefaultVisit(ISymbol symbol, MetadataItem item)
3030
item.DisplayQualifiedNames[SyntaxLanguage.VB] = SymbolFormatter.GetQualifiedName(symbol, SyntaxLanguage.VB);
3131
}
3232

33-
public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOverload)
33+
public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOverload, SymbolFilter filter)
3434
{
3535
if (!reference.NameParts.ContainsKey(SyntaxLanguage.CSharp))
3636
reference.NameParts.Add(SyntaxLanguage.CSharp, new());
@@ -39,9 +39,9 @@ public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOv
3939
if (!reference.QualifiedNameParts.ContainsKey(SyntaxLanguage.CSharp))
4040
reference.QualifiedNameParts.Add(SyntaxLanguage.CSharp, new());
4141

42-
reference.NameParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetNameParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload);
43-
reference.NameWithTypeParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload);
44-
reference.QualifiedNameParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetQualifiedNameParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload);
42+
reference.NameParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetNameParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter);
43+
reference.NameWithTypeParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter);
44+
reference.QualifiedNameParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetQualifiedNameParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter);
4545

4646
if (!reference.NameParts.ContainsKey(SyntaxLanguage.VB))
4747
reference.NameParts.Add(SyntaxLanguage.VB, new());
@@ -50,9 +50,9 @@ public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOv
5050
if (!reference.QualifiedNameParts.ContainsKey(SyntaxLanguage.VB))
5151
reference.QualifiedNameParts.Add(SyntaxLanguage.VB, new());
5252

53-
reference.NameParts[SyntaxLanguage.VB] = SymbolFormatter.GetNameParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload);
54-
reference.NameWithTypeParts[SyntaxLanguage.VB] = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload);
55-
reference.QualifiedNameParts[SyntaxLanguage.VB] = SymbolFormatter.GetQualifiedNameParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload);
53+
reference.NameParts[SyntaxLanguage.VB] = SymbolFormatter.GetNameParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter);
54+
reference.NameWithTypeParts[SyntaxLanguage.VB] = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter);
55+
reference.QualifiedNameParts[SyntaxLanguage.VB] = SymbolFormatter.GetQualifiedNameParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter);
5656
}
5757

5858
public void GenerateSyntax(ISymbol symbol, SyntaxDetail syntax, SymbolFilter filter)
@@ -61,7 +61,7 @@ public void GenerateSyntax(ISymbol symbol, SyntaxDetail syntax, SymbolFilter fil
6161
syntax.Content[SyntaxLanguage.VB] = SymbolFormatter.GetSyntax(symbol, SyntaxLanguage.VB, filter);
6262
}
6363

64-
public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> references)
64+
public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> references, SymbolFilter filter)
6565
{
6666
var id = VisitorHelper.GetId(symbol);
6767
var reference = new ReferenceItem
@@ -72,7 +72,7 @@ public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> ref
7272
IsDefinition = symbol.IsDefinition,
7373
CommentId = VisitorHelper.GetCommentId(symbol)
7474
};
75-
GenerateReference(symbol, reference, false);
75+
GenerateReference(symbol, reference, false, filter);
7676

7777
if (!references.TryAdd(id, reference))
7878
{
@@ -82,7 +82,7 @@ public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> ref
8282
return id;
8383
}
8484

85-
public string AddOverloadReference(ISymbol symbol, Dictionary<string, ReferenceItem> references)
85+
public string AddOverloadReference(ISymbol symbol, Dictionary<string, ReferenceItem> references, SymbolFilter filter)
8686
{
8787
var uidBody = VisitorHelper.GetOverloadIdBody(symbol);
8888
var reference = new ReferenceItem
@@ -94,7 +94,7 @@ public string AddOverloadReference(ISymbol symbol, Dictionary<string, ReferenceI
9494
CommentId = "Overload:" + uidBody
9595
};
9696

97-
GenerateReference(symbol, reference, true);
97+
GenerateReference(symbol, reference, true, filter);
9898

9999
var uid = uidBody + "*";
100100
if (!references.TryAdd(uid, reference))
@@ -110,7 +110,7 @@ public string AddSpecReference(
110110
IReadOnlyList<string> typeGenericParameters,
111111
IReadOnlyList<string> methodGenericParameters,
112112
Dictionary<string, ReferenceItem> references,
113-
SymbolVisitorAdapter adapter)
113+
SymbolFilter filter)
114114
{
115115
var rawId = VisitorHelper.GetId(symbol);
116116
var id = SpecIdHelper.GetSpecId(symbol, typeGenericParameters, methodGenericParameters);
@@ -124,7 +124,7 @@ public string AddSpecReference(
124124
NameWithTypeParts = new(),
125125
QualifiedNameParts = new(),
126126
};
127-
GenerateReference(symbol, reference, false);
127+
GenerateReference(symbol, reference, false, filter);
128128
var originalSymbol = symbol;
129129
var reducedFrom = (symbol as IMethodSymbol)?.ReducedFrom;
130130
if (reducedFrom != null)
@@ -135,10 +135,10 @@ public string AddSpecReference(
135135

136136
if (!reference.IsDefinition.Value && rawId != null)
137137
{
138-
reference.Definition = AddReference(originalSymbol.OriginalDefinition, references);
138+
reference.Definition = AddReference(originalSymbol.OriginalDefinition, references, filter);
139139
}
140140

141-
reference.Parent = GetReferenceParent(originalSymbol, typeGenericParameters, methodGenericParameters, references, adapter);
141+
reference.Parent = GetReferenceParent(originalSymbol, typeGenericParameters, methodGenericParameters, references, filter);
142142
reference.CommentId = VisitorHelper.GetCommentId(originalSymbol);
143143

144144
if (!references.TryAdd(id, reference))
@@ -153,7 +153,7 @@ private string GetReferenceParent(ISymbol symbol,
153153
IReadOnlyList<string> typeGenericParameters,
154154
IReadOnlyList<string> methodGenericParameters,
155155
Dictionary<string, ReferenceItem> references,
156-
SymbolVisitorAdapter adapter)
156+
SymbolFilter filter)
157157
{
158158
switch (symbol.Kind)
159159
{
@@ -172,7 +172,7 @@ private string GetReferenceParent(ISymbol symbol,
172172
{
173173
return null;
174174
}
175-
return AddSpecReference(parentSymbol, typeGenericParameters, methodGenericParameters, references, adapter); ;
175+
return AddSpecReference(parentSymbol, typeGenericParameters, methodGenericParameters, references, filter);
176176
}
177177
default:
178178
return null;

src/Docfx.Dotnet/SymbolFormatter.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public static ImmutableArray<SymbolDisplayPart> GetSyntaxParts(ISymbol symbol, S
113113
}
114114

115115
public static List<LinkItem> ToLinkItems(this ImmutableArray<SymbolDisplayPart> parts,
116-
Compilation compilation, MemberLayout memberLayout, HashSet<IAssemblySymbol> allAssemblies, bool overload, SymbolUrlKind urlKind = SymbolUrlKind.Html)
116+
Compilation compilation, MemberLayout memberLayout, HashSet<IAssemblySymbol> allAssemblies, bool overload, SymbolFilter filter, SymbolUrlKind urlKind = SymbolUrlKind.Html)
117117
{
118118
var result = new List<LinkItem>();
119119
foreach (var part in parts)
@@ -138,7 +138,9 @@ LinkItem ToLinkItem(SymbolDisplayPart part)
138138
{
139139
Name = overload ? VisitorHelper.GetOverloadId(symbol) : VisitorHelper.GetId(symbol),
140140
DisplayName = part.ToString(),
141-
Href = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, memberLayout, urlKind, allAssemblies),
141+
Href = filter.IncludeApi(symbol)
142+
? SymbolUrlResolver.GetSymbolUrl(symbol, compilation, memberLayout, urlKind, allAssemblies)
143+
: null,
142144
IsExternalPath = symbol.IsExtern || symbol.DeclaringSyntaxReferences.Length == 0,
143145
};
144146
}

0 commit comments

Comments
 (0)