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-is
  • FrontmatterNaming.Standard: Standardize property names using common conventions

Property Ordering

Control how properties are ordered:

  • FrontmatterOrder.AsIs: Keep properties in the order they appear
  • FrontmatterOrder.Sorted: Sort properties according to standard conventions

Merge Strategies

Control how similar properties are merged:

  • FrontmatterMergeStrategy.None: Do not merge any properties
  • FrontmatterMergeStrategy.Conservative: Only merge properties using predefined mappings
  • FrontmatterMergeStrategy.Aggressive: Merge properties using basic pattern matching
  • FrontmatterMergeStrategy.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

.NET 9.0

.NET 10.0

.NET Standard 2.0

.NET Standard 2.1

.NET 8.0

.NET 6.0

.NET 7.0

Version Downloads Last updated
1.2.2-pre.1 4 01/28/2026
1.2.1 4 01/28/2026