Module:pa-decl-auto

local export = {} local m_translit = require("Module:pa-translit")

local gsub = mw.ustring.gsub local sub = mw.ustring.sub local match = mw.ustring.match local len = mw.ustring.len

local function wordify(text) local words, translits = {}, {} for word in mw.text.split(text, ",") do		table.insert(words, pa_format(word)) table.insert(translits, m_translit.tr(word, "pa", "Guru")) end text = table.contact(words, ", ") .. " " .. table.concat(translits, ", ") .. " "	return text end

function pa_format(text) text = (' %s '):format(text) return text end

-- masculine ends in ਆ-ਾ local function decline(word, gender) if gender == "m" then if match(word, "ਆਾ$") then local stem = gsub(word, "ਆਾ$", "") s_obl, s_voc, p_nom, p_obl, p_voc = stem .. "ੇ", stem .. "ਿਆ", stem .. "ੇ", stem .. "ਿਆੰ", stem .. "ਿਓ" else s_obl, s_voc, p_nom, p_obl, p_voc = word .. "ੇ", word .. "ਿਆ", word .. "ੇ", word .. "ਿਆੰ", word .. "ਿਓ" end end if gender == "f" then s_obl, s_voc, p_nom, p_obl, p_voc = word, word .. "ੇ", word .. "ਆੰ", word .. "ਆੰ", word .. "ਓ" end return s_obl, s_voc, p_nom, p_obl, p_voc end

local function make_row(case, s, p)	local data = {}

table.insert(data, [=[		|- class="vsHide"		| style="background:#eff7ff" | ]=] .. case .. "") table.insert(data, '|' .. wordify(s)) table.insert(data, '|' .. wordify(p))

return table.concat(data, "\n") end

function export.show(frame) local args = frame:getParent.args local word = args[1] or mw.title.getCurrentTitle.text local gender = args[2] or args["g"]

if gender ~= "m" and gender ~= "f" then error("Not a valid gender; must be 'm' or 'f'.") end

local s_obl, s_voc, p_nom, p_obl, p_voc = decline(word, gender) local s_nom = word local data = {'{| class="inflection-table vsSwitcher" data-toggle-category="inflection" style="background:#F9F9F9; text-align:center; border: 1px solid #CCC; width: 35em"'} table.insert(data, '|- style="background: #d9ebff;"') table.insert(data, '! class="vsToggleElement" style="text-align: left;" colspan="3" | Declension of ' .. pa_format(word)) table.insert(data, [=[		|- class="vsHide"		! style="background:#eff7ff" |		! style="background:#eff7ff" | Singular		! style="background:#eff7ff" | Plural]=]) table.insert(data, make_row('Direct', s_nom, p_nom)) table.insert(data, make_row('Oblique', s_obl, p_obl)) table.insert(data, make_row('Vocative', s_voc, p_voc)) table.insert(data, "|}") return table.concat(data, "\n") end

return export