Skip to content

Commit

Permalink
fix: change link as plaintext if API is excluded
Browse files Browse the repository at this point in the history
  • Loading branch information
filzrev committed Oct 19, 2024
1 parent 0062a2d commit 73501b5
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 26 deletions.
10 changes: 7 additions & 3 deletions src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -707,22 +707,26 @@ 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 = filter.IncludeApi(symbol)
? SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies)
: null;
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 = filter.IncludeApi(symbol)
? SymbolUrlResolver.GetSymbolUrl(symbol, compilation, config.MemberLayout, symbolUrlKind, allAssemblies)
: null;
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
6 changes: 4 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,9 @@ LinkItem ToLinkItem(SymbolDisplayPart part)
{
Name = overload ? VisitorHelper.GetOverloadId(symbol) : VisitorHelper.GetId(symbol),
DisplayName = part.ToString(),
Href = SymbolUrlResolver.GetSymbolUrl(symbol, compilation, memberLayout, urlKind, allAssemblies),
Href = filter.IncludeApi(symbol)
? SymbolUrlResolver.GetSymbolUrl(symbol, compilation, memberLayout, urlKind, allAssemblies)
: null,
IsExternalPath = symbol.IsExtern || symbol.DeclaringSyntaxReferences.Length == 0,
};
}
Expand Down

0 comments on commit 73501b5

Please sign in to comment.