html_gen: nm/html_gen.nepl に関する機能を提供するライブラリ
- このモジュールの公開 API を提供します。
- 実装の変更時に最小限の doctest 実行経路を維持します。
- 利用時は各関数の「目的」「注意」「計算量」を確認してください。
TESTskip
#entry main
#target std
fn main <()*>i32> ():
()
0escape_html: 主な用途
- escape_html の主な用途と呼び出し方を示します。
- 定義済み処理をそのまま呼び出す薄いラッパで構成されています。
- 引数の値は関数呼び出しで移動するため、再利用時は束縛し直してください。
- 本体処理に準じます。
render_inlines: 主な用途
- render_inlines の主な用途と呼び出し方を示します。
- 定義済み処理をそのまま呼び出す薄いラッパで構成されています。
- 引数の値は関数呼び出しで移動するため、再利用時は束縛し直してください。
- 本体処理に準じます。
render_nodes: 主な用途
- render_nodes の主な用途と呼び出し方を示します。
- 定義済み処理をそのまま呼び出す薄いラッパで構成されています。
- 引数の値は関数呼び出しで移動するため、再利用時は束縛し直してください。
- 本体処理に準じます。
render_document: Document AST を HTML 文字列へ変換する
- nm/parser が返した AST をブラウザ表示可能な HTML へ変換します。
- CLI の
--html出力や docs 生成で使用する最終段 API です。
render_nodes/render_inlinesでノード種別ごとに再帰展開します。- 文字列部分は
escape_htmlでエスケープし、math は$...$をそのまま保持します。
- 生成 HTML は安全側の最小エスケープ実装です。属性ホワイトリスト等は今後拡張します。
- O(m)(m は出力 HTML バイト数)。
TEST
#entry main
#target core
#import "alloc/string" as *
#import "nm/parser" as *
#import "nm/html_gen" as *
fn main <()*>i32> ():
let d <Document> parse_markdown "# T\n\nx\n";
let h <str> render_document d;
if and str_starts_with h "<section" str_ends_with h "</section>" 0 1