Module:ko-conj

local export = {}

local m_str_utils = require("Module:string utilities") local m_translit = require('Module:ko-translit').tr_revised

local codepoint = m_str_utils.codepoint local gsub = m_str_utils.gsub local sub = m_str_utils.sub local match = m_str_utils.match local len = m_str_utils.len local u = m_str_utils.char

local grey_bg = ' style="background:#E0E0E0" ' local rom_format = ' '

function format_Korean(text, rom, horizontal, no_space) return ' ' .. text .. " " .. (rom		and (horizontal and (no_space and '' or ' ') .. '(' .. rom_format or ' ' .. rom_format) .. m_translit(tostring(rom) ~= "true" and rom or text) .. ' ' .. (horizontal and ')' or )		or ) end

function replace(text1, text2, text3) if match(text1, text2) and len(text1) == len(text2) then return gsub(text1, text2, text3) else return gsub(text1, sub(text2, 1, -2), sub(text3, 1, -2)) end end

local conj_type = { ["adjectives"] = { ["ha"] = { name = "ha-irregular", Korean = "하" }, ["reu"] = { name = "reu-irregular", Korean = "르" }, ["reo"] = { name = "reo-irregular", Korean = "러" }, ["s"] = { name = "s-irregular", Korean = "ㅅ" }, ["p"] = { name = "p-irregular", Korean = "ㅂ" }, ["h"] = { name = "h-irregular", Korean = "ㅎ" }, ["det_h"] = { name = "determiner-h-irregular", Korean = "ㅎ", extra = "-determiner" }, ["l"] = { name = "l-irregular", Korean = "ㄹ" }, ["si"] = { name = "si-irregular", Korean = "시" }, ["i"] = { name = "i-irregular", Korean = "이" }, ["ex"] = { name = "existential-irregular", Korean = "있/없", rom = "iss/eops" }, },	["verbs"] = { ["ha"] = { name = "ha-irregular", Korean = "하" }, ["ga"] = { name = "ga-irregular", Korean = "가" }, ["si"] = { name = "si-irregular", Korean = "시" }, ["o"] = { name = "o-irregular", Korean = "오" }, ["reu"] = { name = "reu-irregular", Korean = "르" }, ["reo"] = { name = "reo-irregular", Korean = "러" }, ["s"] = { name = "s-irregular", Korean = "ㅅ" }, ["p"] = { name = "p-irregular", Korean = "ㅂ" }, ["noh"] = { name = "noh-irregular", Korean = "놓", rom = "noh" }, ["l"] = { name = "l-irregular", Korean = "ㄹ" }, ["d"] = { name = "d-irregular", Korean = "ㄷ" }, ["eo"] = { name = "eo-irregular", Korean = "어" }, ["u"] = { name = "u-irregular", Korean = "우" }, } }

function conj_text(irregtype, pos) if irregtype == '' then return 'regular' end local conj_data = conj_type[pos][irregtype] return '' .. 		format_Korean(conj_data.Korean, rom or true, true, true) .. 		(conj_data.extra or "") .. 		"-irregular" end function conj_category(irregtype, pos) if irregtype ==  then return  end return '' end function export.adjective(frame, args) local args = args or frame:getParent.args local word = args[1] or mw.title.getCurrentTitle.text local irreg = args["irreg"] or false local honorific = args["honorific"] or 'yes' local phonetic = args["phon"] and sub(args["phon"], 1, -2) or false local honorific_note = args["honorific_note"] or nil local form = args["form"] or false local forms = {} local honforms = {} local consonant_stem = true stem1 = sub(word,1,-2) prestem1 = sub(stem1,1,-2) stem1last_basic = codepoint(sub(stem1,-1,-1)) stem1last = stem1last_basic - 0xAC00 stem1_jongseong = stem1last % 28 if stem1_jongseong == 0 then stem1_jongseong = false else stem1_jongseong = u(0x11A7 + stem1_jongseong) end stem1_jungseong = math.floor((stem1last % 588) / 28) stem1_jungseong = u(0x1161 + stem1_jungseong) if not stem1_jongseong then consonant_stem = false hal = prestem1 .. u(stem1last_basic + 8) ham = prestem1 .. u(stem1last_basic + 16) han = prestem1 .. u(stem1last_basic + 4) hap = prestem1 .. u(stem1last_basic + 17) if stem1_jungseong == 'ᅡ' then if codepoint(sub(stem1,-1,-1)) == 54616 then irregtype = 'ha' stem2 = prestem1 .. u(stem1last_basic + 28) haet = prestem1 .. '했' stem2a = stem1 .. '여' hayeot = stem1 .. '였' else haet = prestem1 .. u(stem1last_basic + 20) end elseif stem1_jungseong == 'ᅵ' then stem2 = prestem1 .. u(stem1last_basic - 392) haet = prestem1 .. u(stem1last_basic - 372) if codepoint(sub(stem1,-1,-1)) == 49884 and irreg == 'y' then irregtype = 'si' honorific = 'no' stem2a = prestem1 .. '세' honorific_note = "This adjective is in honorific form." elseif match(sub(stem1,-1,-1),'[이니]') and irreg == 'y' then irregtype = 'i' stem2, stem2a, haet = stem1 .. "에", stem1 .. "어", stem1 .. '었' else stem2a, hayeot = stem1 .. '어', stem1 .. '었' end elseif match(stem1_jungseong,'[ᅢᅦᅰ]') then haet = prestem1 .. u(stem1last_basic + 20) stem2a, hayeot = stem1 .. '어', stem1 .. '었' elseif stem1_jungseong == 'ᅩ' then stem2, stem2a = prestem1 .. u(stem1last_basic + 28), stem1 .. '아' haet, hayeot = prestem1 .. u(stem1last_basic + 48), stem1 .. '았' elseif stem1_jungseong == 'ᅬ' then stem2 = prestem1 .. u(stem1last_basic - 28) haet = prestem1 .. u(stem1last_basic - 8) stem2a, hayeot = stem1 .. '어', stem1 .. '었' elseif stem1_jungseong == 'ᅳ' then if codepoint(sub(stem1,-1,-1)) == 47476 then if match(sub(stem1,-2,-1),'[누노푸]르') then irregtype = 'reo' stem2 = stem1 .. '러' haet = stem1 .. '렀' else irregtype = 'reu' antepenultimate = sub(prestem1,1,-2) penultimate = codepoint(sub(prestem1,-1,-1)) penultimate_vowel = u(0x1161 + math.floor(((penultimate - 0xAC00) % 588) / 28)) if match(penultimate_vowel,'[ᅡᅣᅩᅭ]') then stem2 = antepenultimate .. u(penultimate + 8) .. '라' haet = antepenultimate .. u(penultimate + 8) .. '랐' else stem2 = antepenultimate .. u(penultimate + 8) .. '러' haet = antepenultimate .. u(penultimate + 8) .. '렀' end end else if len(stem1) ~= 1 then penultimate = codepoint(sub(prestem1,-1,-1)) penultimate_vowel = u(0x1161 + math.floor(((penultimate - 0xAC00) % 588) / 28)) else penultimate_vowel = 'ᅥ' end if match(penultimate_vowel,'[ᅡᅣᅩᅭ]') then stem2 = prestem1 .. u(stem1last_basic - 504) haet = prestem1 .. u(stem1last_basic - 484) else stem2 = prestem1 .. u(stem1last_basic - 392) haet = prestem1 .. u(stem1last_basic - 372) end end elseif stem1_jungseong == 'ᅮ' then if sub(stem1,-1,-1) == '우' then stem2, haet = prestem1 .. '워', prestem1 .. '웠' else stem2, stem2a = stem1 .. '어', prestem1 .. u(stem1last_basic + 28) haet, hayeot = stem1 .. '었', prestem1 .. u(stem1last_basic + 48) end else stem2, haet = stem1 .. '어', stem1 .. '었' end else if irreg == 'y' then if stem1_jongseong == 'ᇂ' then cstem = 'y'				irregtype = 'h'				if (match(stem1, '[이요그고저조무]렇') or match(stem1, '어떻')) and not match(stem1, '[성더덩둥뚱댕뎅]그렇') then irregtype = 'det_h' stem2 = prestem1 .. u(stem1last_basic - 111) haet = prestem1 .. u(stem1last_basic - 91) else stem2 = prestem1 .. u(stem1last_basic + 1) haet = prestem1 .. u(stem1last_basic + 21) end stem3 = prestem1 .. u(stem1last_basic - 27) hal = prestem1 .. u(stem1last_basic - 19) ham = prestem1 .. u(stem1last_basic - 11) han = prestem1 .. u(stem1last_basic - 23) elseif stem1_jongseong == 'ᆺ' then cstem = 'y'				irregtype = 's'				de_s = u(stem1last_basic - 19) stem3 = prestem1 .. de_s .. '으' ham = prestem1 .. de_s .. '음' hal = prestem1 .. de_s .. '을' han = prestem1 .. de_s .. '은' if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = prestem1 .. de_s .. '아' haet = prestem1 .. de_s .. '았' else stem2 = prestem1 .. de_s .. '어' haet = prestem1 .. de_s .. '었' end elseif stem1_jongseong == 'ᆸ' or stem1_jongseong == 'ᆲ' then cstem = 'y'				irregtype = 'p'				de_p = u(stem1last_basic - (stem1_jongseong == 'ᆲ' and 3 or 17)) stem3 = prestem1 .. de_p .. '우' ham = prestem1 .. de_p .. '움' hal = prestem1 .. de_p .. '울' han = prestem1 .. de_p .. '운' if len(stem1) == 1 then if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = prestem1 .. de_p .. '와' haet = prestem1 .. de_p .. '왔' else stem2 = prestem1 .. de_p .. '워' haet = prestem1 .. de_p .. '웠' end else stem2, haet = prestem1 .. de_p .. '워', prestem1 .. de_p .. '웠' end else return error("Irregular irregtype unrecognised.") end elseif stem1_jongseong == 'ᆯ' then cstem = 'n'			irregtype = 'l' stem3 = prestem1 .. u(stem1last_basic - 8) ham = prestem1 .. u(stem1last_basic + 2) hal = stem1 han = prestem1 .. u(stem1last_basic - 4) hap = prestem1 .. u(stem1last_basic + 9) if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = stem1 .. '아' else stem2 = stem1 .. '어' end elseif stem1_jongseong == 'ᆸ' then if match(sub(stem1,-1,-1),'[답롭]') or sub(stem1,-2,-1) == '스럽' then cstem = 'y'				irregtype = 'p'				de_p = u(stem1last_basic - 17) stem3 = prestem1 .. de_p .. '우' ham = prestem1 .. de_p .. '움' hal = prestem1 .. de_p .. '울' han = prestem1 .. de_p .. '운' stem2, haet = prestem1 .. de_p .. '워', prestem1 .. de_p .. '웠' else cstem = 'y' stem3 = stem1 .. '으' if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = stem1 .. '아' else stem2 = stem1 .. '어' end end else cstem = 'y' stem3 = stem1 .. '으' if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = stem1 .. '아' else stem2 = stem1 .. '어' end end end if not haet then if stem2 == (stem1 .. '어') then haet = stem1 .. '었' elseif stem2 == (stem1 .. '아') then haet = stem1 .. '았' end end stem2 = stem2 or stem1 stem3 = stem3 or stem1 ham = ham or (stem1 .. '음') hal = hal or (stem1 .. '을') if not han then if match(sub(stem1,-1,-1),'[있없밌]') then irregtype = 'ex' han = stem1 .. '는' else han = stem1 .. '은' end end if form == 'hae' then return stem2 elseif form == 'hae2' then return stem2a elseif form == 'hani' then return stem3 .. '니' end

forms.lemma = stem1 .. '다' forms.ind_hrc = stem1 .. '다' forms.ind_hrc_past = haet .. '다' forms.ind_hc = stem2 forms.ind_hc_past = haet .. '어' forms.ind_hyc = stem2 .. '요' forms.ind_hyc_past = haet .. '어요' forms.ind_hssoc_past = haet .. '습니다' forms.interrog_hrc = stem3 .. '냐' forms.interrog_hrc_past = haet .. '냐' forms.interrog_hc = stem2 forms.interrog_hc_past = haet .. '어' forms.interrog_hyc = stem2 .. '요' forms.interrog_hyc_past = haet .. '어요' forms.interrog_hssoc_past = haet .. '습니까' forms.assert_hrc = stem1 .. '겠다' forms.assert_hc = stem1 .. '겠어' forms.assert_hyc = stem1 .. '겠어요' forms.assert_hssoc = stem1 .. '겠습니다' forms.cause_hrc = stem2 forms.cause_hc = stem2 .. '서' forms.cause_hyc = stem3 .. '니' forms.cause_hssoc = stem3 .. '니까' forms.contrast_hrc = stem1 .. '지만' forms.contrast_hc = han .. '데' forms.contrast_hyc = stem1 .. '더니' forms.conjunction = stem1 .. '고' forms.condition_hc = stem2 .. '야' forms.vn_um = ham forms.vn_gi = stem1 .. '기' forms.vn_um_past = haet .. '음' forms.vn_gi_past = haet .. '기' forms.determ_pres = han forms.determ_fut = hal

if irregtype ~= 'ha' and irregtype ~= 'i' then if stem2a then forms.ind_hyc_alt = stem2a .. '요' forms.interrog_hyc_alt = stem2a .. '요' end end if irregtype == 'i' then forms.ind_hc, forms.interrog_hc = stem1 .. '야', stem1 .. '야' if sub(stem1,-1,-1) == '이' then forms.ind_hyc_alt = prestem1 .. '예요' forms.interrog_hyc_alt = prestem1 .. '예요' end forms.interrog_hrc_past = haet .. '느냐' forms.cause_hc = stem2a .. '서' forms.condition_hc = stem2a .. '야' for key, term in pairs(forms) do			if match(term, "이었") then forms[key] = forms[key] .. ', ' .. gsub(term, '이었', '였') end end end if match(sub(stem1,-1,-1),'[있없밌]') then forms.interrog_hrc = stem1 .. '느냐' forms.interrog_hrc_past = haet .. '느냐' end if cstem == 'y' then forms.ind_hssoc = stem1 .. '습니다' forms.interrog_hssoc = stem1 .. '습니까' else if not hap then forms.ind_hssoc = stem1 .. '읍니다' forms.interrog_hssoc = stem1 .. '읍니까' else forms.ind_hssoc = hap .. '니다' forms.interrog_hssoc = hap .. '니까' end end if stem1 == hal then forms.condition_hrc = stem1 .. '면' else forms.condition_hrc = stem3 .. '면' end if stem2a and irregtype ~= 'si' and irregtype ~= 'i' then forms.cause_hc_alt = stem2a .. '서' forms.condition_hc_alt = stem2a .. '야' end if hayeot then forms.vn_um_past_alt = hayeot .. '음' forms.vn_gi_past_alt = hayeot .. '기' end

if forms.ind_hyc_alt then if irregtype == 'si' then forms.ind_hyc = forms.ind_hyc_alt .. ', ' .. forms.ind_hyc else forms.ind_hyc = forms.ind_hyc .. ', ' .. forms.ind_hyc_alt end end if forms.interrog_hyc_alt then if irregtype == 'si' then forms.interrog_hyc = forms.interrog_hyc_alt .. ', ' .. forms.interrog_hyc else forms.interrog_hyc = forms.interrog_hyc .. ', ' .. forms.interrog_hyc_alt end end if forms.cause_hc_alt then forms.cause_hc = forms.cause_hc .. ', ' .. forms.cause_hc_alt end if forms.condition_hc_alt then forms.condition_hc = forms.condition_hc .. ', ' .. forms.condition_hc_alt end if forms.vn_um_past_alt then forms.vn_um_past = forms.vn_um_past .. ', ' .. forms.vn_um_past_alt end if forms.vn_gi_past_alt then forms.vn_gi_past = forms.vn_gi_past .. ', ' .. forms.vn_gi_past_alt end

for key, form in pairs(forms) do		if forms[key] ~= '' then forms[key] = format_Korean(form, phonetic and replace(form, stem1, phonetic) or form) end end if honorific == 'yes' then honforms.ind_hrc = stem3 .. '시다' honforms.ind_hrc_past = stem3 .. '셨다' honforms.ind_hc = stem3 .. '셔' honforms.ind_hc_past = stem3 .. '셨어' honforms.ind_hyc = stem3 .. '세요' honforms.ind_hyc_alt = stem3 .. '셔요' honforms.ind_hyc_past = stem3 .. '셨어요' honforms.ind_hsc = stem3 .. '십니다' honforms.ind_hsc_past = stem3 .. '셨습니다' honforms.interrog_hrc = stem3 .. '시냐' honforms.interrog_hrc_past = stem3 .. '셨냐' honforms.interrog_hc = stem3 .. '셔' honforms.interrog_hc_past = stem3 .. '셨어' honforms.interrog_hyc = stem3 .. '세요' honforms.interrog_hyc_alt = stem3 .. '셔요' honforms.interrog_hyc_past = stem3 .. '셨어요' honforms.interrog_hsc = stem3 .. '십니까' honforms.interrog_hsc_past = stem3 .. '셨습니까' honforms.assert_hrc = stem3 .. '시겠다' honforms.assert_hc = stem3 .. '시겠어' honforms.assert_hyc = stem3 .. '시겠어요' honforms.assert_hsc = stem3 .. '시겠습니다' honforms.cause_hrc = stem3 .. '셔' honforms.cause_hc = stem3 .. '셔서' honforms.cause_hyc = stem3 .. '시니' honforms.cause_hsc = stem3 .. '시니까' honforms.contrast_hrc = stem3 .. '시지만' honforms.contrast_hc = stem3 .. '신데' honforms.contrast_hyc = stem3 .. '시더니' honforms.conjunction = stem3 .. '시고' honforms.condition_hrc = stem3 .. '시면' honforms.condition_hc = stem3 .. '셔야' honforms.vn_um = stem3 .. '심' honforms.vn_gi = stem3 .. '시기' honforms.vn_um_past = stem3 .. '셨음' honforms.vn_gi_past = stem3 .. '셨기' honforms.determ_pres = stem3 .. '신' honforms.determ_fut = stem3 .. '실' honforms.ind_hyc = honforms.ind_hyc .. ', ' .. honforms.ind_hyc_alt honforms.interrog_hyc = honforms.interrog_hyc .. ', ' .. honforms.interrog_hyc_alt for honkey, honform in pairs(honforms) do			honforms[honkey] = format_Korean(honform, phonetic and replace(honform, stem1, phonetic) or honform) end honorific = [=[ else honorific = honorific_note or "This word is not usually used with an honorific." end stem_type = consonant_stem and "consonant-stem, " or "vowel-stem, "

conjugation_type = stem_type .. conj_text(irregtype or "", "adjectives")

if mw.title.getCurrentTitle.nsText == '' then conjugation_type = conjugation_type .. conj_category(irregtype or "", "adjectives") end return [=[ Selected forms of the adjective ]=] .. format_Korean(word, phonetic and replace(word, stem1, phonetic) or word, true) .. ": " .. conjugation_type .. [=[

]=] .. honorific .. [=[ ]=] end

function export.verb(frame, args) local args = args or frame:getParent.args local word = args[1] or mw.title.getCurrentTitle.text local irreg = args["irreg"] or false local reg = args["reg"] or 'no' local hortative = args["hortative"] or false local imperative = args["imperative"] or false local honimperative = args["imperative"] or false local phonetic = args["phon"] and sub(args["phon"], 1, -2) or false local honorific = args["honorific"] or 'yes' local honorific_note = args["honorific_note"] or nil local form = args["form"] or false local forms = {} local honforms = {} local consonant_stem = true stem1 = sub(word,1,-2) prestem1 = sub(stem1,1,-2) stem1last_basic = codepoint(sub(stem1,-1,-1)) stem1last = stem1last_basic - 0xAC00 stem1_jongseong = stem1last % 28 if stem1_jongseong == 0 then stem1_jongseong = false else stem1_jongseong = u(0x11A7 + stem1_jongseong) end stem1_jungseong = math.floor((stem1last % 588) / 28) stem1_jungseong = u(0x1161 + stem1_jungseong) if not stem1_jongseong then consonant_stem = false hal = prestem1 .. u(stem1last_basic + 8) ham = prestem1 .. u(stem1last_basic + 16) han = prestem1 .. u(stem1last_basic + 4) hap = prestem1 .. u(stem1last_basic + 17) if stem1_jungseong == 'ᅡ' then if codepoint(sub(stem1,-1,-1)) == 54616 then irregtype = 'ha' stem2 = prestem1 .. u(stem1last_basic + 28) haet = prestem1 .. '했' stem2a = stem1 .. '여' hayeot = stem1 .. '였' else haet = prestem1 .. u(stem1last_basic + 20) if codepoint(sub(stem1,-1,-1)) == 44032 then if reg == 'no' then irregtype = 'ga' stem2a = stem1 .. '거' stem2b = '가오' end end end elseif stem1_jungseong == 'ᅵ' then stem2 = prestem1 .. u(stem1last_basic - 392) haet = prestem1 .. u(stem1last_basic - 372) if codepoint(sub(stem1,-1,-1)) == 49884 then if irreg == 'y' then irregtype = 'si' hortative = 'no' honorific = 'no' stem2a = prestem1 .. '세' honorific_note = "This verb is in honorific form." end end if irregtype ~= 'si' then stem2a, hayeot = stem1 .. '어', stem1 .. '었' end elseif match(stem1_jungseong,'[ᅢᅦᅰ]') then haet = prestem1 .. u(stem1last_basic + 20) stem2a, hayeot = stem1 .. '어', stem1 .. '었' elseif stem1_jungseong == 'ᅩ' then stem2 = prestem1 .. u(stem1last_basic + 28) haet = prestem1 .. u(stem1last_basic + 48) if codepoint(sub(stem1,-1,-1)) == 50724 then if reg == 'no' then irregtype = 'o' stem2a = stem1 .. '너' stem2b = '가오' else stem2a = stem1 .. '아' hayeot = stem1 .. '았' end else stem2a = stem1 .. '아' hayeot = stem1 .. '았' end elseif stem1_jungseong == 'ᅬ' then stem2 = prestem1 .. u(stem1last_basic - 28) haet = prestem1 .. u(stem1last_basic - 8) stem2a = stem1 .. '어' hayeot = stem1 .. '었' elseif stem1_jungseong == 'ᅳ' then if codepoint(sub(stem1,-1,-1)) == 47476 then if sub(stem1,-2,-1) == '따르' or sub(stem1,-3,-1) == '다다르' then stem2 = prestem1 .. '라' haet = prestem1 .. '랐' elseif match(sub(stem1,-2,-1),'[치들]르') or sub(stem1,-3,-1) == '우러르' then stem2 = prestem1 .. '러' haet = prestem1 .. '렀' elseif sub(stem1,-2,-1) == '이르' and irreg then irregtype = 'reo' stem2 = stem1 .. '러' haet = stem1 .. '렀' else irregtype = 'reu' antepenultimate = sub(prestem1,1,-2) penultimate = codepoint(sub(prestem1,-1,-1)) penultimate_vowel = u(0x1161 + math.floor(((penultimate - 0xAC00) % 588) / 28)) if match(penultimate_vowel,'[ᅡᅣᅩᅭ]') then stem2 = antepenultimate .. u(penultimate + 8) .. '라' haet = antepenultimate .. u(penultimate + 8) .. '랐' else stem2 = antepenultimate .. u(penultimate + 8) .. '러' haet = antepenultimate .. u(penultimate + 8) .. '렀' end end else if len(stem1) ~= 1 then penultimate = codepoint(sub(prestem1,-1,-1)) penultimate_vowel = u(0x1161 + math.floor(((penultimate - 0xAC00) % 588) / 28)) else penultimate_vowel = 'ᅥ' end if match(penultimate_vowel,'[ᅡᅣᅩᅭ]') then stem2 = prestem1 .. u(stem1last_basic - 504) haet = prestem1 .. u(stem1last_basic - 484) else stem2 = prestem1 .. u(stem1last_basic - 392) haet = prestem1 .. u(stem1last_basic - 372) end end elseif stem1_jungseong == 'ᅮ' then if irreg == 'y' then irregtype = 'u' stem2 = prestem1 .. u(stem1last_basic - 252) haet = prestem1 .. u(stem1last_basic - 232) elseif sub(stem1,-1,-1) == '우' then stem2 = prestem1 .. '워' haet = prestem1 .. '웠' else stem2 = stem1 .. '어' haet = stem1 .. '었' stem2a = prestem1 .. u(stem1last_basic + 28) hayeot = prestem1 .. u(stem1last_basic + 48) end elseif stem1_jungseong == 'ᅥ' and irreg == 'y' then irregtype = 'eo' stem2 = prestem1 .. u(stem1last_basic - 84) haet = prestem1 .. u(stem1last_basic - 64) else stem2 = stem1 .. '어' haet = stem1 .. '었' end else if irreg == 'y' then if stem1_jongseong == 'ᆺ' then cstem = 'y'				irregtype = 's'				de_s = u(stem1last_basic - 19) stem3 = prestem1 .. de_s .. '으' ham = prestem1 .. de_s .. '음' hal = prestem1 .. de_s .. '을' han = prestem1 .. de_s .. '은' hap = prestem1 .. de_s .. '읍' if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = prestem1 .. de_s .. '아' haet = prestem1 .. de_s .. '았' else stem2 = prestem1 .. de_s .. '어' haet = prestem1 .. de_s .. '었' end elseif stem1_jongseong == 'ᆸ' then cstem = 'y'				irregtype = 'p'				de_p = u(stem1last_basic - 17) stem3 = prestem1 .. de_p .. '우' ham = prestem1 .. de_p .. '움' hal = prestem1 .. de_p .. '울' han = prestem1 .. de_p .. '운' if len(stem1) == 1 then if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = prestem1 .. de_p .. '와' haet = prestem1 .. de_p .. '왔' else stem2 = prestem1 .. de_p .. '워' haet = prestem1 .. de_p .. '웠' end else stem2 = prestem1 .. de_p .. '워' haet = prestem1 .. de_p .. '웠' end elseif stem1_jongseong == 'ᆮ' then irregtype = 'd'				cstem = 'y'				d_to_r = u(stem1last_basic + 1) hal = prestem1 .. d_to_r .. '을' ham = prestem1 .. d_to_r .. '음' han = prestem1 .. d_to_r .. '은' hap = prestem1 .. d_to_r .. '읍' stem3 = prestem1 .. d_to_r .. '으' if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = prestem1 .. d_to_r .. '아' haet = prestem1 .. d_to_r .. '았' else stem2 = prestem1 .. d_to_r .. '어' haet = prestem1 .. d_to_r .. '었' end else return error("Irregular irregtype unrecognised.") end elseif stem1_jongseong == 'ᆯ' then irregtype = 'l'			cstem = 'n' stem1a = prestem1 .. u(stem1last_basic - 8) stem3 = prestem1 .. u(stem1last_basic - 8) ham = prestem1 .. u(stem1last_basic + 2) hal = stem1 han = prestem1 .. u(stem1last_basic - 4) hap = prestem1 .. u(stem1last_basic + 9) if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = stem1 .. '아' else stem2 = stem1 .. '어' end else cstem = 'y' stem3 = stem1 .. '으' if match(stem1_jungseong,'[ᅡᅣᅩᅭ]') then stem2 = stem1 .. '아' if sub(stem1, -1, -1) == '놓' then irregtype = 'noh' stem2a = gsub(stem1, '놓', '놔') end else stem2 = stem1 .. '어' end end end if not haet then if stem2 == (stem1 .. '어') then haet = stem1 .. '었' elseif stem2 == (stem1 .. '아') then haet = stem1 .. '았' end end stem1a = stem1a or stem1 stem2 = stem2 or stem1 stem3 = stem3 or stem1 han = han or (stem1 .. '은') ham = ham or (stem1 .. '음') hal = hal or (stem1 .. '을') hap = hap or (stem1 .. '읍') if form == 'hae' then return stem2 elseif form == 'hae2' then return stem2b and '' or stem2a elseif form == 'hani' then return stem3 .. '니' end forms.lemma = stem1 .. '다' forms.ind_hrc_past = haet .. '다' forms.ind_hc = stem2 forms.ind_hc_past = haet .. '어' forms.ind_hyc = stem2 .. '요' forms.ind_hyc_past = haet .. '어요' forms.ind_hssoc_past = haet .. '습니다' forms.interrog_hrc = stem1a .. '느냐' forms.interrog_hrc_past = haet .. '느냐' forms.interrog_hc = stem2 forms.interrog_hc_past = haet .. '어' forms.interrog_hyc = stem2 .. '요' forms.interrog_hyc_past = haet .. '어요' forms.interrog_hssoc_past = haet .. '습니까' forms.assert_hrc = stem1 .. '겠다' forms.assert_hc = stem1 .. '겠어' forms.assert_hyc = stem1 .. '겠어요' forms.assert_hssoc = stem1 .. '겠습니다' forms.cause_hrc = stem2 forms.cause_hc = stem2 .. '서' forms.cause_hyc = stem3 .. '니' forms.cause_hssoc = stem3 .. '니까' forms.contrast_hrc = stem1 .. '지만' forms.contrast_hc = stem1a .. '는데' forms.contrast_hyc = stem1 .. '더니' forms.conjunction = stem1 .. '고' forms.condition_hc = stem2 .. '야' forms.vn_um = ham forms.vn_gi = stem1 .. '기' forms.vn_um_past = haet .. '음' forms.vn_gi_past = haet .. '기' forms.determ_past = han forms.determ_pres = stem1a .. '는' forms.determ_fut = hal if cstem == 'y' then forms.ind_hrc = stem1 .. '는다' forms.ind_hssoc = stem1 .. '습니다' forms.interrog_hssoc = stem1 .. '습니까' else forms.ind_hrc = han .. '다' forms.ind_hssoc = hap .. '니다' forms.interrog_hssoc = hap .. '니까' end if irregtype ~= 'ha' then if not stem2b then if stem2a then forms.ind_hyc_alt = stem2a .. '요' forms.interrog_hyc_alt = stem2a .. '요' end end end if stem2a then if (not stem2b) and irregtype ~= 'si' then forms.cause_hc_alt = stem2a .. '서' forms.condition_hc_alt = stem2a .. '야' end end if stem1 == hal then forms.condition_hrc = stem1 .. '면' forms.motive = stem1 .. '려고' else forms.condition_hrc = stem3 .. '면' forms.motive = stem3 .. '려고' end if hayeot then forms.vn_um_past_alt = hayeot .. '음' forms.vn_gi_past_alt = hayeot .. '기' end if hortative ~= 'no' then forms.hortative_hrc = stem1 .. '자' forms.hortative_hc = stem2 forms.hortative_hyc = stem2 .. '요' if irregtype ~= 'ha' then if stem2a and not stem2b then forms.hortative_hyc_alt = stem2a .. '요' end end forms.hortative_hssoc = stem3 .. '십시다' end if imperative ~= 'no' then if irregtype ~= 'si' then if stem2b then forms.imperative_hrc = stem2a .. '라' forms.imperative_hrc_alt = stem2 .. '라' else forms.imperative_hrc = stem2 .. '라' if stem2a then forms.imperative_hrc_alt = stem2a .. '라' end end end if irregtype ~= 'si' then forms.imperative_hc = stem2 end forms.imperative_hyc = stem2 .. '요' if irregtype ~= 'ha' then if stem2a and not stem2b then forms.imperative_hyc_alt = stem2a .. '요' end end forms.imperative_hssoc = hap .. '시오' end if forms.ind_hyc_alt then if irregtype == 'si' then forms.ind_hyc = forms.ind_hyc_alt .. ", " .. forms.ind_hyc else forms.ind_hyc = forms.ind_hyc .. ", " .. forms.ind_hyc_alt end end

if forms.interrog_hyc_alt then if irregtype == 'si' then forms.interrog_hyc = forms.interrog_hyc_alt .. ", " .. forms.interrog_hyc else forms.interrog_hyc = forms.interrog_hyc .. ", " .. forms.interrog_hyc_alt end end if hortative ~= 'no' then if forms.hortative_hyc_alt then forms.hortative_hyc = forms.hortative_hyc .. ", " .. forms.hortative_hyc_alt end end if imperative ~= 'no' then if forms.imperative_hrc_alt then forms.imperative_hrc = forms.imperative_hrc .. ", " .. forms.imperative_hrc_alt end if forms.imperative_hyc_alt then if irregtype == 'si' then forms.imperative_hyc = forms.imperative_hyc_alt .. ", " .. forms.imperative_hyc else forms.imperative_hyc = forms.imperative_hyc .. ", " .. forms.imperative_hyc_alt end end end

if forms.cause_hc_alt then forms.cause_hc = forms.cause_hc .. ", " .. forms.cause_hc_alt end

if forms.condition_hc_alt then forms.condition_hc = forms.condition_hc .. ", " .. forms.condition_hc_alt end

if forms.vn_um_past_alt then forms.vn_um_past = forms.vn_um_past .. ", " .. forms.vn_um_past_alt end

if forms.vn_gi_past_alt then forms.vn_gi_past = forms.vn_gi_past .. ", " .. forms.vn_gi_past_alt end for key, form in pairs(forms) do		if forms[key] ~= '' then forms[key] = format_Korean(form, phonetic and replace(form, stem1, phonetic) or form) end end if hortative ~= 'no' then hortative = [=[ !colspan=2]=] .. grey_bg .. [=[|Hortative ]=]	else hortative = '' end
 * ]=] .. forms.hortative_hrc .. [=[||]=] .. forms.hortative_hc .. [=[||]=] .. forms.hortative_hyc .. [=[||]=] .. forms.hortative_hssoc .. [=[

if imperative ~= 'no' then imperative = [=[ !colspan=2]=] .. grey_bg .. [=[|Imperative ]=]	else imperative = '' end
 * ]=] .. (forms.imperative_hrc or "") .. [=[||]=] .. (forms.imperative_hc or "") .. [=[||]=] .. forms.imperative_hyc .. [=[||]=] .. forms.imperative_hssoc .. [=[

if honorific ~= 'no' then honforms.ind_hrc = stem3 .. '신다' honforms.ind_hrc_past = stem3 .. '셨다' honforms.ind_hc = stem3 .. '셔' honforms.ind_hc_past = stem3 .. '셨어' honforms.ind_hyc = stem3 .. '세요' honforms.ind_hyc_alt = stem3 .. '셔요' honforms.ind_hyc_past = stem3 .. '셨어요' honforms.ind_hsc = stem3 .. '십니다' honforms.ind_hsc_past = stem3 .. '셨습니다' honforms.interrog_hrc = stem3 .. '시느냐' honforms.interrog_hrc_past = stem3 .. '셨느냐' honforms.interrog_hc = stem3 .. '셔' honforms.interrog_hc_past = stem3 .. '셨어' honforms.interrog_hyc = stem3 .. '세요' honforms.interrog_hyc_alt = stem3 .. '셔요' honforms.interrog_hyc_past = stem3 .. '셨어요' honforms.interrog_hsc = stem3 .. '십니까' honforms.interrog_hsc_past = stem3 .. '셨습니까' honforms.assert_hrc = stem3 .. '시겠다' honforms.assert_hc = stem3 .. '시겠어' honforms.assert_hyc = stem3 .. '시겠어요' honforms.assert_hsc = stem3 .. '시겠습니다' honforms.cause_hrc = stem3 .. '셔' honforms.cause_hc = stem3 .. '셔서' honforms.cause_hyc = stem3 .. '시니' honforms.cause_hsc = stem3 .. '시니까' honforms.contrast_hrc = stem3 .. '시지만' honforms.contrast_hc = stem3 .. '시는데' honforms.contrast_hyc = stem3 .. '시더니' honforms.conjunction = stem3 .. '시고' honforms.condition_hrc = stem3 .. '시면' honforms.condition_hc = stem3 .. '셔야' honforms.motive = stem3 .. '시려고' honforms.vn_um = stem3 .. '심' honforms.vn_gi = stem3 .. '시기' honforms.vn_um_past = stem3 .. '셨음' honforms.vn_gi_past = stem3 .. '셨기' honforms.determ_past = stem3 .. '신' honforms.determ_pres = stem3 .. '시는' honforms.determ_fut = stem3 .. '실' if honimperative ~= 'no' then honforms.imperative_hrc = stem3 .. '시라' honforms.imperative_hc = stem3 .. '셔' honforms.imperative_hyc = stem3 .. '세요' honforms.imperative_hyc_alt = stem3 .. '셔요' honforms.imperative_hsc = stem3 .. '십시오' end honforms.ind_hyc = honforms.ind_hyc .. ", " .. honforms.ind_hyc_alt honforms.interrog_hyc = honforms.interrog_hyc .. ", " .. honforms.interrog_hyc_alt for honkey, honform in pairs(honforms) do			if honforms[honkey] ~= '' then honforms[honkey] = format_Korean(honform, phonetic and replace(honform, stem1, phonetic) or honform) end end

if honimperative ~= 'no' then honimperative = [=[ !colspan=2]=] .. grey_bg .. [=[|Imperative ]=]		else honimperative = '' end honorific = [=[ else honorific = honorific_note or "This word is not usually used with an honorific." end
 * ]=] .. honforms.imperative_hrc .. [=[||]=] .. honforms.imperative_hc .. [=[||]=] .. honforms.imperative_hyc .. [=[||]=] .. honforms.imperative_hsc .. [=[

stem_type = consonant_stem and "consonant-stem, " or "vowel-stem, " conjugation_type = stem_type .. conj_text(irregtype or "", "verbs")

if mw.title.getCurrentTitle.nsText == '' then conjugation_type = conjugation_type .. conj_category(irregtype or "", "verbs") end return [=[ Selected forms of the verb ]=] .. format_Korean(word, phonetic and replace(word, stem1, phonetic) or word, true) .. ": " .. conjugation_type .. [=[

]=] .. honorific .. [=[  ]=] end

return export