From e6a9f3ee47649b8be700562bf46c4a98bac47c55 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Mon, 13 Jan 2025 17:48:06 +0100 Subject: [PATCH 1/2] Refactor navigation and model hierarchy. Replaces `DocumentationFolder` with `DocumentationGroup` and introduces new abstractions for navigation management. Updates hierarchy structure, adds `NavigationItems` for improved flexibility, and adjusts related components to align with the new design. This now orders files and groups as a whole. Before we were listing files before folders always --- src/Elastic.Markdown/BuildContext.cs | 4 +- .../DocumentationGenerator.cs | 19 ----- .../{ => Configuration}/ConfigurationFile.cs | 0 .../IO/{ => Configuration}/ITocItem.cs | 2 - .../GitCheckoutInformation.cs} | 10 +-- src/Elastic.Markdown/IO/DocumentationSet.cs | 4 +- src/Elastic.Markdown/IO/MarkdownFile.cs | 5 +- .../DocumentationGroup.cs} | 69 ++++++++++++------- .../IO/State/GenerationState.cs | 20 ++++++ .../IO/{ => State}/LinkReference.cs | 2 +- .../Slices/Layout/_TocTree.cshtml | 2 +- .../Slices/Layout/_TocTreeNav.cshtml | 40 ++++++----- src/Elastic.Markdown/Slices/_ViewModels.cs | 8 +-- .../SourceGenerationContext.cs | 16 +++++ .../DocSet/LinkReferenceTests.cs | 4 +- 15 files changed, 124 insertions(+), 81 deletions(-) rename src/Elastic.Markdown/IO/{ => Configuration}/ConfigurationFile.cs (100%) rename src/Elastic.Markdown/IO/{ => Configuration}/ITocItem.cs (82%) rename src/Elastic.Markdown/IO/{GitConfiguration.cs => Discovery/GitCheckoutInformation.cs} (86%) rename src/Elastic.Markdown/IO/{DocumentationFolder.cs => Navigation/DocumentationGroup.cs} (56%) create mode 100644 src/Elastic.Markdown/IO/State/GenerationState.cs rename src/Elastic.Markdown/IO/{ => State}/LinkReference.cs (94%) create mode 100644 src/Elastic.Markdown/SourceGenerationContext.cs diff --git a/src/Elastic.Markdown/BuildContext.cs b/src/Elastic.Markdown/BuildContext.cs index aee78b79..95c6cb13 100644 --- a/src/Elastic.Markdown/BuildContext.cs +++ b/src/Elastic.Markdown/BuildContext.cs @@ -17,7 +17,7 @@ public record BuildContext public IFileInfo ConfigurationPath { get; } - public GitConfiguration Git { get; } + public GitCheckoutInformation Git { get; } public required DiagnosticsCollector Collector { get; init; } @@ -57,7 +57,7 @@ public BuildContext(IFileSystem readFileSystem, IFileSystem writeFileSystem, str if (ConfigurationPath.FullName != SourcePath.FullName) SourcePath = ConfigurationPath.Directory!; - Git = GitConfiguration.Create(ReadFileSystem); + Git = GitCheckoutInformation.Create(ReadFileSystem); } private IDirectoryInfo FindDocsFolderFromRoot(IDirectoryInfo rootPath) diff --git a/src/Elastic.Markdown/DocumentationGenerator.cs b/src/Elastic.Markdown/DocumentationGenerator.cs index 8086e56d..adb50fae 100644 --- a/src/Elastic.Markdown/DocumentationGenerator.cs +++ b/src/Elastic.Markdown/DocumentationGenerator.cs @@ -4,31 +4,12 @@ using System.IO.Abstractions; using System.Reflection; using System.Text.Json; -using System.Text.Json.Serialization; using Elastic.Markdown.IO; using Elastic.Markdown.Slices; using Microsoft.Extensions.Logging; namespace Elastic.Markdown; -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(GenerationState))] -[JsonSerializable(typeof(LinkReference))] -[JsonSerializable(typeof(GitConfiguration))] -internal partial class SourceGenerationContext : JsonSerializerContext; - -public record GenerationState -{ - [JsonPropertyName("last_seen_changes")] - public required DateTimeOffset LastSeenChanges { get; init; } - - [JsonPropertyName("invalid_files")] - public required string[] InvalidFiles { get; init; } = []; - - [JsonPropertyName("git")] - public required GitConfiguration Git { get; init; } -} - public class DocumentationGenerator { private readonly IFileSystem _readFileSystem; diff --git a/src/Elastic.Markdown/IO/ConfigurationFile.cs b/src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs similarity index 100% rename from src/Elastic.Markdown/IO/ConfigurationFile.cs rename to src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs diff --git a/src/Elastic.Markdown/IO/ITocItem.cs b/src/Elastic.Markdown/IO/Configuration/ITocItem.cs similarity index 82% rename from src/Elastic.Markdown/IO/ITocItem.cs rename to src/Elastic.Markdown/IO/Configuration/ITocItem.cs index 803ffedf..85c25c24 100644 --- a/src/Elastic.Markdown/IO/ITocItem.cs +++ b/src/Elastic.Markdown/IO/Configuration/ITocItem.cs @@ -9,5 +9,3 @@ public interface ITocItem; public record FileReference(string Path, bool Found, IReadOnlyCollection Children) : ITocItem; public record FolderReference(string Path, bool Found, IReadOnlyCollection Children) : ITocItem; - -public record TocReference(string Path, bool Found, IReadOnlyCollection Children) : ITocItem; diff --git a/src/Elastic.Markdown/IO/GitConfiguration.cs b/src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs similarity index 86% rename from src/Elastic.Markdown/IO/GitConfiguration.cs rename to src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs index ea451bc3..abcb7d39 100644 --- a/src/Elastic.Markdown/IO/GitConfiguration.cs +++ b/src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs @@ -8,9 +8,9 @@ namespace Elastic.Markdown.IO; -public record GitConfiguration +public record GitCheckoutInformation { - private static GitConfiguration Unavailable { get; } = new() + private static GitCheckoutInformation Unavailable { get; } = new() { Branch = "unavailable", Remote = "unavailable", @@ -27,13 +27,13 @@ public record GitConfiguration public required string Ref { get; init; } // manual read because libgit2sharp is not yet AOT ready - public static GitConfiguration Create(IFileSystem fileSystem) + public static GitCheckoutInformation Create(IFileSystem fileSystem) { // filesystem is not real so return a dummy if (fileSystem is not FileSystem) { var fakeRef = Guid.NewGuid().ToString().Substring(0, 16); - return new GitConfiguration { Branch = $"test-{fakeRef}", Remote = "elastic/docs-builder", Ref = fakeRef, }; + return new GitCheckoutInformation { Branch = $"test-{fakeRef}", Remote = "elastic/docs-builder", Ref = fakeRef, }; } var gitConfig = Git(".git/config"); @@ -66,7 +66,7 @@ public static GitConfiguration Create(IFileSystem fileSystem) if (string.IsNullOrEmpty(remote)) remote = Environment.GetEnvironmentVariable("GITHUB_REPOSITORY") ?? "elastic/docs-builder-unknown"; - return new GitConfiguration { Ref = gitRef, Branch = branch, Remote = remote }; + return new GitCheckoutInformation { Ref = gitRef, Branch = branch, Remote = remote }; IFileInfo Git(string path) => fileSystem.FileInfo.New(Path.Combine(Paths.Root.FullName, path)); diff --git a/src/Elastic.Markdown/IO/DocumentationSet.cs b/src/Elastic.Markdown/IO/DocumentationSet.cs index 0d109dbc..c0d652ab 100644 --- a/src/Elastic.Markdown/IO/DocumentationSet.cs +++ b/src/Elastic.Markdown/IO/DocumentationSet.cs @@ -56,7 +56,7 @@ public DocumentationSet(BuildContext context) .GroupBy(file => file.RelativeFolder) .ToDictionary(g => g.Key, g => g.ToArray()); - Tree = new DocumentationFolder(Configuration.TableOfContents, FlatMappedFiles, folderFiles) + Tree = new DocumentationGroup(Configuration.TableOfContents, FlatMappedFiles, folderFiles) { Parent = null }; @@ -92,7 +92,7 @@ private DocumentationFile CreateMarkDownFile(IFileInfo file, BuildContext contex return new ExcludedFile(file, SourcePath); } - public DocumentationFolder Tree { get; } + public DocumentationGroup Tree { get; } public List Files { get; } diff --git a/src/Elastic.Markdown/IO/MarkdownFile.cs b/src/Elastic.Markdown/IO/MarkdownFile.cs index aaff75ef..f9593049 100644 --- a/src/Elastic.Markdown/IO/MarkdownFile.cs +++ b/src/Elastic.Markdown/IO/MarkdownFile.cs @@ -14,6 +14,7 @@ namespace Elastic.Markdown.IO; + public record MarkdownFile : DocumentationFile { private readonly SlugHelper _slugHelper = new(); @@ -31,7 +32,7 @@ public MarkdownFile(IFileInfo sourceFile, IDirectoryInfo rootPath, MarkdownParse private DiagnosticsCollector Collector { get; } - public DocumentationFolder? Parent + public DocumentationGroup? Parent { get => FileName == "index.md" ? _parent?.Parent : _parent; set => _parent = value; @@ -59,7 +60,7 @@ public string? NavigationTitle public string Url => $"{UrlPathPrefix}/{RelativePath.Replace(".md", ".html")}"; private bool _instructionsParsed; - private DocumentationFolder? _parent; + private DocumentationGroup? _parent; public MarkdownFile[] YieldParents() { diff --git a/src/Elastic.Markdown/IO/DocumentationFolder.cs b/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs similarity index 56% rename from src/Elastic.Markdown/IO/DocumentationFolder.cs rename to src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs index 9207d7b7..492e959f 100644 --- a/src/Elastic.Markdown/IO/DocumentationFolder.cs +++ b/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs @@ -4,32 +4,46 @@ namespace Elastic.Markdown.IO; -public class DocumentationFolder +public interface INavigationItem +{ + int Order { get; } + int Depth { get; } +} + +public record GroupNavigation(int Order, int Depth, DocumentationGroup Group) : INavigationItem; +public record FileNavigation(int Order, int Depth, MarkdownFile File) : INavigationItem; + + +public class DocumentationGroup { public MarkdownFile? Index { get; set; } - public List FilesInOrder { get; } - public List GroupsInOrder { get; } + private IReadOnlyCollection FilesInOrder { get; } + + private IReadOnlyCollection GroupsInOrder { get; } + + public IReadOnlyCollection NavigationItems { get; } - public required DocumentationFolder? Parent { get; init; } + public required DocumentationGroup? Parent { get; init; } private HashSet OwnFiles { get; } - public int Level { get; } + public int Depth { get; } - public DocumentationFolder( + public DocumentationGroup( IReadOnlyCollection toc, IDictionary lookup, IDictionary folderLookup, - int level = 0, + int depth = 0, MarkdownFile? index = null ) { - Level = level; - var foundIndex = ProcessTocItems(toc, lookup, folderLookup, level, out var groupsInOrder, out var filesInOrder); + Depth = depth; + var foundIndex = ProcessTocItems(toc, lookup, folderLookup, depth, out var groups, out var files, out var navigationItems); - GroupsInOrder = groupsInOrder; - FilesInOrder = filesInOrder; + GroupsInOrder = groups; + FilesInOrder = files; + NavigationItems = navigationItems; Index = index ?? foundIndex; if (Index is not null) @@ -42,15 +56,17 @@ public DocumentationFolder( IReadOnlyCollection toc, IDictionary lookup, IDictionary folderLookup, - int level, - out List groupsInOrder, - out List filesInOrder + int depth, + out List groups, + out List files, + out List navigationItems ) { - groupsInOrder = []; - filesInOrder = []; - MarkdownFile? index = null; - foreach (var tocItem in toc) + groups = []; + navigationItems = []; + files = []; + MarkdownFile? indexFile = null; + foreach (var (tocItem, index) in toc.Select((t, i) => (t, i))) { if (tocItem is FileReference file) { @@ -61,17 +77,19 @@ out List filesInOrder if (file.Children.Count > 0 && d is MarkdownFile virtualIndex) { - var group = new DocumentationFolder(file.Children, lookup, folderLookup, level + 1, virtualIndex) + var group = new DocumentationGroup(file.Children, lookup, folderLookup, depth + 1, virtualIndex) { Parent = this }; - groupsInOrder.Add(group); + groups.Add(group); + navigationItems.Add(new GroupNavigation(index, depth, group)); continue; } - filesInOrder.Add(md); + files.Add(md); + navigationItems.Add(new FileNavigation(index, depth, md)); if (file.Path.EndsWith("index.md") && d is MarkdownFile i) - index ??= i; + indexFile ??= i; } else if (tocItem is FolderReference folder) { @@ -84,15 +102,16 @@ out List filesInOrder .ToArray(); } - var group = new DocumentationFolder(children, lookup, folderLookup, level + 1) + var group = new DocumentationGroup(children, lookup, folderLookup, depth + 1) { Parent = this }; - groupsInOrder.Add(group); + groups.Add(group); + navigationItems.Add(new GroupNavigation(index, depth, group)); } } - return index ?? filesInOrder.FirstOrDefault(); + return indexFile ?? files.FirstOrDefault(); } public bool HoldsCurrent(MarkdownFile current) => diff --git a/src/Elastic.Markdown/IO/State/GenerationState.cs b/src/Elastic.Markdown/IO/State/GenerationState.cs new file mode 100644 index 00000000..c592cc20 --- /dev/null +++ b/src/Elastic.Markdown/IO/State/GenerationState.cs @@ -0,0 +1,20 @@ +// 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 + +using System.Text.Json.Serialization; +using Elastic.Markdown.IO; + +namespace Elastic.Markdown; + +public record GenerationState +{ + [JsonPropertyName("last_seen_changes")] + public required DateTimeOffset LastSeenChanges { get; init; } + + [JsonPropertyName("invalid_files")] + public required string[] InvalidFiles { get; init; } = []; + + [JsonPropertyName("git")] + public required GitCheckoutInformation Git { get; init; } +} diff --git a/src/Elastic.Markdown/IO/LinkReference.cs b/src/Elastic.Markdown/IO/State/LinkReference.cs similarity index 94% rename from src/Elastic.Markdown/IO/LinkReference.cs rename to src/Elastic.Markdown/IO/State/LinkReference.cs index 43bafd40..f04a448a 100644 --- a/src/Elastic.Markdown/IO/LinkReference.cs +++ b/src/Elastic.Markdown/IO/State/LinkReference.cs @@ -9,7 +9,7 @@ namespace Elastic.Markdown.IO; public record LinkReference { [JsonPropertyName("origin")] - public required GitConfiguration Origin { get; init; } + public required GitCheckoutInformation Origin { get; init; } [JsonPropertyName("url_path_prefix")] public required string? UrlPathPrefix { get; init; } diff --git a/src/Elastic.Markdown/Slices/Layout/_TocTree.cshtml b/src/Elastic.Markdown/Slices/Layout/_TocTree.cshtml index c4664ab4..b4e0c336 100644 --- a/src/Elastic.Markdown/Slices/Layout/_TocTree.cshtml +++ b/src/Elastic.Markdown/Slices/Layout/_TocTree.cshtml @@ -8,7 +8,7 @@

    @await RenderPartialAsync(Elastic.Markdown.Slices.Layout._TocTreeNav.Create(new NavigationTreeItem { - Level = Model.Tree.Level, + Level = Model.Tree.Depth, SubTree = Model.Tree, CurrentDocument = Model.CurrentDocument })) diff --git a/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml b/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml index cfa4a2a6..2dc4665d 100644 --- a/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml +++ b/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml @@ -1,19 +1,27 @@ +@using Elastic.Markdown.IO @inherits RazorSlice -@foreach (var file in Model.SubTree.FilesInOrder) +@foreach (var item in Model.SubTree.NavigationItems) { - var current = file == Model.CurrentDocument ? " current" : string.Empty; -
  • @file.NavigationTitle
  • -} -@foreach (var g in Model.SubTree.GroupsInOrder) -{ - var current = g.HoldsCurrent(Model.CurrentDocument) ? " current" : string.Empty; - var currentFile = g.Index == Model.CurrentDocument ? " current" : string.Empty; -
  • @g.Index?.NavigationTitle@if (@g.FilesInOrder.Count > 0 || g.GroupsInOrder.Count > 0) {
      @await RenderPartialAsync(Elastic.Markdown.Slices.Layout._TocTreeNav.Create(new NavigationTreeItem - { - Level = g.Level, - CurrentDocument = Model.CurrentDocument, - SubTree = g - }))
    -} -
  • + if (item is FileNavigation file) + { + var f = file.File; + var current = f == Model.CurrentDocument ? " current" : string.Empty; +
  • @f.NavigationTitle
  • + } + else if (item is GroupNavigation folder) + { + var g = folder.Group; + var current = g.HoldsCurrent(Model.CurrentDocument) ? " current" : string.Empty; + var currentFile = g.Index == Model.CurrentDocument ? " current" : string.Empty; +
  • @g.Index?.NavigationTitle@if (@g.NavigationItems.Count > 0) {
      + @await RenderPartialAsync(_TocTreeNav.Create(new NavigationTreeItem + { + Level = g.Depth, + CurrentDocument = Model.CurrentDocument, + SubTree = g + })) +
    + } +
  • + } } diff --git a/src/Elastic.Markdown/Slices/_ViewModels.cs b/src/Elastic.Markdown/Slices/_ViewModels.cs index c0c4c6df..1a89034d 100644 --- a/src/Elastic.Markdown/Slices/_ViewModels.cs +++ b/src/Elastic.Markdown/Slices/_ViewModels.cs @@ -10,7 +10,7 @@ public class IndexViewModel { public required string Title { get; init; } public required string MarkdownHtml { get; init; } - public required DocumentationFolder Tree { get; init; } + public required DocumentationGroup Tree { get; init; } public required IReadOnlyCollection PageTocItems { get; init; } public required MarkdownFile CurrentDocument { get; init; } public required string NavigationHtml { get; init; } @@ -22,7 +22,7 @@ public class LayoutViewModel { public string Title { get; set; } = "Elastic Documentation"; public required IReadOnlyCollection PageTocItems { get; init; } - public required DocumentationFolder Tree { get; init; } + public required DocumentationGroup Tree { get; init; } public required MarkdownFile CurrentDocument { get; init; } public required string NavigationHtml { get; set; } public required string? UrlPathPrefix { get; set; } @@ -62,7 +62,7 @@ public class PageTocItem public class NavigationViewModel { - public required DocumentationFolder Tree { get; init; } + public required DocumentationGroup Tree { get; init; } public required MarkdownFile CurrentDocument { get; init; } } @@ -70,5 +70,5 @@ public class NavigationTreeItem { public required int Level { get; init; } public required MarkdownFile CurrentDocument { get; init; } - public required DocumentationFolder SubTree { get; init; } + public required DocumentationGroup SubTree { get; init; } } diff --git a/src/Elastic.Markdown/SourceGenerationContext.cs b/src/Elastic.Markdown/SourceGenerationContext.cs new file mode 100644 index 00000000..c489a119 --- /dev/null +++ b/src/Elastic.Markdown/SourceGenerationContext.cs @@ -0,0 +1,16 @@ +// 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 + +using System.Text.Json.Serialization; +using Elastic.Markdown.IO; + +namespace Elastic.Markdown; + +// This configures the source generation for json (de)serialization. + +[JsonSourceGenerationOptions(WriteIndented = true)] +[JsonSerializable(typeof(GenerationState))] +[JsonSerializable(typeof(LinkReference))] +[JsonSerializable(typeof(GitCheckoutInformation))] +internal partial class SourceGenerationContext : JsonSerializerContext; diff --git a/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs b/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs index f48b2bc2..2bbfdb34 100644 --- a/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs +++ b/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs @@ -19,12 +19,12 @@ public void Create() } } -public class GitConfigurationTests(ITestOutputHelper output) : NavigationTestsBase(output) +public class GitCheckoutInformationTests(ITestOutputHelper output) : NavigationTestsBase(output) { [Fact] public void Create() { - var git = GitConfiguration.Create(ReadFileSystem); + var git = GitCheckoutInformation.Create(ReadFileSystem); git.Should().NotBeNull(); git!.Branch.Should().NotBeNullOrWhiteSpace(); From dd7ef9a2cc28bebef2f820e46198ae1206bb3e4c Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Mon, 13 Jan 2025 17:50:49 +0100 Subject: [PATCH 2/2] adjust namespaces --- src/Elastic.Markdown/BuildContext.cs | 1 + src/Elastic.Markdown/DocumentationGenerator.cs | 1 + src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs | 2 +- src/Elastic.Markdown/IO/Configuration/ITocItem.cs | 2 +- src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs | 2 +- src/Elastic.Markdown/IO/DocumentationSet.cs | 2 ++ src/Elastic.Markdown/IO/MarkdownFile.cs | 1 + src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs | 4 +++- src/Elastic.Markdown/IO/State/GenerationState.cs | 4 ++-- src/Elastic.Markdown/IO/State/LinkReference.cs | 3 ++- src/Elastic.Markdown/Myst/Directives/IncludeBlock.cs | 1 + src/Elastic.Markdown/Myst/Directives/SettingsBlock.cs | 1 + src/Elastic.Markdown/Myst/MarkdownParser.cs | 1 + src/Elastic.Markdown/Myst/ParserContext.cs | 1 + src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml | 2 +- src/Elastic.Markdown/Slices/_ViewModels.cs | 1 + src/Elastic.Markdown/SourceGenerationContext.cs | 2 ++ tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs | 2 ++ tests/Elastic.Markdown.Tests/DocSet/NavigationTestsBase.cs | 1 + 19 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/Elastic.Markdown/BuildContext.cs b/src/Elastic.Markdown/BuildContext.cs index 95c6cb13..04932301 100644 --- a/src/Elastic.Markdown/BuildContext.cs +++ b/src/Elastic.Markdown/BuildContext.cs @@ -4,6 +4,7 @@ using System.IO.Abstractions; using Elastic.Markdown.Diagnostics; using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Discovery; namespace Elastic.Markdown; diff --git a/src/Elastic.Markdown/DocumentationGenerator.cs b/src/Elastic.Markdown/DocumentationGenerator.cs index adb50fae..cf820829 100644 --- a/src/Elastic.Markdown/DocumentationGenerator.cs +++ b/src/Elastic.Markdown/DocumentationGenerator.cs @@ -5,6 +5,7 @@ using System.Reflection; using System.Text.Json; using Elastic.Markdown.IO; +using Elastic.Markdown.IO.State; using Elastic.Markdown.Slices; using Microsoft.Extensions.Logging; diff --git a/src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs b/src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs index 1a8bf159..437ac461 100644 --- a/src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs +++ b/src/Elastic.Markdown/IO/Configuration/ConfigurationFile.cs @@ -8,7 +8,7 @@ using YamlDotNet.Core; using YamlDotNet.RepresentationModel; -namespace Elastic.Markdown.IO; +namespace Elastic.Markdown.IO.Configuration; public record ConfigurationFile : DocumentationFile { diff --git a/src/Elastic.Markdown/IO/Configuration/ITocItem.cs b/src/Elastic.Markdown/IO/Configuration/ITocItem.cs index 85c25c24..b6262ec2 100644 --- a/src/Elastic.Markdown/IO/Configuration/ITocItem.cs +++ b/src/Elastic.Markdown/IO/Configuration/ITocItem.cs @@ -2,7 +2,7 @@ // 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 Elastic.Markdown.IO; +namespace Elastic.Markdown.IO.Configuration; public interface ITocItem; diff --git a/src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs b/src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs index abcb7d39..39596c0c 100644 --- a/src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs +++ b/src/Elastic.Markdown/IO/Discovery/GitCheckoutInformation.cs @@ -6,7 +6,7 @@ using System.Text.Json.Serialization; using SoftCircuits.IniFileParser; -namespace Elastic.Markdown.IO; +namespace Elastic.Markdown.IO.Discovery; public record GitCheckoutInformation { diff --git a/src/Elastic.Markdown/IO/DocumentationSet.cs b/src/Elastic.Markdown/IO/DocumentationSet.cs index c0d652ab..9793b996 100644 --- a/src/Elastic.Markdown/IO/DocumentationSet.cs +++ b/src/Elastic.Markdown/IO/DocumentationSet.cs @@ -4,6 +4,8 @@ using System.IO.Abstractions; using Elastic.Markdown.Diagnostics; +using Elastic.Markdown.IO.Configuration; +using Elastic.Markdown.IO.Navigation; using Elastic.Markdown.Myst; namespace Elastic.Markdown.IO; diff --git a/src/Elastic.Markdown/IO/MarkdownFile.cs b/src/Elastic.Markdown/IO/MarkdownFile.cs index f9593049..0a909a16 100644 --- a/src/Elastic.Markdown/IO/MarkdownFile.cs +++ b/src/Elastic.Markdown/IO/MarkdownFile.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information using System.IO.Abstractions; using Elastic.Markdown.Diagnostics; +using Elastic.Markdown.IO.Navigation; using Elastic.Markdown.Myst; using Elastic.Markdown.Myst.Directives; using Elastic.Markdown.Myst.FrontMatter; diff --git a/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs b/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs index 492e959f..848ed9d1 100644 --- a/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs +++ b/src/Elastic.Markdown/IO/Navigation/DocumentationGroup.cs @@ -2,7 +2,9 @@ // 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 Elastic.Markdown.IO; +using Elastic.Markdown.IO.Configuration; + +namespace Elastic.Markdown.IO.Navigation; public interface INavigationItem { diff --git a/src/Elastic.Markdown/IO/State/GenerationState.cs b/src/Elastic.Markdown/IO/State/GenerationState.cs index c592cc20..f7492198 100644 --- a/src/Elastic.Markdown/IO/State/GenerationState.cs +++ b/src/Elastic.Markdown/IO/State/GenerationState.cs @@ -3,9 +3,9 @@ // See the LICENSE file in the project root for more information using System.Text.Json.Serialization; -using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Discovery; -namespace Elastic.Markdown; +namespace Elastic.Markdown.IO.State; public record GenerationState { diff --git a/src/Elastic.Markdown/IO/State/LinkReference.cs b/src/Elastic.Markdown/IO/State/LinkReference.cs index f04a448a..73509da5 100644 --- a/src/Elastic.Markdown/IO/State/LinkReference.cs +++ b/src/Elastic.Markdown/IO/State/LinkReference.cs @@ -3,8 +3,9 @@ // See the LICENSE file in the project root for more information using System.Text.Json.Serialization; +using Elastic.Markdown.IO.Discovery; -namespace Elastic.Markdown.IO; +namespace Elastic.Markdown.IO.State; public record LinkReference { diff --git a/src/Elastic.Markdown/Myst/Directives/IncludeBlock.cs b/src/Elastic.Markdown/Myst/Directives/IncludeBlock.cs index 93bd525b..a2ee2b79 100644 --- a/src/Elastic.Markdown/Myst/Directives/IncludeBlock.cs +++ b/src/Elastic.Markdown/Myst/Directives/IncludeBlock.cs @@ -4,6 +4,7 @@ using System.IO.Abstractions; using Elastic.Markdown.Diagnostics; using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Configuration; using Elastic.Markdown.Myst.FrontMatter; namespace Elastic.Markdown.Myst.Directives; diff --git a/src/Elastic.Markdown/Myst/Directives/SettingsBlock.cs b/src/Elastic.Markdown/Myst/Directives/SettingsBlock.cs index 9ea1442b..5bc5577e 100644 --- a/src/Elastic.Markdown/Myst/Directives/SettingsBlock.cs +++ b/src/Elastic.Markdown/Myst/Directives/SettingsBlock.cs @@ -4,6 +4,7 @@ using System.IO.Abstractions; using Elastic.Markdown.Diagnostics; using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Configuration; using Elastic.Markdown.Myst.FrontMatter; namespace Elastic.Markdown.Myst.Directives; diff --git a/src/Elastic.Markdown/Myst/MarkdownParser.cs b/src/Elastic.Markdown/Myst/MarkdownParser.cs index d45b1cc4..6105459c 100644 --- a/src/Elastic.Markdown/Myst/MarkdownParser.cs +++ b/src/Elastic.Markdown/Myst/MarkdownParser.cs @@ -5,6 +5,7 @@ using System.IO.Abstractions; using Cysharp.IO; using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Configuration; using Elastic.Markdown.Myst.CodeBlocks; using Elastic.Markdown.Myst.Comments; using Elastic.Markdown.Myst.Directives; diff --git a/src/Elastic.Markdown/Myst/ParserContext.cs b/src/Elastic.Markdown/Myst/ParserContext.cs index a75c2798..6a2583f7 100644 --- a/src/Elastic.Markdown/Myst/ParserContext.cs +++ b/src/Elastic.Markdown/Myst/ParserContext.cs @@ -5,6 +5,7 @@ using System.IO.Abstractions; using Elastic.Markdown.Diagnostics; using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Configuration; using Elastic.Markdown.Myst.FrontMatter; using Markdig; using Markdig.Parsers; diff --git a/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml b/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml index 2dc4665d..a77fdd9f 100644 --- a/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml +++ b/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml @@ -1,4 +1,4 @@ -@using Elastic.Markdown.IO +@using Elastic.Markdown.IO.Navigation @inherits RazorSlice @foreach (var item in Model.SubTree.NavigationItems) { diff --git a/src/Elastic.Markdown/Slices/_ViewModels.cs b/src/Elastic.Markdown/Slices/_ViewModels.cs index 1a89034d..16a77a6d 100644 --- a/src/Elastic.Markdown/Slices/_ViewModels.cs +++ b/src/Elastic.Markdown/Slices/_ViewModels.cs @@ -2,6 +2,7 @@ // 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 using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Navigation; using Elastic.Markdown.Myst.FrontMatter; namespace Elastic.Markdown.Slices; diff --git a/src/Elastic.Markdown/SourceGenerationContext.cs b/src/Elastic.Markdown/SourceGenerationContext.cs index c489a119..5ae58eb9 100644 --- a/src/Elastic.Markdown/SourceGenerationContext.cs +++ b/src/Elastic.Markdown/SourceGenerationContext.cs @@ -4,6 +4,8 @@ using System.Text.Json.Serialization; using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Discovery; +using Elastic.Markdown.IO.State; namespace Elastic.Markdown; diff --git a/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs b/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs index 2bbfdb34..95ebfafb 100644 --- a/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs +++ b/tests/Elastic.Markdown.Tests/DocSet/LinkReferenceTests.cs @@ -3,6 +3,8 @@ // See the LICENSE file in the project root for more information using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Discovery; +using Elastic.Markdown.IO.State; using FluentAssertions; using Xunit.Abstractions; diff --git a/tests/Elastic.Markdown.Tests/DocSet/NavigationTestsBase.cs b/tests/Elastic.Markdown.Tests/DocSet/NavigationTestsBase.cs index fc001308..fabac673 100644 --- a/tests/Elastic.Markdown.Tests/DocSet/NavigationTestsBase.cs +++ b/tests/Elastic.Markdown.Tests/DocSet/NavigationTestsBase.cs @@ -6,6 +6,7 @@ using System.IO.Abstractions.TestingHelpers; using Elastic.Markdown.Diagnostics; using Elastic.Markdown.IO; +using Elastic.Markdown.IO.Configuration; using FluentAssertions; using Xunit.Abstractions;