krik 0.1.21

A fast static site generator written in Rust with internationalization, theming, and modern web features
Documentation
use krik::generator::ast_parser::{parse_markdown_ast, generate_toc_from_headings, Heading};
use pulldown_cmark::HeadingLevel;

#[test]
fn parse_markdown_ast_extracts_headings_and_ids() {
    let md = "# Title\n\n## Section 1\n\nText";
    let result = parse_markdown_ast(md);
    assert_eq!(result.headings.len(), 2);
    assert_eq!(result.headings[0].text, "Title");
    assert!(result.html_content.contains("id=\"title\""));
}

#[test]
fn heading_id_uniqueness() {
    let md = "# My Heading\n\n# My Heading";
    let result = parse_markdown_ast(md);
    assert_eq!(result.headings[0].id, "my-heading");
    assert_eq!(result.headings[1].id, "my-heading-1");
}

#[test]
fn toc_generation_skips_title() {
    let headings = vec![
        Heading { level: HeadingLevel::H1, text: "Title".into(), id: "title".into(), line_number: 1 },
        Heading { level: HeadingLevel::H2, text: "Section".into(), id: "section".into(), line_number: 2 },
    ];
    let toc = generate_toc_from_headings(&headings, Some("Title"));
    assert!(toc.contains("Section"));
    assert!(!toc.contains("Title"));
}