Crates.io | address_book |
lib.rs | address_book |
version | 0.3.0 |
source | src |
created_at | 2024-11-13 23:28:07.167118 |
updated_at | 2024-11-21 16:58:51.208356 |
description | Інструмент командного рядка для парсингу телефонних номерів, ідентифікаторів, дат та неправильних полів за допомогою Pest у Rust. |
homepage | |
repository | |
max_upload_size | |
id | 1447222 |
size | 29,871 |
Link: https://crates.io/crates/address_book Docs: https://docs.rs/address_book/0.2.0/address_book/ #Тема: address book - адресна книга
Цей проєкт надає інструмент командного рядка для парсингу серії телефонних номерів, ідентифікаторів, дат і неправильних полів. Інструмент створено за допомогою мови програмування Rust і бібліотеки парсингу pest
. Вхідні дані можуть містити телефонні номери у форматі XXX-XXX-XXXX
, ідентифікатори з мінімум 5 алфавітно-цифрових символів і дати у форматі YYYY-MM-DD
, а також можливі неправильні поля. Парсер також підтримує коментарі, які ігноруються під час парсингу.
Процес парсингу передбачає обробку рядка даних, що містить поля, розділені комами. Кожне поле може бути одним з наступних:
XXX-XXX-XXXX
(3 цифри, дефіс, 3 цифри, дефіс, 4 цифри).YYYY-MM-DD
.#
, вважаються коментарями і ігноруються під час парсингу.Ви можете використовувати інструмент командного рядка для парсингу файлу, що містить серію телефонних номерів, ідентифікаторів і дат, а також для обробки неправильних полів і коментарів.
Граматика, що використовується для парсингу полів, складається з наступних правил:
fields
: Послідовність полів, розділених комами, з можливими пробілами та коментарями.
fields = {
(field | invalid_field) ~
(whitespace? ~ "," ~ whitespace? ~ (field | invalid_field))*
~ (whitespace? ~ comment)?
}
field
: Поле може бути номером телефону, ідентифікатором або датою.
field = { phone_number | identifier | date }
phone_number
: Номер телефону у форматі XXX-XXX-XXXX
.
phone_number = { ASCII_DIGIT{3} ~ "-" ~ ASCII_DIGIT{3} ~ "-" ~ ASCII_DIGIT{4} }
identifier
: Ідентифікатор, що складається мінімум з 5 алфавітно-цифрових символів.
identifier = { ASCII_ALPHANUMERIC{5,} }
date
: Дата у форматі YYYY-MM-DD
.
date = { ASCII_DIGIT{4} ~ "-" ~ ASCII_DIGIT{2} ~ "-" ~ ASCII_DIGIT{2} }
invalid_field
: Невірне поле, яке не відповідає жодному з вищезгаданих форматів.
invalid_field = { (!phone_number ~ !identifier ~ !date ~ (!"," ~ ANY)+) }
comment
: Коментар, що починається з #
і ігнорується під час парсингу.
comment = { "#" ~ (!"\n" ~ ANY)* }
url
: URL, що починається з http:// та містить домен і шлях, наприклад, http://example.com/path/to/resource.
url = { "http" ~ "://" ~ (ASCII_ALPHANUMERIC+ ~ "." ~ ASCII_ALPHANUMERIC+)+ ~ ("/" ~ ASCII_ALPHANUMERIC*)* }
email
: Адреса електронної пошти у форматі user@example.com.
email = { ASCII_ALPHANUMERIC+ ~ "@" ~ ASCII_ALPHANUMERIC+ ~ "." ~ ASCII_ALPHANUMERIC+ }