Skip to main content

media_query_parse/
lib.rs

1//! A pure-Rust parser for the CSS Media Queries grammar.
2//!
3//! Tokenizer (CSS Syntax Level 3) plus a Media Queries Level 4
4//! grammar/AST/parser, including the `<mf-range>` comparison syntax.
5//! See `plan/` for the roadmap.
6//!
7//! # Example
8//!
9//! ```
10//! use media_query_parse::{parse_media_query, parse_media_query_list};
11//!
12//! // A single, syntactically valid media query.
13//! assert!(parse_media_query("screen and (min-width: 400px)").is_ok());
14//!
15//! // An invalid media query reports a `ParseError` instead of panicking:
16//! // `only` requires a following `<media-type>`, which is missing here.
17//! assert!(parse_media_query("only").is_err());
18//!
19//! // `parse_media_query_list` splits a comma-separated list and parses
20//! // each entry independently, returning one `Result` per entry.
21//! let results = parse_media_query_list("screen, only");
22//! assert!(results[0].is_ok());
23//! assert!(results[1].is_err());
24//! ```
25
26#![deny(missing_docs)]
27
28pub mod ast;
29pub mod parser;
30pub mod tokenizer;
31
32pub use ast::{
33    GeneralEnclosed, MediaCondition, MediaConditionWithoutOr, MediaFeature, MediaInParens,
34    MediaModifier, MediaQuery, MediaQueryList, MediaType, MfComparison, MfName, MfRange,
35    MfRangeDirection, MfValue,
36};
37pub use parser::{ParseError, parse_media_query, parse_media_query_list};