Mô đun:fo-noun/table
Giao diện
- Trang mô đun này thiếu trang con tài liệu. Xin hãy tạo trang tài liệu này.
- Liên kết hữu ích: trang gốc • trang con của trang gốc • liên kết • nhúng • trường hợp kiểm thử • chỗ thử
local m_links = require("Module:links")
local m_utils = require("Module:utilities")
local lang = require("Module:languages").getByCode("fo")
local export = {}
local vi_case = {
["nominative"] = "danh cách",
["accusative"] = "đối cách",
["dative"] = "dữ cách",
["genitive"] = "sinh cách"
}
local function make_headers(data, wikicode)
if data.defective ~= "p" then
table.insert(wikicode, '! class="outer" colspan=')
table.insert(wikicode, data.defective:find("def") and "1" or "2")
table.insert(wikicode, " | số ít\n")
end
if not data.defective:find("s") then
table.insert(wikicode, '! class="outer" colspan=2 | số nhiều\n')
end
table.insert(wikicode, '|-\n')
--Singular
if data.defective ~= "s_def" and data.defective ~= "p" then
table.insert(wikicode, '! bất định\n')
end
if data.defective ~= "s_indef" and data.defective ~= "p" then
table.insert(wikicode, '! xác định\n')
end
--Plural
if not data.defective:find("s") then
table.insert(wikicode, '! bất định\n! xác định\n')
end
end
local function show_form(form, tag)
if not form then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, term = subform, accel = {form = tag}}))
end
return table.concat(ret, ", ")
end
local function make_case(data, wikicode, case)
local case_short = case:sub(1, 3)
case = vi_case[case]
table.insert(wikicode, '|- \n')
table.insert(wikicode, [=[! [[]=] .. case .. [=[|]=] .. case .. "]]\n")
if data.defective ~= "s_def" and data.defective ~= "p" then
table.insert(wikicode, [[| ]] .. show_form(data.forms[case_short .. "_sg"], case_short .. '|s|indef') .. "\n")
end
if data.defective ~= "s_indef" and data.defective ~= "p" then
table.insert(wikicode, [[| ]] .. show_form(data.forms[case_short .. "_sg_def"], case_short .. '|s|def') .. "\n")
end
if not data.defective:find("s") then
table.insert(wikicode, [[| ]] .. show_form(data.forms[case_short .. "_pl"], case_short .. '|p|indef') .. "\n")
table.insert(wikicode, [[| ]] .. show_form(data.forms[case_short .. "_pl_def"], case_short .. '|p|def') .. "\n")
end
end
function export.make_table(data)
local colspan = {s_indef = "2", s_def = "2", s = "3", p = "3", no = "5"}
local wikicode = {
mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = '-',
palette = 'magenta'
}
}
}
table.insert(wikicode, '! rowspan="2" style="font-weight:normal" | ' .. data.decl_type .. "\n")
make_headers(data, wikicode)
make_case(data, wikicode, "nominative")
make_case(data, wikicode, "accusative")
make_case(data, wikicode, "dative")
make_case(data, wikicode, "genitive")
table.insert(wikicode, mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' })
return table.concat(wikicode)
end
return export