Korean adjective/verb conjugator.
See Template:ko-conj-adj/auto and Template:ko-conj-verb/auto for examples.
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 = '<span style="font-size:90%; color:#888" class="tr">'
function format_Korean(text, rom, horizontal, no_space)
return '<span class="Kore" lang="ko"">' .. text .. "</span>" .. (rom
and (horizontal and (no_space and '' or ' ') .. '(' .. rom_format or '<br>' .. rom_format) ..
m_translit(tostring(rom) ~= "true" and rom or text) ..
'</span>' .. (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 = {
= {
= { name = "ha-irregular", Korean = "하" },
= { name = "reu-irregular", Korean = "르" },
= { name = "reo-irregular", Korean = "러" },
= { name = "s-irregular", Korean = "ㅅ" },
= { name = "p-irregular", Korean = "ㅂ" },
= { name = "h-irregular", Korean = "ㅎ" },
= { name = "determiner-h-irregular", Korean = "ㅎ", extra = "-determiner" },
= { name = "l-irregular", Korean = "ㄹ" },
= { name = "si-irregular", Korean = "시" },
= { name = "i-irregular", Korean = "이" },
= { name = "existential-irregular", Korean = "있/없", rom = "iss/eops" },
},
= {
= { name = "ha-irregular", Korean = "하" },
= { name = "ga-irregular", Korean = "가" },
= { name = "si-irregular", Korean = "시" },
= { name = "o-irregular", Korean = "오" },
= { name = "reu-irregular", Korean = "르" },
= { name = "reo-irregular", Korean = "러" },
= { name = "s-irregular", Korean = "ㅅ" },
= { name = "p-irregular", Korean = "ㅂ" },
= { name = "noh-irregular", Korean = "놓", rom = "noh" },
= { name = "l-irregular", Korean = "ㄹ" },
= { name = "d-irregular", Korean = "ㄷ" },
= { name = "eo-irregular", Korean = "어" },
= { name = "u-irregular", Korean = "우" },
}
}
function conj_text(irregtype, pos)
if irregtype == '' then return 'regular' end
local conj_data = conj_type
return '[[:Category:Korean ' ..
conj_data.name ..
' ' .. pos .. '|' ..
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 '.name .. ' ' .. pos .. ']]'
end
function export.adjective(frame, args)
local args = args or frame:getParent().args
local word = args or mw.title.getCurrentTitle().text
local irreg = args or false
local honorific = args or 'yes'
local phonetic = args and sub(args, 1, -2) or false
local honorific_note = args or nil
local form = args 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 = forms .. ', ' .. 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 ~= '' then
forms = 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 = format_Korean(honform, phonetic and replace(honform, stem1, phonetic) or honform)
end
honorific = [=[
{| border="1" color="#cdcdcd" style="border-collapse:collapse; border:1px solid #555555; background:#F7F0F0; width:100%; text-align:center" class="inflection-table" cellpadding="5"
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Sentence-final forms with honorific''']=] .. (honorific_note or "") .. [=[
|- ]=] .. grey_bg .. [=[
|colspan=2|
!Plain (]=] .. format_Korean("]") .. [=[)
!Informal (]=] .. format_Korean("]") .. [=[)
!Polite (]=] .. format_Korean("]") .. [=[)
!Formal (]=] .. format_Korean("]") .. [=[)
|-
!rowspan=2]=] .. grey_bg .. [=[|Indicative
!]=] .. grey_bg .. [=[|Non-past
|]=] .. honforms.ind_hrc .. [=[
|]=] .. honforms.ind_hc .. [=[
|]=] .. honforms.ind_hyc .. [=[
|]=] .. honforms.ind_hsc .. [=[
|-
!]=] .. grey_bg .. [=[|Past
|]=] .. honforms.ind_hrc_past ..[=[
|]=] .. honforms.ind_hc_past ..[=[
|]=] .. honforms.ind_hyc_past ..[=[
|]=] .. honforms.ind_hsc_past ..[=[
|-
!rowspan=2]=] .. grey_bg .. [=[|Interrogative
!]=] .. grey_bg .. [=[|Non-past
|]=] .. honforms.interrog_hrc .. [=[
|]=] .. honforms.interrog_hc .. [=[
|]=] .. honforms.interrog_hyc .. [=[
|]=] .. honforms.interrog_hsc .. [=[
|-
!]=] .. grey_bg .. [=[|Past
|]=] .. honforms.interrog_hrc_past .. [=[
|]=] .. honforms.interrog_hc_past .. [=[
|]=] .. honforms.interrog_hyc_past .. [=[
|]=] .. honforms.interrog_hsc_past .. [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Assertive
|]=] .. honforms.assert_hrc .. =] .. honforms.assert_hc .. =] .. honforms.assert_hyc .. =] .. honforms.assert_hsc .. [=[
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Connective forms with honorific'''
|-
!colspan=2]=] .. grey_bg .. [=[|Cause/Reason
|]=] .. honforms.cause_hrc .. =] .. honforms.cause_hc .. =] .. honforms.cause_hyc .. =] .. honforms.cause_hsc .. [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Contrast
|]=] .. honforms.contrast_hrc .. =] .. honforms.contrast_hc .. =] .. honforms.contrast_hyc .. [=[||
|-
!colspan=2]=] .. grey_bg .. [=[|Conjunction
|]=] .. honforms.conjunction .. [=[|| || ||
|-
!colspan=2]=] .. grey_bg .. [=[|Condition
|]=] .. honforms.condition_hrc .. =] .. honforms.condition_hc .. [=[|| ||
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Noun and determiner forms with honorific'''
|-
!colspan="2"]=] .. grey_bg.. [=[| Verbal nouns
|]=] .. honforms.vn_um .. =] .. honforms.vn_gi .. [=[
|-
!colspan="2"]=] .. grey_bg.. [=[| Past-tense verbal nouns
|]=] .. honforms.vn_um_past .. =] .. honforms.vn_gi_past .. [=[
|-
!rowspan="2"]=] .. grey_bg.. [=[| Determiners
!]=] .. grey_bg.. [=[|Present
|
|]=] .. honforms.determ_pres .. [=[
|-
!]=] .. grey_bg.. [=[|Future
|
|]=] .. honforms.determ_fut .. [=[
|}]=]
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 [=[
<div class="NavFrame">
<div class="NavHead" style="height:2em"> Selected forms of the adjective ]=] .. format_Korean(word, phonetic and replace(word, stem1, phonetic) or word, true) .. ": " .. conjugation_type .. [=[</div>
<div class="NavContent">
{| border="1" color="#cdcdcd" style="border-collapse:collapse; border:1px solid #555555; background:#F4F7F0; width:100%; text-align:center" class="inflection-table" cellpadding="5"
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Sentence-final forms'''
|-]=] .. grey_bg.. [=[
|colspan=2|
!Formal non-polite<br />(]=] .. format_Korean("]") ..[=[)
!Informal non-polite<br />(]=] .. format_Korean("]") ..[=[)
!Informal polite<br />(]=] .. format_Korean("]") ..[=[)
!Formal polite<br />(]=] .. format_Korean("]") ..[=[)
|-
!rowspan=2]=] .. grey_bg .. [=[|Indicative
!]=] .. grey_bg .. [=[|Non-past
|]=] .. forms.ind_hrc .. [=[
|]=] .. forms.ind_hc .. [=[
|]=] .. forms.ind_hyc .. [=[
|]=] .. forms.ind_hssoc .. [=[
|-
!]=] .. grey_bg .. [=[|Past
|]=] .. forms.ind_hrc_past .. [=[
|]=] .. forms.ind_hc_past .. [=[
|]=] .. forms.ind_hyc_past .. [=[
|]=] .. forms.ind_hssoc_past .. [=[
|-
!rowspan=2]=] .. grey_bg .. [=[|Interrogative
!]=] .. grey_bg .. [=[|Non-past
|]=] .. forms.interrog_hrc .. [=[
|]=] .. forms.interrog_hc .. [=[
|]=] .. forms.interrog_hyc .. [=[
|]=] .. forms.interrog_hssoc .. [=[
|-
!]=] .. grey_bg .. [=[|Past
|]=] .. forms.interrog_hrc_past .. [=[
|]=] .. forms.interrog_hc_past .. [=[
|]=] .. forms.interrog_hyc_past .. [=[
|]=] .. forms.interrog_hssoc_past .. [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Assertive
|]=] .. forms.assert_hrc .. =] .. forms.assert_hc .. =] .. forms.assert_hyc .. =] .. forms.assert_hssoc .. [=[
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Connective forms'''
|-
!colspan=2]=] .. grey_bg .. [=[|Cause/Reason
|]=] .. forms.cause_hrc .. =] .. forms.cause_hc .. =] .. forms.cause_hyc .. =] .. forms.cause_hssoc .. [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Contrast
|]=] .. forms.contrast_hrc .. =] .. forms.contrast_hc .. =] .. forms.contrast_hyc .. [=[||
|-
!colspan=2]=] .. grey_bg .. [=[|Conjunction
|]=] .. forms.conjunction .. [=[|| || ||
|-
!colspan=2]=] .. grey_bg .. [=[|Condition
|]=] .. forms.condition_hrc .. =] .. forms.condition_hc .. [=[|| ||
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Noun and determiner forms'''
|-
!colspan="2"]=] .. grey_bg.. [=[|Verbal nouns
|]=] .. forms.vn_um .. =] .. forms.vn_gi .. [=[
|-
!colspan="2"]=] .. grey_bg.. [=[|Past-tense verbal nouns
|]=] .. forms.vn_um_past .. =] .. forms.vn_gi_past .. [=[
|-
!rowspan="2"]=] .. grey_bg.. [=[|Determiners
!]=] .. grey_bg.. [=[|Present
|
|]=] .. forms.determ_pres .. [=[
|-
!]=] .. grey_bg.. [=[|Future
|
|]=] .. forms.determ_fut .. [=[
|}
]=] .. honorific .. =]
end
function export.verb(frame, args)
local args = args or frame:getParent().args
local word = args or mw.title.getCurrentTitle().text
local irreg = args or false
local reg = args or 'no'
local hortative = args or false
local imperative = args or false
local honimperative = args or false
local phonetic = args and sub(args, 1, -2) or false
local honorific = args or 'yes'
local honorific_note = args or nil
local form = args 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 ~= '' then
forms = format_Korean(form, phonetic and replace(form, stem1, phonetic) or form)
end
end
if hortative ~= 'no' then
hortative = [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Hortative
|]=] .. forms.hortative_hrc .. =] .. forms.hortative_hc .. =] .. forms.hortative_hyc .. =] .. forms.hortative_hssoc .. [=[
]=]
else
hortative = ''
end
if imperative ~= 'no' then
imperative = [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Imperative
|]=] .. (forms.imperative_hrc or "") .. =] .. (forms.imperative_hc or "") .. =] .. forms.imperative_hyc .. =] .. forms.imperative_hssoc .. [=[
]=]
else
imperative = ''
end
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 ~= '' then
honforms = format_Korean(honform, phonetic and replace(honform, stem1, phonetic) or honform)
end
end
if honimperative ~= 'no' then
honimperative = [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Imperative
|]=] .. honforms.imperative_hrc .. =] .. honforms.imperative_hc .. =] .. honforms.imperative_hyc .. =] .. honforms.imperative_hsc .. [=[
]=]
else
honimperative = ''
end
honorific = [=[
{| border="1" color="#cdcdcd" style="border-collapse:collapse; border:1px solid #555555; background:#F7F0F0; width:100%; text-align:center" class="inflection-table" cellpadding="5"
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Sentence-final forms with honorific''']=] .. (honorific_note or "") .. [=[
|-]=] .. grey_bg.. [=[
|colspan=2|
!Formal non-polite<br />(]=] .. format_Korean("]") ..[=[)
!Informal non-polite<br />(]=] .. format_Korean("]") ..[=[)
!Informal polite<br />(]=] .. format_Korean("]") ..[=[)
!Formal polite<br />(]=] .. format_Korean("]") ..[=[)
|-
!rowspan=2]=] .. grey_bg .. [=[|Indicative
!]=] .. grey_bg .. [=[|Non-past
|]=] .. honforms.ind_hrc .. [=[
|]=] .. honforms.ind_hc .. [=[
|]=] .. honforms.ind_hyc .. [=[
|]=] .. honforms.ind_hsc .. [=[
|-
!]=] .. grey_bg .. [=[|Past
|]=] .. honforms.ind_hrc_past .. [=[
|]=] .. honforms.ind_hc_past .. [=[
|]=] .. honforms.ind_hyc_past .. [=[
|]=] .. honforms.ind_hsc_past .. [=[
|-
!rowspan=2]=] .. grey_bg .. [=[|Interrogative
!]=] .. grey_bg .. [=[|Non-past
|]=] .. honforms.interrog_hrc .. [=[
|]=] .. honforms.interrog_hc .. [=[
|]=] .. honforms.interrog_hyc .. [=[
|]=] .. honforms.interrog_hsc .. [=[
|-
!]=] .. grey_bg .. [=[|Past
|]=] .. honforms.interrog_hrc_past .. [=[
|]=] .. honforms.interrog_hc_past .. [=[
|]=] .. honforms.interrog_hyc_past .. [=[
|]=] .. honforms.interrog_hsc_past .. [=[
|-]=] .. honimperative .. [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Assertive
|]=] .. honforms.assert_hrc .. =] .. honforms.assert_hc .. =] .. honforms.assert_hyc .. =] .. honforms.assert_hsc .. [=[
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Connective forms with honorific'''
|-
!colspan=2]=] .. grey_bg .. [=[|Cause/Reason
|]=] .. honforms.cause_hrc .. =] .. honforms.cause_hc .. =] .. honforms.cause_hyc .. =] .. honforms.cause_hsc .. [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Contrast
|]=] .. honforms.contrast_hrc .. =] .. honforms.contrast_hc .. =] .. honforms.contrast_hyc .. [=[||
|-
!colspan=2]=] .. grey_bg .. [=[|Conjunction
|]=] .. honforms.conjunction .. [=[|| || ||
|-
!colspan=2]=] .. grey_bg .. [=[|Condition
|]=] .. honforms.condition_hrc .. =] .. honforms.condition_hc .. [=[|| ||
|-
!colspan=2]=] .. grey_bg .. [=[|Motive
|]=] .. honforms.motive .. [=[|| || ||
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Noun and determiner forms with honorific'''
|-
!colspan="2"]=] .. grey_bg.. [=[| Verbal nouns
|]=] .. honforms.vn_um .. =] .. honforms.vn_gi .. [=[
|-
!colspan="2"]=] .. grey_bg.. [=[| Past-tense verbal nouns
|]=] .. honforms.vn_um_past .. =] .. honforms.vn_gi_past .. [=[
|-
!rowspan="3"]=] .. grey_bg.. [=[| Determiners
!]=] .. grey_bg.. [=[|Past
|]=] .. honforms.determ_past .. [=[
|-
!]=] .. grey_bg.. [=[|Present
|]=] .. honforms.determ_pres .. [=[
|-
!]=] .. grey_bg.. [=[|Future
|]=] .. honforms.determ_fut .. [=[
|}]=]
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 "", "verbs")
if mw.title.getCurrentTitle().nsText == '' then
conjugation_type = conjugation_type .. conj_category(irregtype or "", "verbs")
end
return [=[
<div class="NavFrame">
<div class="NavHead" style="height:2em"> Selected forms of the verb ]=] .. format_Korean(word, phonetic and replace(word, stem1, phonetic) or word, true) .. ": " .. conjugation_type .. [=[</div>
<div class="NavContent">
{| border="1" color="#cdcdcd" style="border-collapse:collapse; border:1px solid #555555; background:#F4F7F0; width:100%; text-align:center" class="inflection-table" cellpadding="5"
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Sentence-final forms'''
|-]=] .. grey_bg.. [=[
|colspan=2|
!Formal non-polite<br />(]=] .. format_Korean("]") ..[=[)
!Informal non-polite<br />(]=] .. format_Korean("]") ..[=[)
!Informal polite<br />(]=] .. format_Korean("]") ..[=[)
!Formal polite<br />(]=] .. format_Korean("]") ..[=[)
|-
!rowspan=2]=] .. grey_bg .. [=[|Indicative
!]=] .. grey_bg .. [=[|Non-past
|]=] .. forms.ind_hrc .. [=[
|]=] .. forms.ind_hc .. [=[
|]=] .. forms.ind_hyc .. [=[
|]=] .. forms.ind_hssoc .. [=[
|-
!]=] .. grey_bg .. [=[|Past
|]=] .. forms.ind_hrc_past .. [=[
|]=] .. forms.ind_hc_past .. [=[
|]=] .. forms.ind_hyc_past .. [=[
|]=] .. forms.ind_hssoc_past .. [=[
|-
!rowspan=2]=] .. grey_bg .. [=[|Interrogative
!]=] .. grey_bg .. [=[|Non-past
|]=] .. forms.interrog_hrc .. [=[
|]=] .. forms.interrog_hc .. [=[
|]=] .. forms.interrog_hyc .. [=[
|]=] .. forms.interrog_hssoc .. [=[
|-
!]=] .. grey_bg .. [=[|Past
|]=] .. forms.interrog_hrc_past .. [=[
|]=] .. forms.interrog_hc_past .. [=[
|]=] .. forms.interrog_hyc_past .. [=[
|]=] .. forms.interrog_hssoc_past .. [=[
]=] .. hortative .. [=[
]=] .. imperative .. [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Assertive
|]=] .. forms.assert_hrc .. =] .. forms.assert_hc .. =] .. forms.assert_hyc .. =] .. forms.assert_hssoc .. [=[
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Connective forms'''
|-
!colspan=2]=] .. grey_bg .. [=[|Cause/Reason
|]=] .. forms.cause_hrc .. =] .. forms.cause_hc .. =] .. forms.cause_hyc .. =] .. forms.cause_hssoc .. [=[
|-
!colspan=2]=] .. grey_bg .. [=[|Contrast
|]=] .. forms.contrast_hrc .. =] .. forms.contrast_hc .. =] .. forms.contrast_hyc .. [=[||
|-
!colspan=2]=] .. grey_bg .. [=[|Conjunction
|]=] .. forms.conjunction .. [=[|| || ||
|-
!colspan=2]=] .. grey_bg .. [=[|Condition
|]=] .. forms.condition_hrc .. =] .. forms.condition_hc .. [=[|| ||
|-
!colspan=2]=] .. grey_bg .. [=[|Motive
|]=] .. forms.motive .. [=[|| || ||
|-
!colspan="100%" align="center" style="background:#C0C0C0" |'''Noun and determiner forms'''
|-
!colspan="2"]=] .. grey_bg.. [=[|Verbal nouns
|]=] .. forms.vn_um .. =] .. forms.vn_gi .. [=[
|-
!colspan="2"]=] .. grey_bg.. [=[|Past-tense verbal nouns
|]=] .. forms.vn_um_past .. =] .. forms.vn_gi_past .. [=[
|-
!rowspan="3"]=] .. grey_bg.. [=[|Determiners
!]=] .. grey_bg.. [=[|Past
|]=] .. forms.determ_past .. [=[
|-
!]=] .. grey_bg.. [=[|Present
|]=] .. forms.determ_pres .. [=[
|-
!]=] .. grey_bg.. [=[|Future
|]=] .. forms.determ_fut .. [=[
|}
]=] .. honorific .. [=[
</div></div>]=]
end
return export