Donner SVG main
0.8.0 ยท 382bd0190.8.0 main
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::css::parser::RuleParser Class Reference

Rule-related parsing routines, including parsing individual rules, lists of rules, and stylesheets. More...

#include "donner/css/parser/RuleParser.h"

Classes

struct  SecurityStats
 Parsing work observed before a rule list finishes or reaches a limit. More...

Static Public Member Functions

static std::vector< Rule > ParseStylesheet (std::string_view str, SecurityStats *securityStats=nullptr)
 Parse a CSS stylesheet into a list of rules, per https://www.w3.org/TR/css-syntax-3/#parse-stylesheet.
static std::vector< Rule > ParseListOfRules (std::string_view str, SecurityStats *securityStats=nullptr)
 Parse a list of rules, per https://www.w3.org/TR/css-syntax-3/#parse-list-of-rules.
static std::optional< Rule > ParseRule (std::string_view str)
 Parse a rule, per https://www.w3.org/TR/css-syntax-3/#parse-rule.

Static Public Attributes

static constexpr std::size_t kMaximumRules = 4096
 Maximum rule-list entries emitted from one stylesheet or rule list.
static constexpr std::size_t kMaximumComponentValues = 64 * 1024
 Maximum component values accepted while parsing one rule list.

Detailed Description

Rule-related parsing routines, including parsing individual rules, lists of rules, and stylesheets.


Class Documentation

◆ donner::css::parser::RuleParser::SecurityStats

struct donner::css::parser::RuleParser::SecurityStats

Parsing work observed before a rule list finishes or reaches a limit.

Class Members
size_t componentValues = 0 Component values consumed so far.
bool rejected = false Whether a parsing limit rejected input.
size_t rules = 0 Rule-list entries emitted, including invalid placeholders.

Member Function Documentation

◆ ParseListOfRules()

std::vector< Rule > donner::css::parser::RuleParser::ParseListOfRules ( std::string_view str,
SecurityStats * securityStats = nullptr )
static

Parse a list of rules, per https://www.w3.org/TR/css-syntax-3/#parse-list-of-rules.

Parameters
strInput list of rules string.
securityStatsOptional destination for bounded parsing counters.
Returns
Parsed list of rules.

◆ ParseRule()

std::optional< Rule > donner::css::parser::RuleParser::ParseRule ( std::string_view str)
static

Parse a rule, per https://www.w3.org/TR/css-syntax-3/#parse-rule.

Parameters
strInput rule string.
Returns
Parsed rule, or std::nullopt if there was no rule.

◆ ParseStylesheet()

std::vector< Rule > donner::css::parser::RuleParser::ParseStylesheet ( std::string_view str,
SecurityStats * securityStats = nullptr )
static

Parse a CSS stylesheet into a list of rules, per https://www.w3.org/TR/css-syntax-3/#parse-stylesheet.

NOTE: This does not parse selectors, in most cases you should use StylesheetParser instead which handles selectors and returns a Stylesheet object to match against.

Parameters
strInput stylesheet string.
securityStatsOptional destination for bounded parsing counters.
Returns
Parsed stylesheet as a list of rules.

The documentation for this class was generated from the following file: