Files
ligent/src/markdown.h
T
2026-10-04 13:50:33 +08:00

38 lines
1.3 KiB
C

/* markdown.h - 面向终端输出的流式 Markdown 渲染器
*
* 设计目标: 在"纯行式 REPL"的前提下把常见 Markdown 变成 ANSI 样式,
* 且必须能处理任意分片 (SSE 的一小片文本可能把一个标记切成两半).
*
* 渲染:
* 块级 # ~ ###### 标题、> 引用、- * + 无序列表、--- 分隔线、| 表格
* 行内 **粗体**、*斜体* / _斜体_、`行内代码`、[链接文字] (蓝色高亮)
*
* 不渲染 (原样保留, 一个字节都不丢):
* 围栏代码块 (含 ``` 标记本身)、图片 ![alt](src)、链接的 (url) 部分、
* 行内代码的内容
*/
#ifndef LIGENT_MARKDOWN_H
#define LIGENT_MARKDOWN_H
#include <stddef.h>
#include <stdio.h>
typedef struct MdRenderer MdRenderer;
/* enabled = 0 时完全透传, 逐字节不改写内容 (供管道 / --no-color 使用) */
MdRenderer *md_new(int enabled);
void md_set_enabled(MdRenderer *r, int enabled);
/* 输出目标, 默认 stdout (测试时指向内存流) */
void md_set_out(MdRenderer *r, FILE *out);
/* 喂入一段文本 (NUL 结尾). 内部保持状态, 可被任意切分 */
void md_feed(MdRenderer *r, const char *text);
/* 一条消息结束: 冲刷残留、闭合未闭合的样式 */
void md_finish(MdRenderer *r);
void md_free(MdRenderer *r);
#endif /* LIGENT_MARKDOWN_H */