surf-parse 0.1.0

Parser for the SurfDoc format — markdown superset with typed block directives
Documentation

surf-parse

Parser for the SurfDoc format — a markdown superset with typed block directives for structured documents.

SurfDoc extends CommonMark with ::directive blocks that represent data tables, callouts, decisions, metrics, tasks, code, figures, FAQ, pricing tables, and full multi-page site structures. Every block is typed, validated, and renderable to HTML, markdown, or ANSI terminal output.

Usage

let result = surf_parse::parse("# Hello\n\n::callout[type=tip]\nThis is a tip.\n::\n");

// Render to HTML
let config = surf_parse::PageConfig::default();
let html = result.doc.to_html_page(&config);

Block Types (19)

Core: Callout, Data, Code, Tasks, Decision, Metric, Summary, Figure Container: Columns, Tabs Web: Cta, HeroImage, Testimonial, Style, Faq, PricingTable, Site, Page Passthrough: Unknown (unrecognized directives preserved)

Features

  • Full CommonMark support via pulldown-cmark
  • YAML front matter parsing
  • 19 typed block directives with attribute parsing
  • 3 renderers: HTML (with embedded CSS), markdown degradation, ANSI terminal
  • Validation with 19 diagnostic codes
  • Multi-page site generation (::site + ::page blocks)

License

MIT

Links