Модуль:ат атооч
Көрүнүш
Documentation for this module may be created at Модуль:ат атооч/doc
local p = {}
-- Дизайн үчүн түстөр (Зат атооч модулундагыдай)
local h_bg = '#DEDEDE'
local t_bg = '#F9F9F9'
local b_color = '#aaaaaa'
local i_border = '1px solid #ffffff'
-- Жактама жана шилтеме ат атоочторунун жөндөлүшү
local declension_data = {
['мен'] = {nom='мен', gen='менин', dat='мага', acc='мени', loc='менде', abl='менден'},
['сен'] = {nom='сен', gen='сенин', dat='сага', acc='сени', loc='сенде', abl='сенден'},
['ал'] = {nom='ал', gen='анын', dat='ага', acc='аны', loc='анда', abl='андан'},
['биз'] = {nom='биз', gen='биздин', dat='бизге', acc='бизди', loc='бизде', abl='бизден'},
['силер'] = {nom='силер', gen='силердин', dat='силерге', acc='силерди', loc='силерде', abl='силерден'},
['сиз'] = {nom='сиз', gen='сиздин', dat='сизге', acc='сизди', loc='сизде', abl='сизден'},
['сиздер'] = {nom='сиздер', gen='сиздердин', dat='сиздерге', acc='сиздерди', loc='сиздерде', abl='сиздерден'},
['алар'] = {nom='алар', gen='алардын', dat='аларга', acc='аларды', loc='аларда', abl='алардан'},
-- Шилтеме ат атоочтору (жекелик жана көптүк формалары менен)
['бул'] = {
sg = {nom='бул', gen='бунун (мунун)', dat='буга', acc='буну (муну)', loc='бунда', abl='бундан'},
pl = {nom='булар', gen='булардын', dat='буларга', acc='буларды', loc='буларда', abl='булардан'}
},
['ошол'] = {
sg = {nom='ошол', gen='ошонун', dat='ошого', acc='ошону', loc='ошондо', abl='ошондон'},
pl = {nom='ошолор', gen='ошолордун', dat='ошолорго', acc='ошолорду', loc='ошолордо', abl='ошолордон'}
},
['ушул'] = {
sg = {nom='ушул', gen='ушунун', dat='ушуга', acc='ушуну', loc='ушунда', abl='ушундан'},
pl = {nom='ушулар', gen='ушулардын', dat='ушуларга', acc='ушуларды', loc='ушуларда', abl='ушулардан'}
}
}
local function make_link(term, display)
return "[[" .. term .. "|" .. (display or term) .. "]]"
end
-- Бүктөлмө кутуча (Зат атооч модулунан алынды)
local function wrap_box(title, content)
local res = '\n<div class="mw-collapsible mw-collapsed" style="width:65%; border:1px solid ' .. b_color .. '; margin-top:10px; font-size:100%;">'
res = res .. '<div style="background:#eeeeee; padding:4px 10px; font-weight:bold; text-align:left; border-bottom:1px solid ' .. b_color .. ';">' .. title .. '</div>'
res = res .. '<div class="mw-collapsible-content" style="background:' .. t_bg .. ';">\n'
res = res .. '{| style="width:100%; text-align:center; border-collapse:collapse; background:' .. t_bg .. '; table-layout: fixed;"\n' .. content .. '\n|}\n'
res = res .. '</div>\n</div>'
return res
end
function p.render(frame)
local args = frame.args
local word = args['сөз'] or mw.title.getCurrentTitle().text
local type_val = mw.ustring.lower(args['түрү'] or "")
local syllables = args['муундар'] or ""
local root = args['уңгу'] or ""
local audio = args['аудио'] or ""
local ipa_word = (args['эфа'] and args['эфа'] ~= "") and args['эфа'] or word
local ipa_part = frame:preprocess('{{#invoke:эфа|render|' .. ipa_word .. '}}')
local type_map = {
['жактама'] = '[[жактама ат атооч|Жактама ат атооч]]',
['шилтеме'] = '[[шилтеме ат атооч|Шилтеме ат атооч]]',
['сурама'] = '[[сурама ат атооч|Сурама ат атооч]]',
['тангыч'] = '[[тангыч ат атооч|Тангыч ат атооч]]',
['белгисиз'] = '[[белгисиз ат атооч|Белгисиз ат атооч]]',
['өздүк'] = '[[өздүк ат атооч|Өздүк ат атооч]]',
['жалпылама'] = '[[жалпылама ат атооч|Жалпылама ат атооч]]'
}
local res = '<div style="margin-bottom: 20px; font-size: 100%; line-height: 1.6;">'
-- 1. БАШКЫ СӨЗ
res = res .. "'''" .. word .. "'''\n\n"
-- 2. СӨЗ ТҮРКҮМҮ
res = res .. "'''[[ат атооч|Ат атооч]]'''\n"
if syllables ~= "" then res = res .. "* Муундарга бөлүнүшү: '''" .. mw.ustring.gsub(syllables, "|", "-") .. "'''\n" end
if root ~= "" then res = res .. "* Уңгу: '''-" .. root .. "-'''\n" end
if ipa_part ~= "" or audio ~= "" then
res = res .. "* " .. ipa_part
if audio ~= "" then res = res .. " " .. frame:preprocess('{{Ky-аудио|' .. audio .. '}}') end
res = res .. "\n"
end
if type_map[type_val] then
res = res .. "* Түрү: " .. type_map[type_val] .. "\n"
end
res = res .. "</div>"
-- ТАБЛИЦА ТҮЗҮҮ (Зат атооч дизайны менен)
if (type_val == 'жактама' or type_val == 'шилтеме') and declension_data[word] then
local data = declension_data[word]
local content = "|-\n"
content = content .. '! style="width:40%; background:' .. h_bg .. '; border:' .. i_border .. ';" | жөндөмө\n'
if data.sg then
-- Бул шилтеме ат атоочтору үчүн (жекелик жана көптүк)
content = content .. '! style="width:40%; background:' .. h_bg .. '; border:' .. i_border .. ';" | Жекелик\n'
content = content .. '! style="width:40%; background:' .. h_bg .. '; border:' .. i_border .. ';" | Көптүк\n'
local cases = {{"атооч","nom"},{"илик","gen"},{"барыш","dat"},{"табыш","acc"},{"жатыш","loc"},{"чыгыш","abl"}}
for _, c in ipairs(cases) do
content = content .. "|-\n"
content = content .. "! style=\"background:" .. h_bg .. "; border:" .. i_border .. ";\" | " .. make_link(c[1]) .. "\n"
content = content .. "| style=\"border:" .. i_border .. ";\" | " .. data.sg[c[2]] .. "\n"
content = content .. "| style=\"border:" .. i_border .. ";\" | " .. data.pl[c[2]] .. "\n"
end
else
-- Бул жактама ат атоочтору үчүн (бир эле форма)
content = content .. '! style="width:60%; background:' .. h_bg .. '; border:' .. i_border .. ';" | ат атооч\n'
local cases = {{"атооч","nom"},{"илик","gen"},{"барыш","dat"},{"табыш","acc"},{"жатыш","loc"},{"чыгыш","abl"}}
for _, c in ipairs(cases) do
content = content .. "|-\n"
content = content .. "! style=\"background:" .. h_bg .. "; border:" .. i_border .. ";\" | " .. make_link(c[1]) .. "\n"
content = content .. "| style=\"border:" .. i_border .. ";\" | " .. data[c[2]] .. "\n"
end
end
res = res .. wrap_box(word .. " сөзүнүн жөндөлүшү", content)
end
res = res .. "[[Категория:Кыргыз тили]] [[Категория:Кыргыз ат атоочтор]]"
return res
end
return p