mdstream 0.2.0

Streaming-first Markdown middleware for LLM output (committed + pending blocks, render-agnostic).
Documentation
use mdstream::{MdStream, Options};

#[test]
fn append_ref_returns_pending_for_plain_text() {
    let mut s = MdStream::new(Options::default());
    let u = s.append_ref("Hello");
    assert!(u.committed.is_empty());
    let p = u.pending.expect("pending must exist");
    assert_eq!(p.raw, "Hello");
    assert!(p.display_or_raw().contains("Hello"));
}

#[test]
fn append_ref_code_fence_pending_display_is_closed() {
    let mut s = MdStream::new(Options::default());

    let u1 = s.append_ref("```rs\nfn main() {\n");
    assert!(u1.committed.is_empty());
    let p1 = u1.pending.expect("pending must exist");
    let d1 = p1.display.expect("pending display must exist");
    assert!(d1.contains("fn main()"));
    assert!(
        d1.ends_with("```\n"),
        "display must end with a closing fence"
    );

    let u2 = s.append_ref("}\n");
    assert!(u2.committed.is_empty());
    let p2 = u2.pending.expect("pending must exist");
    let d2 = p2.display.expect("pending display must exist");
    assert!(d2.contains("}\n"));
    assert!(
        d2.ends_with("```\n"),
        "display must end with a closing fence"
    );
}