ktsu.Frontmatter
1.2.1
Prefix Reserved
See the version list below for details.
dotnet add package ktsu.Frontmatter --version 1.2.1
NuGet\Install-Package ktsu.Frontmatter -Version 1.2.1
<PackageReference Include="ktsu.Frontmatter" Version="1.2.1" />
<PackageVersion Include="ktsu.Frontmatter" Version="1.2.1" />
<PackageReference Include="ktsu.Frontmatter" />
paket add ktsu.Frontmatter --version 1.2.1
#r "nuget: ktsu.Frontmatter, 1.2.1"
#:package ktsu.Frontmatter@1.2.1
#addin nuget:?package=ktsu.Frontmatter&version=1.2.1
#tool nuget:?package=ktsu.Frontmatter&version=1.2.1
ktsu.Frontmatter
A .NET library for processing and manipulating YAML frontmatter in markdown files.
Features
- Extract, add, replace, and remove frontmatter from markdown documents
- Combine multiple frontmatter sections into a single section
- Standardize property names using intelligent matching
- Sort properties according to standard conventions
- Merge similar properties using different strategies
- High performance with caching for repeated operations
Installation
dotnet add package ktsu.Frontmatter
Usage
using ktsu.Frontmatter;
// Extract frontmatter from a markdown document
string markdown = File.ReadAllText("document.md");
var frontmatter = Frontmatter.ExtractFrontmatter(markdown);
// Add frontmatter to a document
var properties = new Dictionary<string, object>
{
{ "title", "My Document" },
{ "date", DateTime.Now },
{ "tags", new[] { "documentation", "markdown" } }
};
string withFrontmatter = Frontmatter.AddFrontmatter(markdown, properties);
// Replace frontmatter
string replaced = Frontmatter.ReplaceFrontmatter(markdown, properties);
// Remove frontmatter
string withoutFrontmatter = Frontmatter.RemoveFrontmatter(markdown);
// Combine multiple frontmatter sections
string combined = Frontmatter.CombineFrontmatter(markdown);
// Customize property naming and ordering
string customized = Frontmatter.CombineFrontmatter(
markdown,
FrontmatterNaming.Standard, // Standardize property names
FrontmatterOrder.Sorted, // Sort properties in standard order
FrontmatterMergeStrategy.Conservative // Merge similar properties
);
// Extract just the document body (content after frontmatter)
string body = Frontmatter.ExtractBody(markdown);
Advanced Features
Property Naming
Control how property names are handled:
FrontmatterNaming.AsIs: Keep property names as-isFrontmatterNaming.Standard: Standardize property names using common conventions
Property Ordering
Control how properties are ordered:
FrontmatterOrder.AsIs: Keep properties in the order they appearFrontmatterOrder.Sorted: Sort properties according to standard conventions
Merge Strategies
Control how similar properties are merged:
FrontmatterMergeStrategy.None: Do not merge any propertiesFrontmatterMergeStrategy.Conservative: Only merge properties using predefined mappingsFrontmatterMergeStrategy.Aggressive: Merge properties using basic pattern matchingFrontmatterMergeStrategy.Maximum: Merge properties using semantic analysis
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- HashDepot (>= 2.0.3)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
-
.NETStandard 2.1
- HashDepot (>= 2.0.3)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
-
net10.0
- HashDepot (>= 2.0.3)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
-
net5.0
- HashDepot (>= 2.0.3)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
-
net6.0
- HashDepot (>= 2.0.3)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
-
net7.0
- HashDepot (>= 2.0.3)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
-
net8.0
- HashDepot (>= 2.0.3)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
-
net9.0
- HashDepot (>= 2.0.3)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.2-pre.3 | 0 | 1/29/2026 |
| 1.2.2-pre.2 | 26 | 1/28/2026 |
| 1.2.2-pre.1 | 34 | 1/28/2026 |
| 1.2.1 | 36 | 1/28/2026 |
| 1.2.0 | 365 | 4/25/2025 |
| 1.1.0 | 202 | 4/25/2025 |
## v1.2.1 (patch)
Changes since v1.2.0:
- Refactor Frontmatter and PropertyMerger logic ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove obsolete test files for PropertyMerger ([@matt-edmondson](https://github.com/matt-edmondson))
- Add unit tests for PropertyMerger's similarity mapping ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance Frontmatter and PropertyMerger functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor YamlSerializer for improved deserialization and serialization ([@matt-edmondson](https://github.com/matt-edmondson))
- Add unit tests for PropertyMerger class ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance PropertyMerger and YamlSerializer functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Update project SDK references in Frontmatter and Frontmatter.Test ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor NameStandardizer and PropertyMerger for improved property mapping ([@matt-edmondson](https://github.com/matt-edmondson))
- Update project configuration and scripts for improved build processes ([@matt-edmondson](https://github.com/matt-edmondson))
- Update configuration files and scripts for improved build and test processes ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate to dotnet 10 ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor Frontmatter extraction and standardization logic ([@matt-edmondson](https://github.com/matt-edmondson))
- Add isolation tests for PropertyMerger class ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance Frontmatter validation and refactor PropertyMerger logic ([@matt-edmondson](https://github.com/matt-edmondson))
- Add additional unit tests for Frontmatter functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor PropertyMerger and YamlSerializer for improved performance and reliability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor Frontmatter extraction and PropertyMerger logic ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove obsolete test methods from PropertyMergerTests ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove obsolete build configuration files and scripts ([@matt-edmondson](https://github.com/matt-edmondson))
- Update GitHub Actions workflow to include CHANGELOG.md in release notes ([@matt-edmondson](https://github.com/matt-edmondson))
- Add comprehensive unit tests for Frontmatter handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor YamlSerializer for improved deserialization and serialization ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.0 (minor)
Changes since v1.1.0:
- Add unit tests for Frontmatter functionality and update solution file ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.1.0 (major)
- Initial commit ([@matt-edmondson](https://github.com/matt-edmondson))