2个版本
使用旧的Rust 2015
0.1.1 | 2019年7月7日 |
---|---|
0.1.0 | 2019年7月7日 |
#29 in #css-parser
128 每月下载量
用于 6 个crate(通过 azul-css-parser)
30KB
552 行
azul-simplecss
是 https://github.com/RazrFalcon/simplecss 的分支(因为缺乏维护者)。在原始解析器的基础上添加了 @rules
和更好的解析。
----aa
一个非常简单的CSS 2.1数据格式无堆分配的流式解析器/分词器。
由于它非常简单,所以我们从限制开始
限制
-
@规则 不受支持。
@import
、@media
等。会导致解析错误。 -
标识符令牌必须是ASCII字符。
CSS 类似于
#аттр { имя:значение }
会导致解析错误。 -
属性值不会被解析。
在CSS类似
* { width: 5px }
中,您将得到具有5px
值作为字符串的width
属性。 -
属性选择器规则不会被解析。
[foo~="warning"]
将解析为Token::AttributeSelector("foo~=\"warning\"")
。 -
没有数据验证。
- 伪类令牌可以包含任何文本,语言伪类可以包含任何文本或甚至没有。
- 声明可以包含任何类型的名称和值。
-
所有注释都将被忽略。
它们没有自己的
Token
项目。 -
CDO/CDC 注释不受支持。
-
解析器区分大小写。所有关键字都应该小写。
-
不支持 Unicode 转义,例如
\26
。 -
没有规范定义的错误处理。
如果出现问题,您将收到错误。解析器不会恢复无效的输入。 详细信息。
使用场景
simplecss
可以用于解析非常简单或预定义的 CSS。
它体积小,无依赖,且运行速度快。
示例
简单
* { color : red }
| | | ||
| | | |+- Token::EndOfStream
| | | +- Token::BlockEnd
| | +- Token::Declaration("color", "red")
| +- Token::BlockStart
+- Token::UniversalSelector
复杂
div#x:first-letter em[id] + .hh1 { color : red }
| | | || | | | | | ||
| | | || | | | | | |+- Token::EndOfStream
| | | || | | | | | +- Token::BlockEnd
| | | || | | | | +- Token::Declaration("color", "red")
| | | || | | | +- Token::BlockStart
| | | || | | +- Token::ClassSelector("hh1")
| | | || | +- Token::Combinator(Combinator::Plus)
| | | || +- Token::AttributeSelector("id")
| | | |+- Token::TypeSelector("em")
| | | +- Token::Combinator(Combinator::Space)
| | +- Token::PseudoClass("first-letter")
| +- Token::IdSelector("x")
+- Token::TypeSelector("div")