Skip to content
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
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

using System.Collections.Frozen;
using Documentation.Assembler.Configuration;
using Documentation.Assembler.Extensions;
using Elastic.Markdown.Links.CrossLinks;

namespace Documentation.Assembler.Building;
Expand Down Expand Up @@ -142,10 +143,9 @@ private string GetSubPathPrefix(Uri crossLinkUri, ref string path)
if (originalPath == toc.SourcePathPrefix)
return string.Empty;

var newRelativePath = path.TrimStart('/').AsSpan().TrimStart(originalPath).ToString();
path = Path.Combine(toc.SourcePathPrefix, newRelativePath.TrimStart('/'));
var newRelativePath = path.AsSpan().GetTrimmedRelativePath(originalPath);
path = Path.Combine(toc.SourcePathPrefix, newRelativePath);

return string.Empty;
}

}
17 changes: 17 additions & 0 deletions src/docs-assembler/Extensions/SpanExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information

namespace Documentation.Assembler.Extensions;

public static class SpanExtensions
{
public static string GetTrimmedRelativePath(this ReadOnlySpan<char> relativePath, string originalPath)
{
var trimmedInput = relativePath.TrimStart('/');
var newRelativePath = trimmedInput.StartsWith(originalPath, StringComparison.Ordinal)
? trimmedInput.Slice(originalPath.Length).TrimStart('/').ToString()
: trimmedInput.ToString();
return newRelativePath;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

using System.Collections.Immutable;
using System.IO.Abstractions;
using Documentation.Assembler.Extensions;
using Elastic.Markdown;
using Elastic.Markdown.Diagnostics;
using Elastic.Markdown.Extensions.DetectionRules;
Expand Down Expand Up @@ -118,9 +119,7 @@ public GlobalNavigationPathProvider(GlobalNavigationFile navigationFile, Assembl

var originalPath = Path.Combine(match.Host, match.AbsolutePath.Trim('/')).TrimStart('/');
var relativePathSpan = relativePath.AsSpan();
var newRelativePath = relativePathSpan.StartsWith(originalPath, StringComparison.Ordinal)
? relativePathSpan.Slice(originalPath.Length).TrimStart('/').ToString()
: relativePathSpan.TrimStart(originalPath).TrimStart('/').ToString();
var newRelativePath = relativePathSpan.GetTrimmedRelativePath(originalPath);

var path = fs.Path.Combine(outputDirectory.FullName, toc.SourcePathPrefix, newRelativePath);

Expand Down
Loading