| Crates.io | address_book |
| lib.rs | address_book |
| version | 0.3.0 |
| created_at | 2024-11-13 23:28:07.167118+00 |
| updated_at | 2024-11-21 16:58:51.208356+00 |
| 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+ }