local p = {} local linker = require('Module:nn-link') function p.main(frame) word = frame:preprocess('{{PAGENAME}}') g1 = frame.args[1]; g2 = frame.args[2] g3 = frame.args[3] args = frame:getParent().args length = word:len() if args[1] and args[1] ~= '' then root = args[1] elseif word:find('e$') then root = word:sub(1, length-1) else root = word end suffix = {m = 'en', f = 'a', n = 'et'} gender_text = { m = "<span class=\"gender m\" title=\"masculine gender\">''m<span class=\"gender-period\">.</span>''", f = '<span class="gender f" title="feminine gender">\'\'f<span class="gender-period">.</span>\'\'', n = '<span class="gender n" title="neuter gender">\'\'n<span class="gender-period">.</span>\'\''} all_genders = gender_text[g1] all_forms = linker.link(word, root .. suffix[g1]) if g2 and g3 then all_genders = all_genders .. ', ' .. gender_text[g2] .. ' and ' .. gender_text[g3] all_forms = all_forms .. '/' .. linker.link(word, root .. suffix[g2]) .. '/' .. linker.link(word, root .. suffix[g3]) elseif g2 then all_genders = all_genders .. ' and ' .. gender_text[g2] all_forms = all_forms .. '/' .. linker.link(word, root .. suffix[g2]) end text = "'''" .. word .. "''' " .. all_genders .. " (''definite singular'' " .. all_forms .. "; ''[[Appendix:Glossary#uncountable|uncountable]]'')" return text end return p