css-parser-project 0.3.0

This is a parser, developed on Rust, that will take CSS code and parse it, based on adjusted rules.
Documentation
//! # CSS Parser Project
//!
//! Парсер CSS для розбору CSS коду, що дозволяє парсити CSS-блоки, селектори,
//! властивості та їхні значення. Написано на основі `pest` і може використовуватися
//! для обробки основних CSS правил, таких як селектори, властивості, розміри, кольори тощо.
//!
//! ## Правила граматики та опис
//!
//! - **css_block**: Основна структура для CSS-блоку, що складається з селектора і властивостей.
//! - **selector**: Селектор, що може бути ідентифікатором класу, ID або тегом.
//! - **property**: Опис властивості CSS, що включає ідентифікатор та значення.
//! - **properties**: Список властивостей, що застосовуються до CSS-селектора.
//! - **value**: Значення CSS властивості, що може бути кольором, розміром або ідентифікатором.
//! - **dimension**: Розмір у CSS, наприклад, `10px`, `2em`.
//! - **color**: Стандартні кольори та шістнадцяткові значення кольору, як `#ff0000`.
//! - **identifier**: Ідентифікатор, що складається з алфавітних символів та цифр.
//!
//! ## Використання
//!
//! Ця програма дозволяє легко розпізнавати основні елементи CSS синтаксису і може бути
//! використана для створення власних CSS-аналізаторів, парсингу CSS коду та інше.

/// CSS-блок: селектор і властивості, обгорнуті у фігурні дужки.
css_block = { selector ~ WHITESPACE* ~ "{" ~ WHITESPACE* ~ properties ~ WHITESPACE* ~ "}" }

/// Селектор CSS, що може представляти клас, ID або тег.
selector = { ("#" ~ ASCII_ALPHANUMERIC+ | "." ~ ASCII_ALPHANUMERIC+ | ASCII_ALPHANUMERIC+) }

/// CSS-властивість, що складається з ідентифікатора та значення.
property = { identifier ~ ": " ~ value ~ ";" }

/// Список властивостей для CSS-селектора.
properties = { property+ }

/// Значення CSS-властивості, яке може бути кольором, розміром або ідентифікатором.
value = { color | dimension | identifier }

/// Вимірювання розміру, наприклад, `10px`, `2em`.
dimension = { DIGIT+ ~ ("." ~ DIGIT+)? ~ (("px" | "em" | "%" | "pt")) }

/// Цифра від 0 до 9.
DIGIT = { '0'..'9' }

/// Шістнадцятковий колір, наприклад, `#ff0000`.
hex_color = { "#" ~ hex_digit ~ hex_digit ~ hex_digit ~ hex_digit ~ hex_digit ~ hex_digit }

/// Шістнадцяткова цифра (0-9, a-f).
hex_digit = { "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "a" | "b" | "c" | "d" | "e" | "f" }

/// Стандартний колір або шістнадцяткове значення кольору.
color = { "blue" | "red" | "green" | "yellow" | "black" | "white" | hex_color }

/// Ідентифікатор, що складається з алфавітних символів та цифр.
identifier = { ASCII_ALPHANUMERIC+ }

/// Пробіл або символ нового рядка для розділення елементів.
WHITESPACE = _{ " " | "\t" | "\n" | "\r" }