ktsu.Frontmatter 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
No packages depend on ktsu.Frontmatter.
## 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))
.NET 5.0
- HashDepot (>= 2.0.3)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
.NET 9.0
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- HashDepot (>= 2.0.3)
- YamlDotNet (>= 16.3.0)
.NET 10.0
- HashDepot (>= 2.0.3)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
.NET Standard 2.0
- HashDepot (>= 2.0.3)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
.NET Standard 2.1
- HashDepot (>= 2.0.3)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Polyfill (>= 9.7.6)
- YamlDotNet (>= 16.3.0)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
.NET 8.0
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- YamlDotNet (>= 16.3.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- HashDepot (>= 2.0.3)
- Polyfill (>= 9.7.6)
.NET 6.0
- HashDepot (>= 2.0.3)
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- YamlDotNet (>= 16.3.0)
- ktsu.Extensions (>= 1.5.7)
- ktsu.FuzzySearch (>= 1.2.2)
- Polyfill (>= 9.7.6)
.NET 7.0
- Microsoft.SourceLink.AzureRepos.Git (>= 8.0.0)
- HashDepot (>= 2.0.3)
- ktsu.Extensions (>= 1.5.7)
- YamlDotNet (>= 16.3.0)
- Polyfill (>= 9.7.6)
- Microsoft.SourceLink.GitHub (>= 8.0.0)
- ktsu.FuzzySearch (>= 1.2.2)
| Version | Downloads | Last updated |
|---|---|---|
| 1.2.2-pre.1 | 3 | 01/28/2026 |
| 1.2.1 | 4 | 01/28/2026 |