id-auto-formalizer
Version:
Konversi teks Bahasa Indonesia dari kasual ke formal untuk surat, email, dan laporan resmi
279 lines (202 loc) • 6.12 kB
Markdown
# Contributing to Bahasa Indonesia Auto Formalizer 🤝
Terima kasih atas minat Anda untuk berkontribusi! Kami sangat menghargai semua bentuk kontribusi untuk membuat tool ini lebih baik.
## 📋 Table of Contents
1. [Code of Conduct](#code-of-conduct)
2. [Cara Berkontribusi](#cara-berkontribusi)
3. [Menambah Mapping Kata](#menambah-mapping-kata)
4. [Development Setup](#development-setup)
5. [Submission Guidelines](#submission-guidelines)
6. [Style Guide](#style-guide)
7. [Community](#community)
## Code of Conduct
Proyek ini menganut prinsip inklusivitas dan saling menghormati. Kami berharap semua kontributor:
- Menggunakan bahasa yang sopan dan inklusif
- Menghormati sudut pandang dan pengalaman yang berbeda
- Menerima kritik konstruktif dengan baik
- Fokus pada apa yang terbaik untuk komunitas
## Cara Berkontribusi
### 🐛 Melaporkan Bug
1. Cek [Issues](https://github.com/codenamekii/id-auto-formalizer/issues) untuk memastikan bug belum dilaporkan
2. Buat issue baru dengan template:
```
**Deskripsi Bug:**
[Jelaskan bug dengan detail]
**Langkah Reproduksi:**
1. ...
2. ...
**Expected Behavior:**
[Apa yang seharusnya terjadi]
**Actual Behavior:**
[Apa yang sebenarnya terjadi]
**Environment:**
- Node version:
- OS:
- Package version:
```
### 💡 Request Fitur
1. Cek [Issues](https://github.com/codenamekii/id-auto-formalizer/issues) untuk fitur serupa
2. Buat issue dengan label `enhancement`:
```
**Fitur yang Diusulkan:**
[Deskripsi fitur]
**Use Case:**
[Kapan/mengapa fitur ini berguna]
**Implementasi yang Disarankan:**
[Opsional - ide implementasi]
```
### 📝 Menambah Mapping Kata
Ini adalah kontribusi yang paling umum dan sangat kami apresiasi!
#### Guidelines untuk Mapping:
1. **Pastikan Akurat**: Mapping harus menghasilkan bahasa Indonesia formal yang benar
2. **Konteks Netral**: Pilih kata formal yang bisa digunakan di berbagai konteks
3. **Konsisten**: Ikuti pola mapping yang sudah ada
4. **Tidak Duplikat**: Cek apakah mapping sudah ada
#### Cara Menambah Mapping:
1. Fork repository
2. Edit `src/formalizer.js`
3. Temukan object `this.informalToFormal`
4. Tambahkan mapping baru (alphabetical order):
```javascript
this.informalToFormal = {
// ...existing mappings...
// Tambahkan di posisi alphabetical yang tepat
'kata_informal_anda': 'kata_formal_pengganti',
// Contoh:
'ngoding': 'memprogram',
'ngeprint': 'mencetak',
'nyetir': 'mengemudi',
// ...more mappings...
};
```
5. Test mapping baru:
```bash
npm test
# atau test manual
node -e "console.log(require('./src').formalize('test ngoding'))"
```
6. Commit dengan message yang jelas:
```bash
git commit -m "feat: add mapping for ngoding -> memprogram"
```
### 🔧 Menambah Fitur
1. Diskusikan dulu di issue untuk fitur besar
2. Fork dan buat branch baru:
```bash
git checkout -b feature/nama-fitur
```
3. Implementasi dengan test
4. Update dokumentasi
5. Submit PR
## Development Setup
### Prerequisites
- Node.js >= 14.0.0
- npm >= 6.0.0
### Setup Steps
```bash
# Clone fork Anda
git clone https://github.com/codenamekii/id-auto-formalizer.git
cd id-auto-formalizer
# Install dependencies
npm install
# Run tests
npm test
# Run linter
npm run lint
# Run dalam mode development
npm run dev
```
### Testing
Semua kontribusi HARUS disertai test:
```javascript
// test/formalizer.test.js
test('should formalize new mapping', () => {
const formalizer = new IndonesianFormalizer();
expect(formalizer.formalize('ngoding')).toBe('Memprogram.');
});
```
Run test:
```bash
npm test
npm test -- --watch
npm test -- --coverage
```
## Submission Guidelines
### Pull Request Process
1. Update README.md jika ada perubahan API
2. Update test untuk cover perubahan
3. Pastikan semua test pass
4. Pastikan code ter-lint dengan baik
5. PR title format: `type: description`
### PR Template
```markdown
## Deskripsi
[Jelaskan perubahan yang dilakukan]
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
- [ ] Test ditambahkan
- [ ] Semua test pass
- [ ] Coverage tidak menurun
## Checklist
- [ ] Code mengikuti style guide
- [ ] Self-review sudah dilakukan
- [ ] Dokumentasi sudah diupdate
- [ ] Tidak ada warning dari linter
```
## Style Guide
### JavaScript Style
- ES6+ features
- 2 spaces indentation
- Single quotes
- Semicolon di akhir statement
- Max line length: 100 characters
### Naming Conventions
- camelCase untuk variables dan functions
- PascalCase untuk classes
- UPPER_SNAKE_CASE untuk constants
### Comment Style
```javascript
// Single line comment
/**
* Multi-line comment
* @param {string} text - Input text
* @returns {string} Formalized text
*/
function formalize(text) {
// Implementation
}
```
### Git Commit Messages
```
feat: add mapping for technical terms
- Add ngoding -> memprogram
- Add ngetest -> melakukan pengujian
- Add deploy -> meluncurkan
Fixes #123
```
## Community
### Getting Help
- 💬 [GitHub Discussions](https://github.com/codenamekii/id-auto-formalizer/discussions)
- 🐛 [Issue Tracker](https://github.com/codenamekii/id-auto-formalizer/issues)
- 📧 Email: maintainer@example.com
### Contributors
Lihat [Contributors page](https://github.com/codenamekii/id-auto-formalizer/graphs/contributors).
### Special Thanks
- KBBI
- Komunitas open source Indonesia
- Semua kontributor & reviewer
## 🎯 Priority Areas
1. Mapping kata gaul terkini
2. Konteks bisnis & startup
3. Akronim & singkatan
4. Ragam regional
5. Istilah teknis
## 📚 Resources
- [KBBI](https://kbbi.kemdikbud.go.id/)
- [PUEBI](https://puebi.js.org/)
- [Indonesian NLP Resources](https://github.com/louisowen6/NLP_bahasa_resources)
---
Terima kasih telah berkontribusi! 🙏