Skip to content

Commit 5c144b9

Browse files
CopilotMpdreamz
andcommitted
Remove Title property from LinkMetadata and TryGetLinkMetadata method
Co-authored-by: Mpdreamz <[email protected]>
1 parent af64be0 commit 5c144b9

File tree

6 files changed

+11
-56
lines changed

6 files changed

+11
-56
lines changed

src/Elastic.Documentation.Links/CrossLinks/CrossLinkResolver.cs

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ namespace Elastic.Documentation.Links.CrossLinks;
1010
public interface ICrossLinkResolver
1111
{
1212
bool TryResolve(Action<string> errorEmitter, Uri crossLinkUri, [NotNullWhen(true)] out Uri? resolvedUri);
13-
bool TryGetLinkMetadata(Uri crossLinkUri, [NotNullWhen(true)] out LinkMetadata? linkMetadata);
1413
IUriEnvironmentResolver UriResolver { get; }
1514
}
1615

@@ -25,13 +24,6 @@ public bool TryResolve(Action<string> errorEmitter, Uri crossLinkUri, [NotNullWh
2524
return false;
2625
}
2726

28-
/// <inheritdoc />
29-
public bool TryGetLinkMetadata(Uri crossLinkUri, [NotNullWhen(true)] out LinkMetadata? linkMetadata)
30-
{
31-
linkMetadata = null;
32-
return false;
33-
}
34-
3527
/// <inheritdoc />
3628
public IUriEnvironmentResolver UriResolver { get; } = new IsolatedBuildEnvironmentUriResolver();
3729

@@ -47,20 +39,6 @@ public class CrossLinkResolver(FetchedCrossLinks crossLinks, IUriEnvironmentReso
4739
public bool TryResolve(Action<string> errorEmitter, Uri crossLinkUri, [NotNullWhen(true)] out Uri? resolvedUri) =>
4840
TryResolve(errorEmitter, _crossLinks, UriResolver, crossLinkUri, out resolvedUri);
4941

50-
public bool TryGetLinkMetadata(Uri crossLinkUri, [NotNullWhen(true)] out LinkMetadata? linkMetadata)
51-
{
52-
linkMetadata = null;
53-
54-
if (!_crossLinks.LinkReferences.TryGetValue(crossLinkUri.Scheme, out var sourceLinkReference))
55-
return false;
56-
57-
var originalLookupPath = (crossLinkUri.Host + '/' + crossLinkUri.AbsolutePath.TrimStart('/')).Trim('/');
58-
if (string.IsNullOrEmpty(originalLookupPath) && crossLinkUri.Host.EndsWith(".md", StringComparison.OrdinalIgnoreCase))
59-
originalLookupPath = crossLinkUri.Host;
60-
61-
return sourceLinkReference.Links.TryGetValue(originalLookupPath, out linkMetadata);
62-
}
63-
6442
public FetchedCrossLinks UpdateLinkReference(string repository, RepositoryLinks repositoryLinks)
6543
{
6644
var dictionary = _crossLinks.LinkReferences.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

src/Elastic.Documentation/Links/RepositoryLinks.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ public record LinkMetadata
1717
[JsonPropertyName("hidden")]
1818
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
1919
public bool Hidden { get; init; }
20-
21-
[JsonPropertyName("title")]
22-
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
23-
public string? Title { get; init; }
2420
}
2521

2622
public record LinkSingleRedirect

src/Elastic.Markdown/Myst/InlineParsers/DiagnosticLinkInlineParser.cs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -185,21 +185,10 @@ private static void ProcessCrossLink(LinkInline link, InlineProcessor processor,
185185
)
186186
link.Url = resolvedUri.ToString();
187187

188-
// Handle empty link text by trying to get title from crosslink metadata
188+
// Emit error for empty link text in crosslinks
189189
if (link.FirstChild == null)
190190
{
191-
if (context.CrossLinkResolver.TryGetLinkMetadata(uri, out var linkMetadata))
192-
{
193-
var title = linkMetadata.Title;
194-
if (!string.IsNullOrEmpty(title))
195-
_ = link.AppendChild(new LiteralInline(title));
196-
else
197-
processor.EmitError(link, $"Crosslink '{url}' has empty link text but no title is available in metadata. Please provide explicit link text or ensure the target page has a title in the link index.");
198-
}
199-
else
200-
{
201-
processor.EmitError(link, $"Crosslink '{url}' has empty link text but metadata could not be retrieved. Please provide explicit link text.");
202-
}
191+
processor.EmitError(link, $"Crosslink '{url}' has empty link text. Please provide explicit link text.");
203192
}
204193
}
205194

tests/Elastic.Markdown.Tests/Inline/InlineLinkTests.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,16 @@ Go to [](kibana://index.md)
173173
{
174174
[Fact]
175175
public void GeneratesHtml() =>
176-
// language=html
176+
// language=html - empty crosslinks now emit an error
177177
Html.Should().Contain(
178-
"""<p>Go to <a href="https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/" hx-select-oob="#main-container" preload="mousedown">Kibana Guide</a></p>"""
178+
"""<p>Go to <a href="https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/" hx-select-oob="#main-container" preload="mousedown"></a></p>"""
179179
);
180180

181181
[Fact]
182-
public void HasNoErrors() => Collector.Diagnostics.Should().HaveCount(0);
182+
public void HasError() =>
183+
Collector.Diagnostics.Should().Contain(d =>
184+
d.Severity == Severity.Error &&
185+
d.Message.Contains("empty link text"));
183186

184187
[Fact]
185188
public void EmitsCrossLink()
@@ -198,7 +201,7 @@ Go to [](kibana://get-started/index.md)
198201
{
199202
[Fact]
200203
public void GeneratesHtml() =>
201-
// language=html - when no title is available, link text should remain empty
204+
// language=html - empty crosslinks emit an error
202205
Html.Should().Contain(
203206
"""<p>Go to <a href="https://docs-v3-preview.elastic.dev/elastic/kibana/tree/main/get-started" hx-select-oob="#main-container" preload="mousedown"></a></p>"""
204207
);
@@ -207,7 +210,7 @@ public void GeneratesHtml() =>
207210
public void HasError() =>
208211
Collector.Diagnostics.Should().Contain(d =>
209212
d.Severity == Severity.Error &&
210-
d.Message.Contains("empty link text but no title is available"));
213+
d.Message.Contains("empty link text"));
211214

212215
[Fact]
213216
public void EmitsCrossLink()

tests/Elastic.Markdown.Tests/TestCrossLinkResolver.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ public TestCrossLinkResolver()
3030
"url_path_prefix": "/elastic/docs-content/tree/main",
3131
"cross_links": [],
3232
"links": {
33-
"index.md": {
34-
"title": "Kibana Guide"
35-
},
33+
"index.md": {},
3634
"get-started/index.md": {
3735
"anchors": [
3836
"elasticsearch-intro-elastic-stack",
@@ -70,10 +68,4 @@ public TestCrossLinkResolver()
7068

7169
public bool TryResolve(Action<string> errorEmitter, Uri crossLinkUri, [NotNullWhen(true)] out Uri? resolvedUri) =>
7270
CrossLinkResolver.TryResolve(errorEmitter, _crossLinks, UriResolver, crossLinkUri, out resolvedUri);
73-
74-
public bool TryGetLinkMetadata(Uri crossLinkUri, [NotNullWhen(true)] out LinkMetadata? linkMetadata)
75-
{
76-
var resolver = new CrossLinkResolver(_crossLinks, UriResolver);
77-
return resolver.TryGetLinkMetadata(crossLinkUri, out linkMetadata);
78-
}
7971
}

tests/authoring/Framework/TestCrossLinkResolver.fs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,5 @@ type TestCrossLinkResolver (config: ConfigurationFile) =
8989
member this.TryResolve(errorEmitter, crossLinkUri, [<Out>]resolvedUri : byref<Uri|null>) =
9090
CrossLinkResolver.TryResolve(errorEmitter, crossLinks, uriResolver, crossLinkUri, &resolvedUri)
9191

92-
member this.TryGetLinkMetadata(crossLinkUri, [<Out>]linkMetadata : byref<LinkMetadata|null>) =
93-
let resolver = new CrossLinkResolver(crossLinks, uriResolver)
94-
resolver.TryGetLinkMetadata(crossLinkUri, &linkMetadata)
9592

9693

0 commit comments

Comments
 (0)