# 🇮🇩 Bahasa Indonesia Auto Formalizer

[![npm version](https://img.shields.io/npm/v/id-auto-formalizer.svg)](https://www.npmjs.com/package/id-auto-formalizer)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)

Konversi teks Bahasa Indonesia dari gaya kasual/informal menjadi formal. Cocok untuk surat resmi, email profesional, dan laporan formal.

---

## ✨ Fitur

- 🔄 200+ mapping kata informal → formal
- 🖥️ CLI support
- 🔤 Auto kapitalisasi
- ✏️ Auto tanda baca
- 📊 Analisis tingkat formalitas
- 💡 Saran peningkatan formalitas
- 🚀 Batch processing file
- 🎯 Ringan tanpa dependency berat

---

## 📦 Instalasi

### Sebagai CLI Tool (Global)
```bash
npm install -g id-auto-formalizer
```

### Sebagai Library (Dalam Project)
```bash
npm install id-auto-formalizer
```

---

## 🚀 Penggunaan

### CLI

```bash
formalize text "gue mau nanya dong, lo udah selesai belom?"
# → Saya ingin bertanya, Anda sudah selesai belum?

formalize text "makasih ya udh bantuin" --analyze
# → Terima kasih sudah membantu.
# Skor Formalitas: 85% (Formal)

formalize text "gw cape bgt" --suggest
```

#### Mode Interaktif
```bash
formalize interactive
# atau
formalize i
```

#### File & Batch
```bash
formalize file input.txt -o output.txt
formalize batch -d ./documents -o ./formal_documents
formalize batch -d ./emails -e .eml -o ./formal_emails
```

#### Tambah Mapping Baru
```bash
formalize add-mapping "ngoding" "memprogram"
formalize stats
```

---

## 📚 Programmatic API

```js
const { formalize } = require('id-auto-formalizer');

console.log(formalize("gue mau meeting sama lo besok pagi"));
// → Saya ingin meeting dengan Anda besok pagi.
```

#### Fitur Lanjutan

```js
const IndonesianFormalizer = require('id-auto-formalizer');
const formalizer = new IndonesianFormalizer();

const result = formalizer.formalize("thanks ya udh bantu gue", {
  autoCapitalize: true,
  autoPunctuation: true
});

const analysis = formalizer.analyzeFormalityLevel("lo tau gak?");
console.log(analysis);
// { score: 25, level: 'Sangat Informal', informalWords: 2, totalWords: 3 }

const suggestions = formalizer.suggestImprovements("gw capek");
```

#### Tambah / Ekspor Mapping

```js
formalizer.addMapping("ngoding", "memprogram");

formalizer.addMappings({
  "ngegame": "bermain game",
  "ngetweet": "menulis tweet",
  "kepo": "ingin tahu"
});

const allMappings = formalizer.exportMappings();
```

---

## 📝 Contoh Transformasi

| Informal                        | Formal                             |
|--------------------------------|------------------------------------|
| gue mau nanya dong             | Saya ingin bertanya                |
| thanks ya udh bantuin          | Terima kasih sudah membantu        |
| sorry gue telat, jalanan macet | Maaf saya terlambat, jalanan macet|
| btw lo udah makan belom?       | Omong-omong, Anda sudah makan?     |
| meeting nya kapan? gue lupa    | Meeting tersebut kapan? Saya lupa. |
| tolong kirim filenya asap ya   | Mohon kirim file tersebut segera.  |

---

## 🗺️ Roadmap

### ✅ Fase 1: Fitur Dasar
- [x] Mapping 200+ kata
- [x] CLI interface
- [x] Auto kapitalisasi & tanda baca
- [x] Analisis formalitas
- [x] Batch processing

### 🚧 Fase 2: NLP Lanjutan
- [ ] Transformasi kontekstual
- [ ] Perbaikan struktur kalimat
- [ ] Deteksi akronim & singkatan

### 📋 Fase 3: Integrasi & UI
- [ ] REST API
- [ ] Web UI
- [ ] Ekstensi VS Code & Chrome

### 🌐 Fase 4: Komunitas & Dataset
- [ ] Dataset publik
- [ ] Crowdsourcing mapping
- [ ] Dukungan bahasa daerah

---

## 🤝 Kontribusi

### Menambah Mapping

1. Fork repo ini
2. Edit `src/formalizer.js`
3. Tambah ke `informalToFormal`:
```js
this.informalToFormal = {
  // ...
  'kata_gaul': 'kata_baku',
};
```
4. Kirim pull request

### Kontribusi lainnya:
- Laporkan bug
- Usulkan fitur baru
- Bantu dokumentasi

---

## 🔧 Development

```bash
git clone https://github.com/codenamekii/id-auto-formalizer.git
cd id-auto-formalizer

npm install
npm test
npm run lint
npm run dev
```

---

## 📄 API Reference

### Class: `IndonesianFormalizer`

#### `formalize(text, options)`
- `text`: string
- `options`: { autoCapitalize, autoPunctuation }

#### `analyzeFormalityLevel(text)`
→ `{ score, level, informalWords, totalWords }`

#### `suggestImprovements(text)`
→ array of suggestions

#### `addMapping(informal, formal)`
#### `addMappings({ informal: formal })`
#### `exportMappings()`

---

## 📊 Dataset Sumber

- Kamus Besar Bahasa Indonesia (KBBI)
- Dataset publik Twitter Indonesia
- Forum & platform chat lokal
- Kontribusi komunitas

---

## 📜 Lisensi

MIT — lihat [LICENSE](LICENSE)

---

## 🔗 Link

- [NPM](https://www.npmjs.com/package/id-auto-formalizer)
- [GitHub](https://github.com/codenamekii/id-auto-formalizer)
- [Issue Tracker](https://github.com/codenamekii/id-auto-formalizer/issues)
- [Contribution Guide](CONTRIBUTING.md)

---

_Membantu kamu menulis Bahasa Indonesia yang baik dan benar_ 🇮🇩