# hangul_decompose.py

from hangulpy.utils import CHOSUNG_LIST, CHOSUNG_BASE, is_hangul_char, HANGUL_BEGIN_UNICODE, JUNGSUNG_LIST, JUNGSUNG_DECOMPOSE, JONGSUNG_LIST, JONGSUNG_DECOMPOSE, JUNGSUNG_BASE

def decompose_hangul_char(c):
    """
    주어진 한글 음절을 초성, 중성, 종성으로 분해합니다.
    
    :param c: 한글 음절 문자
    :return: (초성, 중성, 종성) 튜플
    """
    if is_hangul_char(c):
        # 한글 음절의 유니코드 값을 기준으로 각 성분의 인덱스를 계산합니다.
        char_index = ord(c) - HANGUL_BEGIN_UNICODE
        chosung_index = char_index // CHOSUNG_BASE
        jungsung_index = (char_index % CHOSUNG_BASE) // JUNGSUNG_BASE
        jongsung_index = char_index % JUNGSUNG_BASE
        
        # 중성 및 종성 분해
        jungsung = JUNGSUNG_LIST[jungsung_index]
        jongsung = JONGSUNG_LIST[jongsung_index]

        jungsung_decomposed = JUNGSUNG_DECOMPOSE.get(jungsung, (jungsung,))
        jongsung_decomposed = JONGSUNG_DECOMPOSE.get(jongsung, (jongsung,))
        
        return (CHOSUNG_LIST[chosung_index], jungsung_decomposed, jongsung_decomposed)
    
    return (c, '', '')  # 한글이 아니면 그대로 반환
