1 个不稳定版本
0.1.0 | 2021年2月26日 |
---|
#1831 in 文本处理
24KB
510 行
japanese-ruby-filter
此 crate 提供一个文本过滤器,用于处理日文 Ruby 的标记。
Ruby 文本结构
包含 Ruby 的文本由基本字符和 Ruby 字符组成。基本字符和 Ruby 字符被分成相同数量的组。Ruby 字符可以显示在对应的基本字符组的顶部。
支持的符号
当前版本仅支持类似 LaTeX 的符号。
类似 LaTeX 的符号
使用类似 LaTeX 的命令符号来表示 Ruby。符号基于 pxrubrica 包,但略有修改。它以 \ruby
开始,基本字符和 Ruby 字符在花括号内给出
\ruby{武|家|諸法度}{ぶ|け|しょはっと}
第一个参数是基本字符。符号 |
分隔基本字符组。第二个参数是 Ruby 字符。与基本字符类似,使用 |
作为分隔符。
在上面的例子中,Ruby 字符 ぶ
对应基本字符 武
。Ruby 字符 しょはっと
对应 諸法度
。
对 pulldown-cmark
的过滤器
此 crate 提供一个 pulldown-cmark
过滤器,用于解析类似 LaTeX 的 Ruby 符号并将其转换为 HTML 元素。您可以通过将 pulldown-cmark-filter
添加到 Cargo.toml
中的功能来使用此过滤器。
[dependencies]
japanese-ruby-filter = { version = "0.1.0", features = ["pulldown-cmark-filter"] }
以下是一个示例代码
use pulldown_cmark::{Parser, Event, Tag};
use japanese_ruby_filter::pulldown_cmark_filter::RubyFilter;
let s = "\\ruby{漢字}{かん|じ}";
let mut iter = RubyFilter::new(Parser::new(s));
assert_eq!(iter.next(), Some(Event::Start(Tag::Paragraph)));
assert_eq!(iter.next(), Some(Event::Html("<ruby>漢<rp>(</rp><rt>かん</rt><rp>)</rp>字<rp>(</rp><rt>じ</rt><rp>)</rp></ruby>".into())));
assert_eq!(iter.next(), Some(Event::End(Tag::Paragraph)));
assert_eq!(iter.next(), None);
依赖关系
~0.3–1MB
~22K SLoC