"""Korean language utils

reference: https://sari-kun.tistory.com/10
"""

# 초성 리스트. 00 ~ 18
CHOSUNG_LIST = ['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ',
                'ㅎ']
# 중성 리스트. 00 ~ 20
JUNGSUNG_LIST = ['ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ',
                 'ㅡ', 'ㅢ', 'ㅣ']
# 종성 리스트. 00 ~ 27 + 1(1개 없음)
JONGSUNG_LIST = [' ', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ',
                 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ']

NUMBER_LIST = ['영','일','이','삼','사','오','육','칠','팔','구']

ENG_LIST = ['에이','비','씨','디','이','에프','지','에이치','아이','제이','케이','엘','엠','엔','오','피','큐','알','에스','티',
            '유','브이','더블유','엑스','와이','제트']


def bojosa(korean_word):
    """은/는 조사 판단 함수"""
    if korean_word is not None and len(korean_word) > 0:
        w = korean_word[len(korean_word) - 1]  # 마지막 글자 획득
        ## 영어인 경우 구분해서 작성함.
        if '가' <= w <= '힣':
            ## 588개 마다 초성이 바뀜.
            ch1 = (ord(w) - ord('가')) // 588
            ## 중성은 총 28가지 종류
            ch2 = ((ord(w) - ord('가')) - (588 * ch1)) // 28
            ch3 = (ord(w) - ord('가')) - (588 * ch1) - 28 * ch2
            if ch3 == 0:
                return '는'
            else:
                return '은'
        elif '0' <= w <= '9':  # 숫자일 경우
            return bojosa(NUMBER_LIST[ord(w) - ord('0')])
        elif type(w) is int and 0 <= w <= 9:
            return bojosa(NUMBER_LIST[w])
        elif 'a' <= w <= 'z':  # 영문일 경우
            return bojosa(ENG_LIST[ord(w) - ord('a')])
        elif 'A' <= w <= 'Z':
            return bojosa(ENG_LIST[ord(w) - ord('A')])
    return '는'  # 디폴트로 '는' 리턴