morse_code_parser 0.1.0

A Morse code parser and decoder implemented in Rust.
Documentation
# Morse Code Parser


**Morse Code Parser** — це інструмент для парсингу та декодування тексту, закодованого в код Морзе, реалізований на мові програмування Rust. 

## Опис проєкту


Цей проєкт був створений як демонстрація можливостей роботи з текстовими граматиками та парсингом у Rust за допомогою бібліотеки [Pest](https://pest.rs). Програма дозволяє:
- Парсити код Морзе: визначати його структуру та компоненти.
- Декодувати код Морзе у зрозумілий текст.
- Валідувати введення: перевіряти, чи є вхідні дані допустимими для парсера.

## Основні функції


1. **Парсинг коду Морзе**: Вхідний рядок парситься відповідно до граматики, визначеної у файлі `grammar.pest`. Результат — структура, яка відображає компоненти коду Морзе.
2. **Декодування**: Перетворює закодований текст у зрозумілий людський текст (A-Z, 0-9). Невідомі символи замінюються на `?`.
3. **Валідація**: Перевіряє введення на наявність некоректних символів, таких як літери або спеціальні символи.

## Як запустити


1. Клонувати репозиторій:
```bash
git clone https://github.com/yourusername/morse_code_parser.git

cd morse_code_parser

```

2. Зібрати проєкт:
```bash
cargo build

```

3. Запустити програму:
```bash
cargo run

```

4. Запустити тести:
```bash
cargo test

```

## Приклади використання


### Парсинг та декодування

```rust
use morse_code_parser::{parse_morse_code, decode_morse};

fn main() {
    let morse_input = "... --- ... / - .... .. ... / .. ... / - . ... -";
    
    // Парсинг
    parse_morse_code(morse_input).unwrap();
    
    // Декодування
    let decoded = decode_morse(morse_input).unwrap();
    println!("Decoded text: {}", decoded);
}
```

Результат:
```bash
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 ~ (" / " ~ morse_word)* }
```

## Тестове покриття


Проєкт має понад **50 тестів**, які перевіряють:
- Валідність введення.
- Парсинг різних комбінацій символів.
- Декодування з відомими та невідомими символами.
- Крайні випадки, включаючи пусті рядки та довгі текстові блоки.

Для запуску тестів:
```bash
cargo test
```
## Посилання на документацію та crates.io


- **Документація (docs.rs)**: [Переглянути документацію]https://docs.rs/morse_code_parser
- **Crates.io**: [Сторінка проєкту]https://crates.io/crates/morse_code_parser
```