Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: change link as plaintext if API is excluded #10300

Merged
merged 2 commits into from
Oct 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -707,22 +707,22 @@ Inline Cref(string commentId)
Inline ShortLink(ISymbol symbol, Compilation compilation)
{
var title = SymbolFormatter.GetNameWithType(symbol, SyntaxLanguage.CSharp);
var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies);
var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies, filter);
return Link(title, url);
}

Inline FullLink(ISymbol symbol, Compilation compilation)
{
var parts = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.CSharp);
var linkItems = SymbolFormatter.ToLinkItems(parts, compilation, config.MemberLayout, allAssemblies, overload: false, symbolUrlKind);
var linkItems = SymbolFormatter.ToLinkItems(parts, compilation, config.MemberLayout, allAssemblies, overload: false, filter, symbolUrlKind);

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

Inline NameOnlyLink(ISymbol symbol, Compilation compilation)
{
var title = SymbolFormatter.GetName(symbol, SyntaxLanguage.CSharp);
var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies);
var url = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies, filter);
return Link(title, url);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ public string AddReference(ISymbol symbol)
Debug.Fail("Unexpected member type.");
throw new InvalidOperationException("Unexpected member type.");
}
return _generator.AddReference(symbol, _references);
return _generator.AddReference(symbol, _references, _filter);
}

public string AddReference(string id, string commentId)
Expand All @@ -390,7 +390,7 @@ public string AddReference(string id, string commentId)
reference.QualifiedNameParts = new();
reference.IsDefinition = symbol.IsDefinition;

_generator.GenerateReference(symbol, reference, asOverload: false);
_generator.GenerateReference(symbol, reference, asOverload: false, _filter);
}

_references[id] = reference;
Expand All @@ -406,7 +406,7 @@ public string AddOverloadReference(ISymbol symbol)
case MemberType.Constructor:
case MemberType.Method:
case MemberType.Operator:
return _generator.AddOverloadReference(symbol, _references);
return _generator.AddOverloadReference(symbol, _references, _filter);
default:
Debug.Fail("Unexpected member type.");
throw new InvalidOperationException("Unexpected member type.");
Expand All @@ -418,7 +418,7 @@ public string AddSpecReference(
IReadOnlyList<string> typeGenericParameters = null,
IReadOnlyList<string> methodGenericParameters = null)
{
return _generator.AddSpecReference(symbol, typeGenericParameters, methodGenericParameters, _references, this);
return _generator.AddSpecReference(symbol, typeGenericParameters, methodGenericParameters, _references, _filter);
}

private static MemberType GetMemberTypeFromSymbol(ISymbol symbol)
Expand Down
34 changes: 17 additions & 17 deletions src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public void DefaultVisit(ISymbol symbol, MetadataItem item)
item.DisplayQualifiedNames[SyntaxLanguage.VB] = SymbolFormatter.GetQualifiedName(symbol, SyntaxLanguage.VB);
}

public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOverload)
public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOverload, SymbolFilter filter)
{
if (!reference.NameParts.ContainsKey(SyntaxLanguage.CSharp))
reference.NameParts.Add(SyntaxLanguage.CSharp, new());
Expand All @@ -39,9 +39,9 @@ public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOv
if (!reference.QualifiedNameParts.ContainsKey(SyntaxLanguage.CSharp))
reference.QualifiedNameParts.Add(SyntaxLanguage.CSharp, new());

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

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

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

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

public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> references)
public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> references, SymbolFilter filter)
{
var id = VisitorHelper.GetId(symbol);
var reference = new ReferenceItem
Expand All @@ -72,7 +72,7 @@ public string AddReference(ISymbol symbol, Dictionary<string, ReferenceItem> ref
IsDefinition = symbol.IsDefinition,
CommentId = VisitorHelper.GetCommentId(symbol)
};
GenerateReference(symbol, reference, false);
GenerateReference(symbol, reference, false, filter);

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

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

GenerateReference(symbol, reference, true);
GenerateReference(symbol, reference, true, filter);

var uid = uidBody + "*";
if (!references.TryAdd(uid, reference))
Expand All @@ -110,7 +110,7 @@ public string AddSpecReference(
IReadOnlyList<string> typeGenericParameters,
IReadOnlyList<string> methodGenericParameters,
Dictionary<string, ReferenceItem> references,
SymbolVisitorAdapter adapter)
SymbolFilter filter)
{
var rawId = VisitorHelper.GetId(symbol);
var id = SpecIdHelper.GetSpecId(symbol, typeGenericParameters, methodGenericParameters);
Expand All @@ -124,7 +124,7 @@ public string AddSpecReference(
NameWithTypeParts = new(),
QualifiedNameParts = new(),
};
GenerateReference(symbol, reference, false);
GenerateReference(symbol, reference, false, filter);
var originalSymbol = symbol;
var reducedFrom = (symbol as IMethodSymbol)?.ReducedFrom;
if (reducedFrom != null)
Expand All @@ -135,10 +135,10 @@ public string AddSpecReference(

if (!reference.IsDefinition.Value && rawId != null)
{
reference.Definition = AddReference(originalSymbol.OriginalDefinition, references);
reference.Definition = AddReference(originalSymbol.OriginalDefinition, references, filter);
}

reference.Parent = GetReferenceParent(originalSymbol, typeGenericParameters, methodGenericParameters, references, adapter);
reference.Parent = GetReferenceParent(originalSymbol, typeGenericParameters, methodGenericParameters, references, filter);
reference.CommentId = VisitorHelper.GetCommentId(originalSymbol);

if (!references.TryAdd(id, reference))
Expand All @@ -153,7 +153,7 @@ private string GetReferenceParent(ISymbol symbol,
IReadOnlyList<string> typeGenericParameters,
IReadOnlyList<string> methodGenericParameters,
Dictionary<string, ReferenceItem> references,
SymbolVisitorAdapter adapter)
SymbolFilter filter)
{
switch (symbol.Kind)
{
Expand All @@ -172,7 +172,7 @@ private string GetReferenceParent(ISymbol symbol,
{
return null;
}
return AddSpecReference(parentSymbol, typeGenericParameters, methodGenericParameters, references, adapter); ;
return AddSpecReference(parentSymbol, typeGenericParameters, methodGenericParameters, references, filter);
}
default:
return null;
Expand Down
4 changes: 2 additions & 2 deletions src/Docfx.Dotnet/SymbolFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ public static ImmutableArray<SymbolDisplayPart> GetSyntaxParts(ISymbol symbol, S
}

public static List<LinkItem> ToLinkItems(this ImmutableArray<SymbolDisplayPart> parts,
Compilation compilation, MemberLayout memberLayout, HashSet<IAssemblySymbol> allAssemblies, bool overload, SymbolUrlKind urlKind = SymbolUrlKind.Html)
Compilation compilation, MemberLayout memberLayout, HashSet<IAssemblySymbol> allAssemblies, bool overload, SymbolFilter filter, SymbolUrlKind urlKind = SymbolUrlKind.Html)
{
var result = new List<LinkItem>();
foreach (var part in parts)
Expand All @@ -138,7 +138,7 @@ LinkItem ToLinkItem(SymbolDisplayPart part)
{
Name = overload ? VisitorHelper.GetOverloadId(symbol) : VisitorHelper.GetId(symbol),
DisplayName = part.ToString(),
Href = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, memberLayout, urlKind, allAssemblies),
Href = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, memberLayout, urlKind, allAssemblies, filter),
IsExternalPath = symbol.IsExtern || symbol.DeclaringSyntaxReferences.Length == 0,
};
}
Expand Down
5 changes: 4 additions & 1 deletion src/Docfx.Dotnet/SymbolUrlResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,15 @@ enum SymbolUrlKind

internal static partial class SymbolUrlResolver
{
public static string? GetSymbolUrl(ISymbol symbol, Compilation compilation, MemberLayout memberLayout, SymbolUrlKind urlKind, HashSet<IAssemblySymbol> allAssemblies)
public static string? GetSymbolUrl(ISymbol symbol, Compilation compilation, MemberLayout memberLayout, SymbolUrlKind urlKind, HashSet<IAssemblySymbol> allAssemblies, SymbolFilter filter)
{
// Reduce symbol into generic definitions
symbol = symbol is IMethodSymbol method ? method.ReducedFrom ?? symbol : symbol;
symbol = symbol.OriginalDefinition ?? symbol;

if (!filter.IncludeApi(symbol))
return null;

return GetDocfxUrl(symbol, memberLayout, urlKind, allAssemblies)
?? GetMicrosoftLearnUrl(symbol)
?? GetPdbSourceLinkUrl(compilation, symbol);
Expand Down