Crates.io | morse_code_parser |
lib.rs | morse_code_parser |
version | 0.1.2 |
source | src |
created_at | 2024-11-20 14:39:25.380726 |
updated_at | 2024-11-23 00:10:48.313826 |
description | A Morse code parser and decoder implemented in Rust. |
homepage | https://github.com/eyexzy/morse_code_parser |
repository | https://https://github.com/eyexzy/morse_code_parser |
max_upload_size | |
id | 1454840 |
size | 30,943 |
Morse Code Parser — це бібліотека та CLI-інструмент для парсингу, валідації та декодування тексту, закодованого у код Морзе. Реалізовано на мові програмування Rust із використанням граматики Pest.
Проєкт демонструє створення граматик для парсингу текстових форматів та реалізацію повного циклу обробки даних:
grammar.pest
.git clone https://github.com/eyexzy/morse_code_parser.git
cd morse_code_parser
cargo build
cargo run -- "... --- ..."
cargo test
use morse_code_parser::{parse_morse_code, decode_morse, validate_input};
fn main() {
let input = "... --- ... / - .... .. ... / .. ... / - . ... -";
// Перевірка валідності
if validate_input(input) {
println!("Valid Morse code input!");
}
// Парсинг
parse_morse_code(input).expect("Failed to parse Morse code!");
// Декодування
let decoded = decode_morse(input).expect("Failed to decode Morse code!");
println!("Decoded text: {}", decoded);
}
Valid Morse code input!
Parsed structure: ...
Decoded text: SOS THIS IS TEST
Файл grammar.pest
:
WHITESPACE = _{ " " | "\t" | "\n" }
morse_char = { "." | "-" }
morse_letter = @{ morse_char+ }
morse_word = { morse_letter ~ (" " ~ morse_letter)* }
morse_code = { morse_word ~ (WHITESPACE* ~ "/" ~ WHITESPACE* ~ morse_word)* }
morse_code_with_spaces = { WHITESPACE* ~ morse_code ~ WHITESPACE* }
Проєкт має понад 50 тестів, що перевіряють:
Для запуску тестів:
cargo test
Проєкт доступний під ліцензією MIT. Деталі можна знайти у файлі LICENSE.