Skip to content

Commit 6c5b387

Browse files
committed
update applies to syntax to include product lifecycle
1 parent 3acc7ee commit 6c5b387

File tree

7 files changed

+107
-217
lines changed

7 files changed

+107
-217
lines changed

src/Elastic.Markdown/IO/MarkdownFile.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Elastic.Markdown.Diagnostics;
66
using Elastic.Markdown.Myst;
77
using Elastic.Markdown.Myst.Directives;
8+
using Elastic.Markdown.Myst.FrontMatter;
89
using Elastic.Markdown.Slices;
910
using Markdig;
1011
using Markdig.Extensions.Yaml;

src/Elastic.Markdown/Myst/Directives/IncludeBlock.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.IO.Abstractions;
55
using Elastic.Markdown.Diagnostics;
66
using Elastic.Markdown.IO;
7+
using Elastic.Markdown.Myst.FrontMatter;
78

89
namespace Elastic.Markdown.Myst.Directives;
910

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// Licensed to Elasticsearch B.V under one or more agreements.
2+
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3+
// See the LICENSE file in the project root for more information
4+
5+
using YamlDotNet.Serialization;
6+
7+
namespace Elastic.Markdown.Myst.FrontMatter;
8+
9+
[YamlStaticContext]
10+
public partial class YamlFrontMatterStaticContext;
11+
12+
[YamlSerializable]
13+
public class YamlFrontMatter
14+
{
15+
[YamlMember(Alias = "title")]
16+
public string? Title { get; set; }
17+
18+
[YamlMember(Alias = "navigation_title")]
19+
public string? NavigationTitle { get; set; }
20+
21+
[YamlMember(Alias = "sub")]
22+
public Dictionary<string, string>? Properties { get; set; }
23+
24+
25+
[YamlMember(Alias = "applies")]
26+
public Deployment? AppliesTo { get; set; }
27+
}
28+
29+
public static class FrontMatterParser
30+
{
31+
public static YamlFrontMatter Deserialize(string yaml)
32+
{
33+
var input = new StringReader(yaml);
34+
35+
var deserializer = new StaticDeserializerBuilder(new YamlFrontMatterStaticContext())
36+
.IgnoreUnmatchedProperties()
37+
.WithTypeConverter(new SemVersionConverter())
38+
.WithTypeConverter(new DeploymentConverter())
39+
.Build();
40+
41+
var frontMatter = deserializer.Deserialize<YamlFrontMatter>(input);
42+
return frontMatter;
43+
44+
}
45+
}
46+

src/Elastic.Markdown/Myst/FrontMatterParser.cs

Lines changed: 0 additions & 195 deletions
This file was deleted.

src/Elastic.Markdown/Myst/MarkdownParser.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Elastic.Markdown.IO;
88
using Elastic.Markdown.Myst.Comments;
99
using Elastic.Markdown.Myst.Directives;
10+
using Elastic.Markdown.Myst.FrontMatter;
1011
using Elastic.Markdown.Myst.InlineParsers;
1112
using Elastic.Markdown.Myst.Substitution;
1213
using Markdig;

src/Elastic.Markdown/Myst/ParserContext.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using System.IO.Abstractions;
66
using Elastic.Markdown.IO;
7+
using Elastic.Markdown.Myst.FrontMatter;
78
using Markdig;
89
using Markdig.Parsers;
910

0 commit comments

Comments
 (0)