diff --git a/Development-da.md b/Development-da.md new file mode 100644 index 0000000..735c36e --- /dev/null +++ b/Development-da.md @@ -0,0 +1,47 @@ +# Udvikling + +🌐 [English](Development) · **Dansk** · [Bahasa Melayu](Development-ms) + +Sæt projektet op først ([Installation](Install-da)). Udvidelsen `dev` installerer pytest, ruff, mypy og import-linter. + +## Kør testene + +```bash +python -m pytest +``` + +## Kør de kontroller, CI kører + +```bash +python -m ruff check . +python -m mypy +lint-imports +``` + +## Byg kildedokumentationen + +```bash +doxygen Doxyfile +``` + +Åbn `build/html/index.html`. Installér Doxygen fra [doxygen.nl](https://www.doxygen.nl/) eller din pakkehåndtering. + +## Sådan virker exception handling + +`spell_word` (i `domain/spelling.py`) slår hvert bogstav op i ordbogen i en `try`-blok. Et tegn, der ikke findes i alfabetet, giver en `KeyError`, som `except`-blokken gør til en `InvalidWordError`. `generate_phonetic` (i `application/phonetic.py`) fanger fejlen, beder brugeren skrive kun bogstaver og spørger igen, indtil ordet er gyldigt. + +## Kodens opbygning + +| Mappe | Indhold | +| --- | --- | +| `src/nato_phonetic_alphabet/domain/` | Staveregelen, uden input og output | +| `src/nato_phonetic_alphabet/application/` | Use casen og dens porte | +| `src/nato_phonetic_alphabet/adapters/` | CSV-læseren og konsollen | +| `src/nato_phonetic_alphabet/constants.py` | Alle programmets konstanter | +| `tests/` | pytest-tests, som spejler `src/` | + +Afhængigheder peger indad: adapters kender applikationen, applikationen kender domænet. import-linter håndhæver det. + +## Pull requests + +Én gren og én pull request pr. milepæl; CI skal være grøn. Projektet følger SQA- og QC-frameworket i `framework/`; se `docs/` for planen og review-optegnelserne. diff --git a/Development-ms.md b/Development-ms.md new file mode 100644 index 0000000..abc50f1 --- /dev/null +++ b/Development-ms.md @@ -0,0 +1,47 @@ +# Pembangunan + +🌐 [English](Development) · [Dansk](Development-da) · **Bahasa Melayu** + +Sediakan projek dahulu ([Pemasangan](Install-ms)). Pilihan tambahan `dev` memasang pytest, ruff, mypy dan import-linter. + +## Jalankan ujian + +```bash +python -m pytest +``` + +## Jalankan semakan yang dijalankan oleh CI + +```bash +python -m ruff check . +python -m mypy +lint-imports +``` + +## Bina dokumentasi sumber + +```bash +doxygen Doxyfile +``` + +Buka `build/html/index.html`. Pasang Doxygen dari [doxygen.nl](https://www.doxygen.nl/) atau pengurus pakej anda. + +## Cara pengendalian pengecualian berfungsi + +`spell_word` (dalam `domain/spelling.py`) mencari setiap huruf dalam kamus di dalam blok `try`. Aksara yang tiada dalam abjad menimbulkan `KeyError`, yang ditukar oleh blok `except` kepada `InvalidWordError`. `generate_phonetic` (dalam `application/phonetic.py`) menangkap ralat itu, meminta pengguna memasukkan huruf sahaja dan bertanya semula sehingga perkataan itu sah. + +## Susun atur kod + +| Folder | Kandungan | +| --- | --- | +| `src/nato_phonetic_alphabet/domain/` | Peraturan ejaan, tanpa input dan output | +| `src/nato_phonetic_alphabet/application/` | Kes guna dan portnya | +| `src/nato_phonetic_alphabet/adapters/` | Pembaca CSV dan konsol | +| `src/nato_phonetic_alphabet/constants.py` | Semua pemalar program | +| `tests/` | Ujian pytest, mencerminkan `src/` | + +Kebergantungan menghala ke dalam: adapter mengenali aplikasi, aplikasi mengenali domain. import-linter menguatkuasakannya. + +## Pull request + +Satu cabang dan satu pull request bagi setiap milestone; CI mesti hijau. Projek ini mengikut rangka kerja SQA dan QC dalam `framework/`; lihat `docs/` untuk pelan dan rekod semakan. diff --git a/Development.md b/Development.md new file mode 100644 index 0000000..93209cc --- /dev/null +++ b/Development.md @@ -0,0 +1,47 @@ +# Development + +🌐 **English** · [Dansk](Development-da) · [Bahasa Melayu](Development-ms) + +Set up the project first ([Install](Install)). The `dev` extra installs pytest, ruff, mypy and import-linter. + +## Run the tests + +```bash +python -m pytest +``` + +## Run the checks that CI runs + +```bash +python -m ruff check . +python -m mypy +lint-imports +``` + +## Build the source documentation + +```bash +doxygen Doxyfile +``` + +Open `build/html/index.html`. Install Doxygen from [doxygen.nl](https://www.doxygen.nl/) or your package manager. + +## How the exception handling works + +`spell_word` (in `domain/spelling.py`) looks every letter up in the dictionary inside a `try` block. A character that is not in the alphabet raises a `KeyError`, which the `except` block turns into an `InvalidWordError`. `generate_phonetic` (in `application/phonetic.py`) catches that error, tells the user to enter letters only and asks again until the word is valid. + +## Code layout + +| Folder | Content | +| --- | --- | +| `src/nato_phonetic_alphabet/domain/` | The spelling rule, with no input or output | +| `src/nato_phonetic_alphabet/application/` | The use case and its ports | +| `src/nato_phonetic_alphabet/adapters/` | The CSV reader and the console | +| `src/nato_phonetic_alphabet/constants.py` | Every literal of the program | +| `tests/` | pytest tests, mirroring `src/` | + +Dependencies point inward: adapters know the application, the application knows the domain. import-linter enforces it. + +## Pull requests + +One branch and one pull request per milestone; CI must be green. The project follows the SQA and QC framework in `framework/`; see `docs/` for the plan and the review records. diff --git a/Home-da.md b/Home-da.md new file mode 100644 index 0000000..b24e4bc --- /dev/null +++ b/Home-da.md @@ -0,0 +1,23 @@ +# Det fonetiske NATO-alfabet + +🌐 [English](Home) · **Dansk** · [Bahasa Melayu](Home-ms) + +Et konsolprogram, der staver et ord med det fonetiske NATO-alfabet. Det er opgaven fra dag 30 i Udemys "100 Days of Code: The Complete Python Pro Bootcamp" og viser exception handling: input, der ikke er et bogstav, fanges med `try` og `except` i stedet for at få programmet til at gå ned. Det kræver Python 3.13 eller nyere og har ingen runtime-afhængigheder. + +![Programmet staver ordet Hello](images/spell-word.png) + +| Side | Læs den, når du vil | +| --- | --- | +| [Installation](Install-da) | Oprette et lokalt `.venv` og installere projektet på Windows, Linux eller macOS | +| [Brug](Usage-da) | Køre programmet og læse dets output | +| [Udvikling](Development-da) | Køre testene og kontrollerne og bygge kildedokumentationen | + +## Hvem det er til + +- **Kursister**, der vil have en læsbar løsning med opgavens funktionsnavne (`load_nato_dict`, `generate_phonetic`) at sammenligne med deres egen. +- **GitHub-besøgende**, der vil se et lille, testet Python-projekt uden runtime-afhængigheder. + +## Links + +- [Repository](https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet) +- [Fejl og ønsker](https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/issues) diff --git a/Home-ms.md b/Home-ms.md new file mode 100644 index 0000000..e08ac37 --- /dev/null +++ b/Home-ms.md @@ -0,0 +1,23 @@ +# Abjad fonetik NATO + +🌐 [English](Home) · [Dansk](Home-da) · **Bahasa Melayu** + +Alat konsol yang mengeja satu perkataan dengan abjad fonetik NATO. Ia ialah tugasan hari ke-30 dalam "100 Days of Code: The Complete Python Pro Bootcamp" di Udemy dan menunjukkan pengendalian pengecualian (exception handling): input yang bukan huruf ditangkap dengan `try` dan `except` dan bukannya menyebabkan program terhenti. Ia memerlukan Python 3.13 atau lebih baharu dan tidak mempunyai kebergantungan masa jalan. + +![Alat mengeja perkataan Hello](images/spell-word.png) + +| Halaman | Baca apabila anda mahu | +| --- | --- | +| [Pemasangan](Install-ms) | Mencipta `.venv` setempat dan memasang projek di Windows, Linux atau macOS | +| [Penggunaan](Usage-ms) | Menjalankan program dan membaca outputnya | +| [Pembangunan](Development-ms) | Menjalankan ujian dan semakan serta membina dokumentasi sumber | + +## Untuk siapa + +- **Peserta kursus** yang mahukan penyelesaian yang mudah dibaca dengan nama fungsi tugasan (`load_nato_dict`, `generate_phonetic`) untuk dibandingkan dengan penyelesaian sendiri. +- **Pelawat GitHub** yang mahukan projek Python kecil yang diuji tanpa kebergantungan masa jalan. + +## Pautan + +- [Repositori](https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet) +- [Penjejak isu](https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet/issues) diff --git a/Install-da.md b/Install-da.md new file mode 100644 index 0000000..8b0538b --- /dev/null +++ b/Install-da.md @@ -0,0 +1,57 @@ +# Installation + +🌐 [English](Install) · **Dansk** · [Bahasa Melayu](Install-ms) + +## Det skal du bruge + +- Python 3.13 eller nyere med modulet `venv` +- Git + +## Trin + +Alle systemer gør de samme fire ting: klon repository'et, opret et virtuelt miljø kaldet `.venv`, opgradér pip og installér projektet. + +### Windows PowerShell + +```powershell +git clone https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet.git +cd 030-nato-phonetic-alphabet +py -3.13 -m venv .venv +.\.venv\Scripts\Activate.ps1 +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +Hvis PowerShell afviser aktiveringsscriptet, så kør først `Set-ExecutionPolicy -Scope Process RemoteSigned`. Det gælder kun for det vindue. + +### Linux Debian + +```bash +sudo apt install git python3 python3-venv +git clone https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet.git +cd 030-nato-phonetic-alphabet +python3 -m venv .venv +source .venv/bin/activate +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +### macOS + +```bash +brew install python@3.13 git +git clone https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet.git +cd 030-nato-phonetic-alphabet +python3.13 -m venv .venv +source .venv/bin/activate +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +## Tjek at det virker + +```bash +python -m nato_phonetic_alphabet +``` + +Skriv et ord. Du skal se dets kodeord. Næste side: [Brug](Usage-da). diff --git a/Install-ms.md b/Install-ms.md new file mode 100644 index 0000000..c8003cc --- /dev/null +++ b/Install-ms.md @@ -0,0 +1,57 @@ +# Pemasangan + +🌐 [English](Install) · [Dansk](Install-da) · **Bahasa Melayu** + +## Apa yang diperlukan + +- Python 3.13 atau lebih baharu dengan modul `venv` +- Git + +## Langkah + +Semua sistem melakukan empat perkara yang sama: klon repositori, cipta persekitaran maya bernama `.venv`, naik taraf pip dan pasang projek. + +### Windows PowerShell + +```powershell +git clone https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet.git +cd 030-nato-phonetic-alphabet +py -3.13 -m venv .venv +.\.venv\Scripts\Activate.ps1 +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +Jika PowerShell enggan menjalankan skrip pengaktifan, jalankan `Set-ExecutionPolicy -Scope Process RemoteSigned` dahulu. Ia hanya terpakai pada tetingkap itu. + +### Linux Debian + +```bash +sudo apt install git python3 python3-venv +git clone https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet.git +cd 030-nato-phonetic-alphabet +python3 -m venv .venv +source .venv/bin/activate +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +### macOS + +```bash +brew install python@3.13 git +git clone https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet.git +cd 030-nato-phonetic-alphabet +python3.13 -m venv .venv +source .venv/bin/activate +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +## Semak ia berfungsi + +```bash +python -m nato_phonetic_alphabet +``` + +Masukkan satu perkataan. Anda akan melihat kata kodnya. Seterusnya: [Penggunaan](Usage-ms). diff --git a/Install.md b/Install.md new file mode 100644 index 0000000..8932fd7 --- /dev/null +++ b/Install.md @@ -0,0 +1,57 @@ +# Install + +🌐 **English** · [Dansk](Install-da) · [Bahasa Melayu](Install-ms) + +## What you need + +- Python 3.13 or newer with the `venv` module +- Git + +## Steps + +Every system does the same four things: clone the repository, create a virtual environment called `.venv`, upgrade pip, install the project. + +### Windows PowerShell + +```powershell +git clone https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet.git +cd 030-nato-phonetic-alphabet +py -3.13 -m venv .venv +.\.venv\Scripts\Activate.ps1 +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +If PowerShell refuses to run the activation script, run `Set-ExecutionPolicy -Scope Process RemoteSigned` first. It only applies to that window. + +### Linux Debian + +```bash +sudo apt install git python3 python3-venv +git clone https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet.git +cd 030-nato-phonetic-alphabet +python3 -m venv .venv +source .venv/bin/activate +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +### macOS + +```bash +brew install python@3.13 git +git clone https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet.git +cd 030-nato-phonetic-alphabet +python3.13 -m venv .venv +source .venv/bin/activate +python -m pip install --upgrade pip +python -m pip install -e ".[dev]" +``` + +## Check that it works + +```bash +python -m nato_phonetic_alphabet +``` + +Enter a word. You should see its code words. Next: [Usage](Usage). diff --git a/Usage-da.md b/Usage-da.md new file mode 100644 index 0000000..3fdc97a --- /dev/null +++ b/Usage-da.md @@ -0,0 +1,31 @@ +# Brug + +🌐 [English](Usage) · **Dansk** · [Bahasa Melayu](Usage-ms) + +Aktivér det virtuelle miljø (se [Installation](Install-da)), og start programmet: + +```bash +python -m nato_phonetic_alphabet +``` + +Den installerede kommando gør det samme: + +```bash +nato-phonetic-alphabet +``` + +## Stav et ord + +Programmet spørger efter et ord og skriver NATO-kodeordet for hvert bogstav i rækkefølge. Store og små bogstaver giver samme resultat. + +![Programmet staver ordet Hello](images/spell-word.png) + +## Ugyldigt input + +Et ciffer, et mellemrum eller et tegn er ikke et bogstav. Programmet siger det og spørger igen. + +![Et ord med et ciffer afvises, derefter staves et gyldigt ord](images/retry-invalid.png) + +## Tryk Ctrl+C eller Ctrl+D + +Afslutter du inputtet (Ctrl+D på Linux og macOS, Ctrl+Z og Enter på Windows) eller trykker Ctrl+C, lukker programmet stille. diff --git a/Usage-ms.md b/Usage-ms.md new file mode 100644 index 0000000..48c746f --- /dev/null +++ b/Usage-ms.md @@ -0,0 +1,31 @@ +# Penggunaan + +🌐 [English](Usage) · [Dansk](Usage-da) · **Bahasa Melayu** + +Aktifkan persekitaran maya (lihat [Pemasangan](Install-ms)), kemudian mulakan program: + +```bash +python -m nato_phonetic_alphabet +``` + +Arahan yang dipasang melakukan perkara yang sama: + +```bash +nato-phonetic-alphabet +``` + +## Eja satu perkataan + +Program meminta satu perkataan dan mencetak kata kod NATO bagi setiap huruf mengikut urutan. Huruf besar dan huruf kecil memberi keputusan yang sama. + +![Alat mengeja perkataan Hello](images/spell-word.png) + +## Input tidak sah + +Angka, ruang atau tanda baca bukan huruf. Program memberitahu perkara itu dan bertanya semula. + +![Perkataan dengan angka ditolak, kemudian perkataan yang sah dieja](images/retry-invalid.png) + +## Tekan Ctrl+C atau Ctrl+D + +Menamatkan input (Ctrl+D di Linux dan macOS, Ctrl+Z kemudian Enter di Windows) atau menekan Ctrl+C menutup program dengan senyap. diff --git a/Usage.md b/Usage.md new file mode 100644 index 0000000..7e696f1 --- /dev/null +++ b/Usage.md @@ -0,0 +1,31 @@ +# Usage + +🌐 **English** · [Dansk](Usage-da) · [Bahasa Melayu](Usage-ms) + +Activate the virtual environment (see [Install](Install)), then start the program: + +```bash +python -m nato_phonetic_alphabet +``` + +The installed command does the same: + +```bash +nato-phonetic-alphabet +``` + +## Spell a word + +The program asks for a word and prints the NATO code word of each letter, in order. Upper and lower case give the same result. + +![The tool spelling the word Hello](images/spell-word.png) + +## Invalid input + +A digit, a space or a punctuation mark is not a letter. The program says so and asks again. + +![A word with a digit is rejected, then a valid word is spelled](images/retry-invalid.png) + +## Press Ctrl+C or Ctrl+D + +Ending the input (Ctrl+D on Linux and macOS, Ctrl+Z then Enter on Windows) or pressing Ctrl+C closes the program quietly. diff --git a/_Sidebar.md b/_Sidebar.md new file mode 100644 index 0000000..f889c64 --- /dev/null +++ b/_Sidebar.md @@ -0,0 +1,24 @@ +**NATO phonetic alphabet** + +- [Home](Home) +- [Install](Install) +- [Usage](Usage) +- [Development](Development) + +**Dansk** + +- [Hjem](Home-da) +- [Installation](Install-da) +- [Brug](Usage-da) +- [Udvikling](Development-da) + +**Bahasa Melayu** + +- [Utama](Home-ms) +- [Pemasangan](Install-ms) +- [Penggunaan](Usage-ms) +- [Pembangunan](Development-ms) + +**Links** + +- [Repository](https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/030-nato-phonetic-alphabet) diff --git a/images/retry-invalid.png b/images/retry-invalid.png new file mode 100644 index 0000000..eecc21b Binary files /dev/null and b/images/retry-invalid.png differ diff --git a/images/spell-word.png b/images/spell-word.png new file mode 100644 index 0000000..67d815d Binary files /dev/null and b/images/spell-word.png differ