[−][src]Crate cssparser
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 the?
operator. - 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_parse(|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 = LengthOrPercentage::parse?; let second = input.try_parse(LengthOrPercentage::parse).unwrap_or(first); (first, second) }
Modules
Delimiter |
|
Macros
_cssparser_internal_max_len | |
ascii_case_insensitive_phf_map | Define a function |
match_ignore_ascii_case | Expands to a |
Structs
BasicParseError | The funamental parsing errors that can be triggered by built-in parsing routines. |
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 |
ParseError | Extensible parse errors that can be encountered by client parsing implementations. |
Parser | A CSS parser that borrows its |
ParserInput | The owned input for a parser. |
ParserState | A capture of the internal state of a |
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
AngleOrNumber | Either an angle or a number. |
AtRuleType | The return value for |
BasicParseErrorKind | Details about a |
Color | A |
NumberOrPercentage | Either a number or a percentage. |
ParseErrorKind | Details of a |
Token | One of the pieces the CSS input is broken into. |
Traits
AtRuleParser | A trait to provide various parsing of at-rules. |
ColorComponentParser | A trait that can be used to hook into how |
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_name | Write a CSS name, like a custom property name. |
serialize_string | Write a double-quoted CSS string token, escaping content as necessary. |
stylesheet_encoding | Determine the character encoding of a CSS stylesheet. |