Module:siwa-noun: Difference between revisions

No edit summary
No edit summary
Line 90: Line 90:
end
end


local data = {forms = {}, categories = {}}
export.data = {forms = {}, categories = {}}
data.head = parent_args["head"] or word
export.data.head = parent_args["head"] or word
data.proper = parent_args["proper"] and true or false
export.data.proper = parent_args["proper"] and true or false
data.nocat = parent_args["nocat"] and true or false
export.data.nocat = parent_args["nocat"] and true or false
data.sv = sv or error("Parameter 2 must be the word's stressed vowel")
export.data.sv = sv or error("Parameter 2 must be the word's stressed vowel")
data.g = g
export.data.g = g
data.decl_type = decl_type
export.data.decl_type = decl_type
data.q = detect_quality(data.head, data.sv)
export.data.q = detect_quality(export.data.head, export.data.sv)
-- Generate the forms
-- Generate the forms
Line 108: Line 108:
if g == "i" then
if g == "i" then
data.forms["m"][1] = parent_args["m"] or data.forms["m"][1]
export.data.forms["m"][1] = parent_args["m"] or export.data.forms["m"][1]
else
else
for _, form in ipairs({"m_sg", "u_pl", "m_pl"}) do
for _, form in ipairs({"m_sg", "u_pl", "m_pl"}) do
data.forms[form][1] = parent_args[form] or data.forms[form][1]
export.data.forms[form][1] = parent_args[form] or export.data.forms[form][1]
end
end
end
end
-- for headword module
export.headinfl = g == "i" and data.forms["m"] or data.forms["m_sg"]
-- Make the table
-- Make the table
return make_table(data)
return make_table(data)
end
end
export.headinfl = g == "i" and export.data.forms["m"] or export.data.forms["m_sg"]


function make_table(data)
function make_table(data)
Line 149: Line 148:
local function repl(param)
local function repl(param)
if param == "decl_type" then
if param == "decl_type" then
return data.decl_type
return export.data.decl_type
elseif param == "title" then
elseif param == "title" then
return NAMESPACE == "Template" and "sivi" or PAGENAME
return NAMESPACE == "Template" and "sivi" or PAGENAME
Line 155: Line 154:
return "sivi"
return "sivi"
elseif param == "word" then
elseif param == "word" then
return data.head
return export.data.head
elseif param == "gender" then
elseif param == "gender" then
return (data.g == "i" and "inanimate" or "animate")
return (export.data.g == "i" and "inanimate" or "animate")
else
else
return show_form(data.forms[param])
return show_form(export.data.forms[param])
end
end
end
end
Line 169: Line 168:
local ret = {}
local ret = {}
if data.g == "i" then
if export.data.g == "i" then
for _, case in ipairs(cases) do
for _, case in ipairs(cases) do
local case_short = sub(case, 1, 3)
local case_short = sub(case, 1, 3)
Line 177: Line 176:
table.insert(ret, "|-\n")
table.insert(ret, "|-\n")
for _, single in ipairs(all) do
for _, single in ipairs(all) do
table.insert(ret, "| " .. link(show_form(data.forms[single])) .. "\n")
table.insert(ret, "| " .. link(show_form(export.data.forms[single])) .. "\n")
end
end
else
else
Line 183: Line 182:
table.insert(ret, "|- \n! " .. number .. "\n")
table.insert(ret, "|- \n! " .. number .. "\n")
for _, single in ipairs(all) do
for _, single in ipairs(all) do
table.insert(ret, "| " .. link(show_form(data.forms[single .. "_" .. numbers_short[n]])) .. "\n")
table.insert(ret, "| " .. link(show_form(export.data.forms[single .. "_" .. numbers_short[n]])) .. "\n")
end
end
end
end
Line 193: Line 192:
local navframe = [=[
local navframe = [=[
<div class="mw-collapsible" style="border-collapse: collapse; margin: 0px 0px -1px 0px; padding: 2px; border: 1px solid #aaaaaa; text-align: center; font-size: 95%; overflow: auto; width: 70%;">
<div class="mw-collapsible" style="border-collapse: collapse; margin: 0px 0px -1px 0px; padding: 2px; border: 1px solid #aaaaaa; text-align: center; font-size: 95%; overflow: auto; width: 70%;">
<div style="min-height: 1.6em; font-weight:bold; font-size: 100%; text-align: left; background-color:#efefef; padding-left: 10px; background-image: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#DFDFDF), color-stop(0.6, #E3E3E3)); background-image: -moz-linear-gradient(top, #EFEFEF, #E3E3E3 60%, #DFDFDF);  background-image: -o-linear-gradient(top, #EFEFEF, #E3E3E3 60%, #DFDFDF);">''{{{title}}}'' — {{{gender}}} noun]=] .. (data.g == "i" and ", ''{{{decl_type}}}''-declension" or "") .. [=[
<div style="min-height: 1.6em; font-weight:bold; font-size: 100%; text-align: left; background-color:#efefef; padding-left: 10px; background-image: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#DFDFDF), color-stop(0.6, #E3E3E3)); background-image: -moz-linear-gradient(top, #EFEFEF, #E3E3E3 60%, #DFDFDF);  background-image: -o-linear-gradient(top, #EFEFEF, #E3E3E3 60%, #DFDFDF);">''{{{title}}}'' — {{{gender}}} noun]=] .. (export.data.g == "i" and ", ''{{{decl_type}}}''-declension" or "") .. [=[
</div>
</div>
<div class="mw-collapsible-content" style="font-size: 100%;">
<div class="mw-collapsible-content" style="font-size: 100%;">
Line 215: Line 214:
|}</div></div>]=]
|}</div></div>]=]


local wikicode = navframe .. (data.g == "i" and inanimate or animate)
local wikicode = navframe .. (export.data.g == "i" and inanimate or animate)


return gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl) .. (not data.nocat and m_u.format_categories(data.categories, lang) or "")
return gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl) .. (not export.data.nocat and m_u.format_categories(export.data.categories, lang) or "")
end
end


return export
return export