| Crates.io | azul-simplecss |
| lib.rs | azul-simplecss |
| version | 0.1.1 |
| created_at | 2019-07-07 21:03:04.987815+00 |
| updated_at | 2019-07-07 21:11:31.666329+00 |
| description | A very simple CSS 2.1 tokenizer. |
| homepage | |
| repository | https://github.com/RazrFalcon/simplecss |
| max_upload_size | |
| id | 147409 |
| size | 63,590 |
Fork of https://github.com/RazrFalcon/simplecss (because lack of maintainer). Added @rules + better parsing on top of original parser.
----aa
A very simple streaming parser/tokenizer for CSS 2.1 data format without heap allocations.
Since it's very simple we will start with limitations:
At-rules are not supported.
@import, @media, etc. will lead to a parsing error.
The ident token must be ASCII only.
CSS like #аттр { имя:значение } will lead to a parsing error.
Property values are not parsed.
In CSS like * { width: 5px } you will get width property with 5px values as a string.
Attribute selector rule is not parsed.
[foo~="warning"] will be parsed as Token::AttributeSelector("foo~=\"warning\"").
There are no data validation.
All comments will be ignored.
They didn't have it's own Token item.
CDO/CDC comments are not supported.
Parser is case sensitive. All keywords should be lowercase.
Unicode escape, like \26, is not supported.
No spec-defined error handling.
If something will go wrong you will get an error. Parser will not recover an invalid input. Details.
simplecss can be useful for parsing a very simple or predefined CSS.
It's tiny, dependency free and pretty fast.
Simple
* { color : red }
| | | ||
| | | |+- Token::EndOfStream
| | | +- Token::BlockEnd
| | +- Token::Declaration("color", "red")
| +- Token::BlockStart
+- Token::UniversalSelector
Complex
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")