Konsol: fraktal (paralel şeritli 24-bit Mandelbrot/Julia + yakınlaşma), sudoku (geri izlemeli, canlı animasyon), fatura (JSON → terminal tablosu, PDF ve Excel). Masaüstü: hesap makinesi (işlem önceliği, canlı bağlama), odak (Pomodoro), parola atölyesi (entropi ölçer, SHA-256). Web: pano (Kanban REST API + SQLite), kisalt (302 yönlendirme, SVG istatistik), anket (adres başına tek oy, sunucuda çizilen grafik). Hepsi `kabalang calistir` ile derlenip çalışır; web uygulamaları yalnız 127.0.0.1'i dinler, SQL parametre bağlamalı, HTML çıktısı kaçırılır. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Fatura — JSON siparişten terminal tablosu, PDF ve Excel
siparis.json'u okur; her kalem için indirim ve KDV hesaplar, KDV'yi
oranlara göre döker ve sonucu üç biçimde verir:
- Terminalde kutu çizgili, renkli bir fatura tablosu
fatura.pdf— Türkçe karakterleri ve₺işaretini taşıyan, sayfa numaralı PDFfatura.xlsx— tablolar ayrı çalışma sayfalarında
kabalang calistir fatura.kbl # siparis.json → ./fatura.pdf + ./fatura.xlsx
kabalang calistir fatura.kbl -- baska.json --cikti ~/Belgeler
KabaLang'ın gösterdikleri
| Özellik | Nerede |
|---|---|
yapi + metotlar |
Kalem.brut(), matrah(), kdv_tutari() — hesap verinin yanında |
sonuc<T, Hata> |
siparis_oku dosya yokken ya da JSON bozukken değerle hata döner; yok sayılamaz |
dene / yakala |
JSON dizisini sonuna kadar gezmek |
json |
İç içe erişim: v["satici"]["ad"], v["kalemler"][i]["adet"] |
kaba.belge |
Aynı belge nesnesinden pdf_yaz ve xlsx_yaz |
| f-string biçimi | {ad:<32}, {tutar:>15}, {k % 100:02d} — hizalı tablo ve kuruş |
Para nasıl tutuluyor
Her ara sonuç kuruşa yuvarlanır (kurus()); 0.1 + 0.2 gibi ikili kesir
artıkları faturaya taşınmaz. para() sayıyı Türkçe biçime çevirir:
1249.9 → 1.249,90 ₺.
Örnek siparişin toplamları elle de hesaplanıp karşılaştırıldı: ara toplam 65.439,80 ₺ · indirim 1.879,99 ₺ · KDV 11.748,96 ₺ · genel toplam 75.308,77 ₺.
Satıcı ve alıcı bilgileri örnek amaçlı, hayalidir.
