"""
Normalisasi Glosa untuk BISINDO Trans.

Tahap 1: Preprocessing glosa bahasa isyarat
- Hapus NULL
- Hapus duplikat berurutan
- Konversi ke lowercase
"""

from typing import List, Optional


def normalisasi_glosa(input_glosa: List[Optional[str]]) -> List[str]:
    """
    Normalisasi input glosa bahasa isyarat.
    
    Steps:
        1. Hapus nilai NULL/None
        2. Hapus duplikat berurutan
        3. Konversi ke lowercase
    
    Args:
        input_glosa: List kata glosa (contoh: ["SAYA", "NULL", "MAU", "MAU", "MAKAN"])
        
    Returns:
        List kata yang sudah dinormalisasi (contoh: ["saya", "mau", "makan"])
        
    Example:
        >>> normalisasi_glosa(["SAYA", "NULL", "MAU", "MAU", "MAKAN"])
        ['saya', 'mau', 'makan']
    """
    # Langkah A: Bersihkan NULL dan ubah ke huruf kecil
    bersih_tahap_1 = []
    for kata in input_glosa:
        if kata is not None and kata != "NULL":
            bersih_tahap_1.append(kata.lower())
    
    # Langkah B: Hapus Duplikat Berurutan (misal: "mau", "mau" -> "mau")
    if not bersih_tahap_1:
        return []
        
    hasil_akhir = [bersih_tahap_1[0]]  # Masukkan kata pertama
    for i in range(1, len(bersih_tahap_1)):
        # Jika kata sekarang BEDA dengan kata sebelumnya, masukkan
        if bersih_tahap_1[i] != bersih_tahap_1[i-1]:
            hasil_akhir.append(bersih_tahap_1[i])
            
    return hasil_akhir


# --- TEST ---
if __name__ == "__main__":
    contoh_input = ["SAYA", "NULL", "MAU", "MAU", "MAKAN"]
    hasil = normalisasi_glosa(contoh_input)
    print(f"Input Asli : {contoh_input}")
    print(f"Hasil      : {hasil}")
    # Expected: ['saya', 'mau', 'makan']
