Crate cssparser [−] [src]
Implementation of CSS Syntax Module Level 3 for Rust.
Input
Everything is based on Parser
objects, which borrow a &str
input.
If you have bytes (from a file, the network, or something)
and want to support character encodings other than UTF-8,
see the stylesheet_encoding
function,
which can be used together with rust-encoding or encoding-rs.
Conventions for parsing functions
- Take (at least) a
input: &mut cssparser::Parser
parameter - Return
Result<_, ()>
- When returning
Ok(_)
, the function must have consumed exactly the amount of input that represents the parsed value. - When returning
Err(())
, any amount of input may have been consumed.
As a consequence, when calling another parsing function, either:
- Any
Err(())
return value must be propagated. This happens by definition for tail calls, and can otherwise be done with thetry!
macro. - Or the call must be wrapped in a
Parser::try
call.try
takes a closure that takes aParser
and returns aResult
, calls it once, and returns itself that same result. If the result isErr
, it restores the position inside the input to the one saved before calling the closure.
Examples:
// 'none' | <image> fn parse_background_image(context: &ParserContext, input: &mut Parser) -> Result<Option<Image>, ()> { if input.try(|input| input.expect_ident_matching("none")).is_ok() { Ok(None) } else { Image::parse(context, input).map(Some) // tail call } }
// [ <length> | <percentage> ] [ <length> | <percentage> ]? fn parse_border_spacing(_context: &ParserContext, input: &mut Parser) -> Result<(LengthOrPercentage, LengthOrPercentage), ()> { let first = try!(LengthOrPercentage::parse); let second = input.try(LengthOrPercentage::parse).unwrap_or(first); (first, second) }
Reexports
pub use cssparser_macros::*; |
Modules
Delimiter |
|
Macros
ascii_case_insensitive_phf_map |
Define a function |
match_ignore_ascii_case |
Expands to a |
Structs
CowRcStr |
A string that is either shared (heap-allocated and reference-counted) or borrowed. |
CssStringWriter |
A |
DeclarationListParser |
Provides an iterator for declaration list parsing. |
Delimiters |
A set of characters, to be used with the |
Parser |
A CSS parser that borrows its |
ParserInput |
The owned input for a parser. |
ParserState |
A capture of the internal state of a |
PreciseParseError |
A parse error with details of where it occured |
RGBA |
A color with red, green, blue, and alpha components, in a byte each. |
RuleListParser |
Provides an iterator for rule list parsing. |
SourceLocation |
The line and column number for a given position within the input. |
SourcePosition |
A position from the start of the input, counted in UTF-8 bytes. |
TokenSerializationType |
A category of token. See the |
UnicodeRange |
One contiguous range of code points. |
Enums
AtRuleType |
The return value for |
BasicParseError |
The funamental parsing errors that can be triggered by built-in parsing routines. |
Color |
A |
ParseError |
Extensible parse errors that can be encountered by client parsing implementations. |
Token |
One of the pieces the CSS input is broken into. |
Traits
AtRuleParser |
A trait to provide various parsing of at-rules. |
DeclarationParser |
A trait to provide various parsing of declaration values. |
EncodingSupport |
Abstraction for avoiding a dependency from cssparser to an encoding library |
QualifiedRuleParser |
A trait to provide various parsing of qualified rules. |
ToCss |
Trait for things the can serialize themselves in CSS syntax. |
Functions
parse_color_keyword |
Return the named color with the given name. |
parse_important |
Parse |
parse_nth |
Parse the An+B notation, as found in the |
parse_one_declaration |
Parse a single declaration, such as an |
parse_one_rule |
Parse a single rule, such as for CSSOM’s |
serialize_identifier |
Write a CSS identifier, escaping characters as necessary. |
serialize_string |
Write a double-quoted CSS string token, escaping content as necessary. |
stylesheet_encoding |
Determine the character encoding of a CSS stylesheet. |