Open anjia opened 6 years ago
cssparser 是 CSS Syntax Module Level 3 的 Rust 实现
一切都基于Parser
对象,输入是&str
。如果你有来自文件/网络/或其它地方的字节,并且想要支持 UTF-8 以外的字符编码,可参阅stylesheet_encoding
函数,它可以与 rust-encoding 和 encoding-rs 一起使用。
解析函数的约定
input: &mut cssparser::Parser
参数Result<_, ()>
Ok(_)
时,函数必须已经完全消耗了表示已解析值的输入Err(())
时,可能已经消耗了一定数量的输入因此,在调用另一个解析函数的时候:
Err(())
值必须冒泡。这通过尾部调用的定义发生,可以使用try!
宏Parser::try
包着。try
采用闭包,接受一个Parser
,返回一个Result
,调用它一次,并返回自己相同的结果。如果结果是Err
,则将输入内的位置恢复为在调用闭包之前保存的位置模块 | 说明 |
---|---|
Delimiter | 定界符常量,分别是 ! , { ; 以及空字符 等5类 |
color | |
cow_rc_str | |
cssparser | |
from_bytes | |
macros | |
nth | |
parser | |
rules_and_declarations | |
serializer | |
tokenizer | |
unicode_range | https://drafts.csswg.org/css-syntax/#urange |
结构 | 说明 |
---|---|
BasicParseError | 基本的解析错误,可由内置解析触发 |
CowRcStr | 共享(堆分配和引用计数)或 borrowed 字符串 |
CssStringWriter | fmt::Write 适配器,把文本转换为双引号的 CSS 字符串。引号不包括在内 |
DeclarationListParser | 提供声明列表解析的迭代器 |
Delimiters | 一个字符集,和Parser::parse_until* 方法一起使用 |
ParseError | 可扩展解析错误,客户端解析时可能会遇到 |
Parser | 一个 CSS 解析器,输入是$str ,产生Token ,跟踪嵌套的 block 和函数 |
ParserInput | 解析器的输入 |
ParserState | Parser 的内部状态(包括输入的位置),从Parser::position 方法获得 |
RGBA | |
RuleListParser | 给规则列表解析提供的迭代器 |
SourceLocation | 行号和列号 |
SourcePosition | 下表 |
TokenSerializationType | 一类令牌,看needs_separator_when_before 方法 |
UnicodeRange | 代码点的连续的范围 |
style
style::traversal::recalc_style_at
style::traversal::recalc_style_at
函数,计算单个节点的样式style::traversal
模块,遍历DOM树style
是个 Crate