#tokenizer #xml #iterator #no-std #memchr #token

xtoken

基于迭代器的no_std XML标记化程序,使用memchr

2个版本

0.1.1 2023年7月13日
0.1.0 2023年7月13日

#2182 in 算法

MIT/Apache

13KB
257

xtoken

Iterator基于的no_std XML标记化程序,使用memchr.

设计目标

  • 在字节切片上操作
  • 最小验证
  • 支持内联DTD声明
  • 将整个输入划分为非空区间

示例

use xtoken::{Token, Tokenizer};

let tokens = Tokenizer::new(b"<x>Hello World!</x>").collect::<Vec<_>>();
assert_eq!(&tokens, &[
    Token::Element(b"<x>"),
    Token::Span(b"Hello World!"),
    Token::ElementEnd(b"</x>"),
]);

let tokens = Tokenizer::new(b"<!DOCTYPE xml>").collect::<Vec<_>>();
assert_eq!(&tokens, &[
    Token::Decl(b"<!DOCTYPE xml>")
]);

lib.rs:

xtoken

Iterator基于的no_std XML标记化程序,使用memchr.

设计目标

  • 在字节切片上操作
  • 最小验证
  • 支持内联DTD声明
  • 将整个输入划分为非空区间

示例

use xtoken::{Token, Tokenizer};

let tokens = Tokenizer::new(b"<x>Hello World!</x>").collect::<Vec<_>>();
assert_eq!(&tokens, &[
    Token::Element(b"<x>"),
    Token::Span(b"Hello World!"),
    Token::ElementEnd(b"</x>"),
]);

let tokens = Tokenizer::new(b"<!DOCTYPE xml>").collect::<Vec<_>>();
assert_eq!(&tokens, &[
    Token::Decl(b"<!DOCTYPE xml>")
]);

依赖

~170–315KB