Skip to content

Commit

Permalink
Fix inline code in left navigation and h1 rendering (#290)
Browse files Browse the repository at this point in the history
* Fix inline code in left navigation and h1 rendering

* Format and license

* Revert locally.md

* fix

* Add comment

* Refactor and use Markdig to strip markdown

* Trim result because it sometimes has a newline

* Remove obvious comment

* Unnecessary check

* Set once

* Use extension method

* Add TitleRaw property

* Revert req.md
  • Loading branch information
reakaleek authored Jan 24, 2025
1 parent 62f580a commit 05feb7e
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 4 deletions.
15 changes: 15 additions & 0 deletions src/Elastic.Markdown/Helpers/Markdown.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// 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 Elastic.Markdown.Helpers;

public static class MarkdownStringExtensions
{
public static string StripMarkdown(this string markdown)
{
using var writer = new StringWriter();
Markdig.Markdown.ToPlainText(markdown, writer);
return writer.ToString().TrimEnd('\n');
}
}
17 changes: 14 additions & 3 deletions src/Elastic.Markdown/IO/MarkdownFile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,21 @@ public DocumentationGroup? Parent
public string? UrlPathPrefix { get; }
private MarkdownParser MarkdownParser { get; }
public YamlFrontMatter? YamlFrontMatter { get; private set; }
public string? Title { get; private set; }
public string? TitleRaw { get; private set; }

public string? Title
{
get => _title;
private set
{
_title = value?.StripMarkdown();
TitleRaw = value;
}
}
public string? NavigationTitle
{
get => !string.IsNullOrEmpty(_navigationTitle) ? _navigationTitle : Title;
private set => _navigationTitle = value;
private set => _navigationTitle = value?.StripMarkdown();
}

//indexed by slug
Expand All @@ -64,6 +74,7 @@ public string? NavigationTitle

private bool _instructionsParsed;
private DocumentationGroup? _parent;
private string? _title;

public MarkdownFile[] YieldParents()
{
Expand Down Expand Up @@ -156,7 +167,7 @@ private void ReadDocumentInstructions(MarkdownDocument document)
.Select(h => (h.GetData("header") as string, h.GetData("anchor") as string))
.Select(h => new PageTocItem
{
Heading = h.Item1!.Replace("`", "").Replace("*", ""),
Heading = h.Item1!.StripMarkdown(),
Slug = (h.Item2 ?? h.Item1).Slugify()
})
.ToList();
Expand Down
1 change: 1 addition & 0 deletions src/Elastic.Markdown/Slices/HtmlWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ public async Task<string> RenderLayout(MarkdownFile markdown, Cancel ctx = defau
var slice = Index.Create(new IndexViewModel
{
Title = markdown.Title ?? "[TITLE NOT SET]",
TitleRaw = markdown.TitleRaw ?? "[TITLE NOT SET]",
MarkdownHtml = html,
PageTocItems = markdown.TableOfContents.Values.ToList(),
Tree = DocumentationSet.Tree,
Expand Down
4 changes: 3 additions & 1 deletion src/Elastic.Markdown/Slices/Index.cshtml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
@using Markdig
@inherits RazorSliceHttpResult<IndexViewModel>
@implements IUsesLayout<Elastic.Markdown.Slices._Layout, LayoutViewModel>
@functions {
Expand All @@ -16,7 +17,8 @@
};
}
<section id="elastic-docs-v3">
<h1>@(Model.Title)</h1>
@* This way it's correctly rendered as <h1>text</h1> instead of <h1><p>text</p></h1> *@
@(new HtmlString(Markdown.ToHtml("# " + Model.TitleRaw)))
@if (Model.Applies is not null)
{
await RenderPartialAsync(Applies.Create(Model.Applies));
Expand Down
2 changes: 2 additions & 0 deletions src/Elastic.Markdown/Slices/_ViewModels.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ namespace Elastic.Markdown.Slices;
public class IndexViewModel
{
public required string Title { get; init; }
public required string TitleRaw { get; init; }
public required string MarkdownHtml { get; init; }
public required DocumentationGroup Tree { get; init; }
public required IReadOnlyCollection<PageTocItem> PageTocItems { get; init; }
Expand All @@ -26,6 +27,7 @@ public class IndexViewModel
public class LayoutViewModel
{
public string Title { get; set; } = "Elastic Documentation";
public string RawTitle { get; set; } = "Elastic Documentation";
public required IReadOnlyCollection<PageTocItem> PageTocItems { get; init; }
public required DocumentationGroup Tree { get; init; }
public required MarkdownFile CurrentDocument { get; init; }
Expand Down

0 comments on commit 05feb7e

Please sign in to comment.