#markdown-html #pulldown-cmark #html #markdown #hamlet

cmark-hamlet

提供从pulldown-cmark到hamlet的适配器

2 个版本

使用旧的Rust 2015

0.0.2 2016年12月16日
0.0.1 2016年4月2日

#12 in #pulldown-cmark

MIT/Apache

12KB
223

cmark-hamlet

此crate提供从pulldown-cmark标签到hamlet标记的适配器,实际上是一个简单的markdown-to-html实现。

注意:正在进行中;尚未准备好使用。


lib.rs:

此库提供从pulldown-cmark事件到hamlet标记的适配器。

注意:markdown中的块/内联html不会被解析为正确的hamlet标记。

示例

extern crate pulldown_cmark;
extern crate cmark_hamlet;

use std::fmt::Write;
use pulldown_cmark::Parser;
use cmark_hamlet::Adapter;

fn main() {
    let md = "Ok, [google][ref]\n\n- - -\n\n\
              ```rust\n\
              use hamlet;\n\
              ```\n\n\
              [ref]: http://google.com";
    let ada = Adapter::new(Parser::new(md), false);
    let mut res = String::from("");
    for token in ada {
        write!(res, "{}", token).unwrap();
    }
    assert_eq!("<p>Ok, <a href=\"http://google.com\">google</a></p><hr />\
               <pre data-lang=\"rust\"><code>use hamlet;\n</code></pre>",
               res);
}

翻译

事件映射

pulldown_cmark 事件 动作
开始(标签) 上下文相关;见 标签映射
结束(标签) 上下文相关
文本(文本) 上下文相关;见 文本处理
HTML(HTML) 标记::原始文本(HTML)
内联HTML(HTML) 标记::原始文本(HTML)
软换行 "\n" (见 文本处理
硬换行 Token 表示 <br />
脚注引用(_) 未实现!

标签映射

pulldown_cmark 标签 HTML 标签名
块引用 blockquote
代码块(lang) precode (见 CodeBlock 处理
代码 code
强调 em
脚注定义(_) 未实现!
标题(级别) h{级别}
图片(_, _) img
li
链接(_, _) a
列表() ul
列表(有的(_)) ol
段落 p
规则 hr
强调 strong
表格(_) table
表格单元格 tdth
表头 tr
表格行 tr

文本处理

所有后续的 TextSoftBreak 事件被合并成一个单独的 hamlet::Text 标记,如果提供了 group_text 参数 则为 true

CodeBlock 处理

如果 lang 属性不为空,则会在 pre 标签上添加一个具有该值的 data-lang 属性。

依赖项

约1MB
约18K SLoC