Module:ar-verb Jul 2nd 2013, 23:49, by Atitarev | | Line 440: | Line 440: | | end | | end | | end | | end | | + | end | | + | | | + | -- initialise forms_tr to "" using form_tr | | + | for key, form_tr in pairs(forms_tr) do | | + | -- check for empty strings and nil's | | + | if form_tr == "" or not form_tr then | | + | forms_tr[key] = "" | | + | end | | end | | end | | | | |
local com = require("Module:ar-common") local translit = require("Module:ar-translit") local export = {} local conjugations = {} local alif = "ا" local dia = { s = "ْ", a = "َ", i = "ِ", u = "ُ", sh_a = "َّ", sh_i = "ِّ", sh_u = "ُّ" } local translit = { ["ب"] = "b", ["ت"] = "t", ["ث"] = "ṯ", ["ج"] = "j", ["ح"] = "ḥ", ["خ"] = "x", ["د"] = "d", ["ذ"] = "ḏ", ["ر"] = "r", ["ز"] = "z", ["س"] = "s", ["ش"] = "š", ["ص"] = "ṣ", ["ض"] = "ḍ", ["ط"] = "ṭ", ["ظ"] = "ẓ", ["ع"] = "ʿ", ["غ"] = "ğ", ["ف"] = "f", ["ق"] = "q", ["ك"] = "k", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["ه"] = "h" } -- Within this module, conjugations are the functions that do the actual -- conjugating by creating the forms of a basic verb. -- They are defined further down. local conjugations = {} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local conj_type = frame.args[1] or error("Conjugation type has not been specified. Please pass parameter 1 to the module invocation") local args = frame:getParent().args PAGENAME = mw.title.getCurrentTitle().text NAMESPACE = mw.title.getCurrentTitle().nsText --if this named parameter passed, make the verb intransitive, passive forms don't exist local intrans = args["intrans"] local forms, forms_tr, title, categories if conjugations[conj_type] then forms, title, categories, forms_tr = conjugations[conj_type](args) else error("Unknown conjugation type '" .. conj_type .. "'") end -- transitive/intransitive if intrans then table.insert(categories, "Arabic intransitive verbs") else table.insert(categories, "Arabic transitive verbs") end local ret = "" if NAMESPACE == "" then local sort_key = com.sort_key(PAGENAME) for key, cat in ipairs(categories) do ret = ret .. "[[Category:" .. cat .. "|" .. sort_key .. "]]" end end return make_table(forms, forms_tr, title, intrans) .. ret -- for testing forms only --return test_forms(forms, title, intrans) .. ret end -- Conjugation functions conjugations["I"] = function(args) local forms, forms_tr = {}, {} local categories = {"Arabic form-I verbs"} local title = "form I" -- for sound verbs in form I need to provide three radical consonants and two vowels - perfective and imperective local rad1 = args[1] or "ف" local rad2 = args[2] or "ع" local rad3 = args[3] or "ل" local pf_vowel = args[4] or "a" local impf_vowel = args[5] or "a" -- Verbal nouns (maṣādir) for form I are unpredictable and have to be supplied forms["vn"] = args["vn"] or "" forms["vn2"] = args["vn2"] or "" --e.g. k, t, b for ك ت ب local rad1_tr, rad2_tr, rad3_tr = translit[rad1], translit[rad2], translit[rad3] -- will only need to attach past stem ending to this variable local past_stem = rad1 .. dia["a"] .. rad2 .. dia[pf_vowel] .. rad3 local past_stem_tr = rad1_tr .. "a" .. rad2_tr .. pf_vowel .. rad3_tr local pres_stem = rad1 .. dia.s .. rad2 .. dia[impf_vowel] .. rad3 local pres_stem_tr = rad1_tr .. rad2_tr .. impf_vowel .. rad3_tr local subj_stem = pres_stem local subj_stem_tr = pres_stem_tr local juss_stem = pres_stem local juss_stem_tr = pres_stem_tr local ps_perf_stem = rad1 .. dia.u .. rad2 .. dia.i .. rad3 local ps_perf_stem_tr = rad1_tr .. "u" .. rad2_tr .. "i" .. rad3_tr local ps_imperf_stem = rad1 .. dia.u .. rad2 .. dia.a .. rad3 local ps_imperf_stem_tr = rad1_tr .. "u" .. rad2_tr .. "a" .. rad3_tr local ps_subj_stem = ps_imperf_stem local ps_subj_stem_tr = ps_imperf_stem_tr local ps_juss_stem = ps_imperf_stem local ps_juss_stem_tr = ps_imperf_stem_tr local imper_vowel = "a" if impf_vowel == "a" or impf_vowel == "i" then imper_vowel = "i" elseif impf_vowel == "u" then imper_vowel = "u" end local imper_stem = alif .. dia[imper_vowel] .. rad1 .. rad2 .. dia[impf_vowel] .. rad3 local imper_stem_tr = imper_vowel .. rad1_tr .. rad2_tr .. impf_vowel .. rad3_tr -- make forms export.perfective_conj(forms, past_stem) export.perfective_conj_tr(forms_tr, past_stem_tr) export.imperfective_conj(forms, pres_stem) export.subjunctive_conj(forms, subj_stem) export.jussive_conj(forms, juss_stem) export.pass_perfective_conj(forms, ps_perf_stem) export.pass_imperfective_conj(forms, ps_imperf_stem) export.pass_subjunctive_conj(forms, ps_subj_stem) export.pass_jussive_conj(forms, ps_juss_stem) export.make_imperative(forms, imper_stem) -- to do forms["ap"] = "" forms["pp"] = "" return forms, title, categories, forms_tr end -- functions to add ending to stems -- can be reused for all perfective forms with sound endings function export.perfective_conj(forms, past_stem) -- singular forms["3sm-perf"] = past_stem .. dia.a forms["3sf-perf"] = past_stem .. dia.a .. "تْ" forms["2sm-perf"] = past_stem .. dia.s .. "تَ" forms["2sf-perf"] = past_stem .. dia.s .. "تِ" forms["1s-perf"] = past_stem .. dia.s .. "تُ" --dual forms["3dm-perf"] = past_stem .. dia.a .. "ا" forms["3df-perf"] = past_stem .. dia.a .. "تَا" forms["2d-perf"] = past_stem .. dia.s .. "تُمَا" -- plural forms["3pm-perf"] = past_stem .. dia.u .. "وا" forms["3pf-perf"] = past_stem .. dia.s .. "نَ" forms["2pm-perf"] = past_stem .. dia.s .. "تُمْ" forms["2pf-perf"] = past_stem .. dia.s .. "تُنَّ" forms["1p-perf"] = past_stem .. dia.s .. "نَا" end function export.perfective_conj_tr(forms_tr, past_stem_tr) -- singular forms_tr["3sm-perf"] = past_stem_tr .. "a" forms_tr["3sf-perf"] = past_stem_tr .. "at" forms_tr["2sm-perf"] = past_stem_tr .. "ta" forms_tr["2sf-perf"] = past_stem_tr .. "ti" forms_tr["1s-perf"] = past_stem_tr .. "tu" --dual forms_tr["3dm-perf"] = past_stem_tr .. "ā" forms_tr["3df-perf"] = past_stem_tr .. "atā" forms_tr["2d-perf"] = past_stem_tr .. "tumā" -- plural forms_tr["3pm-perf"] = past_stem_tr .. "ū" forms_tr["3pf-perf"] = past_stem_tr .. "na" forms_tr["2pm-perf"] = past_stem_tr .. "tum" forms_tr["2pf-perf"] = past_stem_tr .. "tunna" forms_tr["1p-perf"] = past_stem_tr .. "nā" end -- can be reused for all imperfective forms with sound endings function export.imperfective_conj(forms, pres_stem) -- singular forms["3sm-impf"] = "يَ" .. pres_stem .. dia.u forms["3sf-impf"] = "تَ" .. pres_stem .. dia.u forms["2sm-impf"] = "تَ" .. pres_stem .. dia.u forms["2sf-impf"] = "تَ" .. pres_stem .. dia.i .. "ينَ" forms["1s-impf"] = "أَ" .. pres_stem .. dia.u --dual forms["3dm-impf"] = "يَ" .. pres_stem .. dia.a .. "انِ" forms["3df-impf"] = "تَ" .. pres_stem .. dia.a .. "انِ" forms["2d-impf"] = "تَ" .. pres_stem .. dia.a .. "انِ" -- plural forms["3pm-impf"] = "يَ" .. pres_stem .. dia.u .. "ونَ" forms["3pf-impf"] = "يَ" .. pres_stem .. dia.s .. "نَ" forms["2pm-impf"] = "تَ" .. pres_stem .. dia.u .. "ونَ" forms["2pf-impf"] = "تَ" .. pres_stem .. dia.s .. "نَ" forms["1p-impf"] = "نَ" .. pres_stem .. dia.u end -- can be reused for all subjunctive forms with sound endings function export.subjunctive_conj(forms, subj_stem) -- singular forms["3sm-subj"] = "يَ" .. subj_stem .. dia.a forms["3sf-subj"] = "تَ" .. subj_stem .. dia.a forms["2sm-subj"] = "تَ" .. subj_stem .. dia.a forms["2sf-subj"] = "تَ" .. subj_stem .. dia.i .. "ي" forms["1s-subj"] = "أَ" .. subj_stem .. dia.a --dual forms["3dm-subj"] = "يَ" .. subj_stem .. dia.a .. "ا" forms["3df-subj"] = "تَ" .. subj_stem .. dia.a .. "ا" forms["2d-subj"] = "تَ" .. subj_stem .. dia.a .. "ا" -- plural forms["3pm-subj"] = "يَ" .. subj_stem .. dia.u .. "و" forms["3pf-subj"] = "يَ" .. subj_stem .. dia.s .. "نَ" forms["2pm-subj"] = "تَ" .. subj_stem .. dia.u .. "و" forms["2pf-subj"] = "تَ" .. subj_stem .. dia.s .. "نَ" forms["1p-subj"] = "نَ" .. subj_stem .. dia.a end -- can be reused for all jussive forms with sound endings function export.jussive_conj(forms, juss_stem) -- singular forms["3sm-juss"] = "يَ" .. juss_stem .. dia.s forms["3sf-juss"] = "تَ" .. juss_stem .. dia.s forms["2sm-juss"] = "تَ" .. juss_stem .. dia.s forms["2sf-juss"] = "تَ" .. juss_stem .. dia.i .. "ي" forms["1s-juss"] = "أَ" .. juss_stem .. dia.s --dual forms["3dm-juss"] = "يَ" .. juss_stem .. dia.a .. "ا" forms["3df-juss"] = "تَ" .. juss_stem .. dia.a .. "ا" forms["2d-juss"] = "تَ" .. juss_stem .. dia.a .. "ا" -- plural forms["3pm-juss"] = "يَ" .. juss_stem .. dia.u .. "و" forms["3pf-juss"] = "يَ" .. juss_stem .. dia.s .. "نَ" forms["2pm-juss"] = "تَ" .. juss_stem .. dia.u .. "و" forms["2pf-juss"] = "تَ" .. juss_stem .. dia.s .. "نَ" forms["1p-juss"] = "نَ" .. juss_stem .. dia.s end -- can be reused for all passive perfective forms with sound endings function export.pass_perfective_conj(forms, ps_perf_stem) -- singular forms["3sm-ps-perf"] = ps_perf_stem .. dia.a forms["3sf-ps-perf"] = ps_perf_stem .. dia.a .. "تْ" forms["2sm-ps-perf"] = ps_perf_stem .. dia.s .. "تَ" forms["2sf-ps-perf"] = ps_perf_stem .. dia.s .. "تِ" forms["1s-ps-perf"] = ps_perf_stem .. dia.s .. "تُ" --dual forms["3dm-ps-perf"] = ps_perf_stem .. dia.a .. "ا" forms["3df-ps-perf"] = ps_perf_stem .. dia.a .. "تَا" forms["2d-ps-perf"] = ps_perf_stem .. dia.s .. "تُمَا" -- plural forms["3pm-ps-perf"] = ps_perf_stem .. dia.u .. "وا" forms["3pf-ps-perf"] = ps_perf_stem .. dia.s .. "نَ" forms["2pm-ps-perf"] = ps_perf_stem .. dia.s .. "تُمْ" forms["2pf-ps-perf"] = ps_perf_stem .. dia.s .. "تُنَّ" forms["1p-ps-perf"] = ps_perf_stem .. dia.s .. "نَا" end -- can be reused for all passive imperfective forms with sound endings function export.pass_imperfective_conj(forms, ps_imperf_stem) -- singular forms["3sm-ps-impf"] = "يَ" .. ps_imperf_stem .. dia.u forms["3sf-ps-impf"] = "تَ" .. ps_imperf_stem .. dia.u forms["2sm-ps-impf"] = "تَ" .. ps_imperf_stem .. dia.u forms["2sf-ps-impf"] = "تَ" .. ps_imperf_stem .. dia.i .. "ينَ" forms["1s-ps-impf"] = "أَ" .. ps_imperf_stem .. dia.u --dual forms["3dm-ps-impf"] = "يَ" .. ps_imperf_stem .. dia.a .. "انِ" forms["3df-ps-impf"] = "تَ" .. ps_imperf_stem .. dia.a .. "انِ" forms["2d-ps-impf"] = "تَ" .. ps_imperf_stem .. dia.a .. "انِ" -- plural forms["3pm-ps-impf"] = "يَ" .. ps_imperf_stem .. dia.u .. "ونَ" forms["3pf-ps-impf"] = "يَ" .. ps_imperf_stem .. dia.s .. "نَ" forms["2pm-ps-impf"] = "تَ" .. ps_imperf_stem .. dia.u .. "ونَ" forms["2pf-ps-impf"] = "تَ" .. ps_imperf_stem .. dia.s .. "نَ" forms["1p-ps-impf"] = "نَ" .. ps_imperf_stem .. dia.u end -- can be reused for all passive subjunctive forms with sound endings function export.pass_subjunctive_conj(forms, ps_subj_stem) -- singular forms["3sm-ps-subj"] = "يَ" .. ps_subj_stem .. dia.a forms["3sf-ps-subj"] = "تَ" .. ps_subj_stem .. dia.a forms["2sm-ps-subj"] = "تَ" .. ps_subj_stem .. dia.a forms["2sf-ps-subj"] = "تَ" .. ps_subj_stem .. dia.i .. "ي" forms["1s-ps-subj"] = "أَ" .. ps_subj_stem .. dia.a --dual forms["3dm-ps-subj"] = "يَ" .. ps_subj_stem .. dia.a .. "ا" forms["3df-ps-subj"] = "تَ" .. ps_subj_stem .. dia.a .. "ا" forms["2d-ps-subj"] = "تَ" .. ps_subj_stem .. dia.a .. "ا" -- plural forms["3pm-ps-subj"] = "يَ" .. ps_subj_stem .. dia.u .. "و" forms["3pf-ps-subj"] = "يَ" .. ps_subj_stem .. dia.s .. "نَ" forms["2pm-ps-subj"] = "تَ" .. ps_subj_stem .. dia.u .. "و" forms["2pf-ps-subj"] = "تَ" .. ps_subj_stem .. dia.s .. "نَ" forms["1p-ps-subj"] = "نَ" .. ps_subj_stem .. dia.a end -- can be reused for all passive jussive forms with sound endings function export.pass_jussive_conj(forms, ps_juss_stem) -- singular forms["3sm-ps-juss"] = "يَ" .. ps_juss_stem .. dia.s forms["3sf-ps-juss"] = "تَ" .. ps_juss_stem .. dia.s forms["2sm-ps-juss"] = "تَ" .. ps_juss_stem .. dia.s forms["2sf-ps-juss"] = "تَ" .. ps_juss_stem .. dia.i .. "ي" forms["1s-ps-juss"] = "أَ" .. ps_juss_stem .. dia.s --dual forms["3dm-ps-juss"] = "يَ" .. ps_juss_stem .. dia.a .. "ا" forms["3df-ps-juss"] = "تَ" .. ps_juss_stem .. dia.a .. "ا" forms["2d-ps-juss"] = "تَ" .. ps_juss_stem .. dia.a .. "ا" -- plural forms["3pm-ps-juss"] = "يَ" .. ps_juss_stem .. dia.u .. "و" forms["3pf-ps-juss"] = "يَ" .. ps_juss_stem .. dia.s .. "نَ" forms["2pm-ps-juss"] = "تَ" .. ps_juss_stem .. dia.u .. "و" forms["2pf-ps-juss"] = "تَ" .. ps_juss_stem .. dia.s .. "نَ" forms["1p-ps-juss"] = "نَ" .. ps_juss_stem .. dia.s end -- can be reused for all imperative forms with sound endings function export.make_imperative(forms, imper_stem) -- singular forms["2sm-impr"] = imper_stem .. dia.s forms["2sf-impr"] = imper_stem .. dia.i .. "ي" --dual forms["2d-impr"] = imper_stem .. dia.a .. "ا" -- plural forms["2pm-impr"] = imper_stem .. dia.u .. "و" forms["2pf-impr"] = imper_stem .. dia.s .. "نَ" end -- Test function test_forms(forms, title, intr) local text = "<br/>" for key, form in pairs(forms) do -- check for empty strings and nil's if form ~= "" and form then --text = key .. [=[: {{Arab|]=] .. forms[key] .. [=[}}{{LR}}, ]=] text = text .. key .. ": " .. forms[key] .. ", <br/>" end end return text end -- Make the table function make_table(forms, forms_tr, title, intr) local title = "Conjugation of ''" .. forms["3sm-perf"] .. "''" .. (title and " (" .. title .. ")" or "") local title_tr = "TO ADD TRANSLITERATION OF THE TITLE" local passive = true ---- -- Intransitive verbs have no passive forms. if intrans then forms["1s-ps-perf"] = "" forms["2sm-ps-perf"] = "" forms["2d-ps-perf"] = "" forms["3dm-ps-perf"] = "" forms["1p-ps-perf"] = "" forms["2pm-ps-perf"] = "" forms["3pm-ps-perf"] = "" forms["2sf-ps-perf"] = "" forms["3sf-ps-perf"] = "" forms["3df-ps-perf"] = "" forms["2pf-ps-perf"] = "" forms["3pf-ps-perf"] = "" forms["1s-ps-impf"] = "" forms["2sm-ps-impf"] = "" forms["3sm-ps-impf"] = "" forms["2d-ps-impf"] = "" forms["3dm-ps-impf"] = "" forms["1p-ps-impf"] = "" forms["2pm-ps-impf"] = "" forms["3pm-ps-impf"] = "" forms["2sf-ps-impf"] = "" forms["3sf-ps-impf"] = "" forms["3df-ps-impf"] = "" forms["2pf-ps-impf"] = "" forms["3pf-ps-impf"] = "" forms["1s-ps-subj"] = "" forms["2sm-ps-subj"] = "" forms["3sm-ps-subj"] = "" forms["2d-ps-subj"] = "" forms["3dm-ps-subj"] = "" forms["1p-ps-subj"] = "" forms["2pm-ps-subj"] = "" forms["3pm-ps-subj"] = "" forms["2sf-ps-subj"] = "" forms["3sf-ps-subj"] = "" forms["3df-ps-subj"] = "" forms["2pf-ps-subj"] = "" forms["3pf-ps-subj"] = "" forms["1s-ps-juss"] = "" forms["2sm-ps-juss"] = "" forms["3sm-ps-juss"] = "" forms["2d-ps-juss"] = "" forms["3dm-ps-juss"] = "" forms["1p-ps-juss"] = "" forms["2pm-ps-juss"] = "" forms["3pm-ps-juss"] = "" forms["2sf-ps-juss"] = "" forms["3sf-ps-juss"] = "" forms["3df-ps-juss"] = "" forms["2pf-ps-juss"] = "" forms["3pf-ps-juss"] = "" end -- initialise forms_tr to "" using form for key, form in pairs(forms) do -- check for empty strings and nil's if form ~= "" and form then -- check for empty strings and nil's if not forms_tr[key] then forms_tr[key] = "" end end end -- initialise forms_tr to "" using form_tr for key, form_tr in pairs(forms_tr) do -- check for empty strings and nil's if form_tr == "" or not form_tr then forms_tr[key] = "" end end -- Format and and add transliterations to all forms for key, form in pairs(forms) do -- check for empty strings and nil's if form ~= "" and form then -- manual transliteration --forms[key] = "<span lang=\"ar\" class=\"Arab\">[[" .. com.remove_diacritics(form) .. "#Arabic|" .. form .. "]]</span><br/><span style=\"color: #888\">" .. forms_tr[key] .. "</span>" -- automatic transliteration forms[key] = "<span lang=\"ar\" class=\"Arab\">[[" .. com.remove_diacritics(form) .. "#Arabic|" .. form .. "]]</span><br/><span style=\"color: #888\">" .. translit.tr(form) .. "</span>" else forms[key] = "—" end end local text = [=[<div class="NavFrame" style="width:100%"> <div class="NavHead" style="height:2.5em">]=] .. title .. [=[</div> <div class="NavContent"> {| border="1" color="#cdcdcd" style="border-collapse:collapse; line-height:2.5em; border:1px solid #555555; background:#fdfdfd; width:100%; text-align:center" class="inflection-table" |- ! colspan="6" style="background:#dedede" | verbal noun]=] .. (com.links(forms["vn2"]) and "s" or "") .. "<br />" .. com.tag_text(com.links(forms["vn2"]) and "المصادر" or "المصدر") .. [=[ | colspan="7" | ]=] .. com.links(forms["vn"]) .. (com.links(forms["vn2"]) and ", " .. com.links(forms["vn2"]) or "") .. [=[ |- ! colspan="6" style="background:#dedede" | active participle<br />]=] .. com.tag_text("اسم الفاعل") .. [=[ | colspan="7" | ]=] .. com.links(forms["ap"]) if passive then text = text .. [=[ |- ! colspan="6" style="background:#dedede" | passive participle<br />]=] .. com.tag_text("اسم المفعول") .. [=[ | colspan="7" | ]=] .. com.links(forms["pp"]) end text = text .. [=[ |- ! colspan="12" style="background:#bcbcbc" | active voice<br />]=] .. com.tag_text("الفعل المعلوم") .. [=[ |- ! colspan="2" style="background:#cdcdcd" | ! colspan="3" style="background:#cdcdcd" | singular<br />]=] .. com.tag_text("المفرد") .. [=[ ! rowspan="12" style="background:#cdcdcd;width:.5em" | ! colspan="2" style="background:#cdcdcd" | dual<br />]=] .. com.tag_text("المثنى") .. [=[ ! rowspan="12" style="background:#cdcdcd;width:.5em" | ! colspan="3" style="background:#cdcdcd" | plural<br />]=] .. com.tag_text("الجمع") .. [=[ |- ! colspan="2" style="background:#cdcdcd" | ! style="background:#cdcdcd" | 1<sup>st</sup> person<br />]=] .. com.tag_text("المتكلم") .. [=[ ! style="background:#cdcdcd" | 2<sup>nd</sup> person<br />]=] .. com.tag_text("المخاطب") .. [=[ ! style="background:#cdcdcd" | 3<sup>rd</sup> person<br />]=] .. com.tag_text("الغائب") .. [=[ ! style="background:#cdcdcd" | 2<sup>nd</sup> person<br />]=] .. com.tag_text("المخاطب") .. [=[ ! style="background:#cdcdcd" | 3<sup>rd</sup> person<br />]=] .. com.tag_text("الغائب") .. [=[ ! style="background:#cdcdcd" | 1<sup>st</sup> person<br />]=] .. com.tag_text("المتكلم") .. [=[ ! style="background:#cdcdcd" | 2<sup>nd</sup> person<br />]=] .. com.tag_text("المخاطب") .. [=[ ! style="background:#cdcdcd" | 3<sup>rd</sup> person<br />]=] .. com.tag_text("الغائب") .. [=[ |- ! rowspan="2" style="background:#cdcdcd" | perfect indicative<br />]=] .. com.tag_text("الماضي") .. [=[ ! style="background:#dedede" | ''m'' | rowspan="2" | ]=] .. com.links(forms["1s-perf"]) .. [=[ | ]=] .. com.links(forms["2sm-perf"]) .. [=[ | ]=] .. com.links(forms["3sm-perf"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["2d-perf"]) .. [=[ | ]=] .. com.links(forms["3dm-perf"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["1p-perf"]) .. [=[ | ]=] .. com.links(forms["2pm-perf"]) .. [=[ | ]=] .. com.links(forms["3pm-perf"]) .. [=[ |- ! style="background:#dedede" | ''f'' | ]=] .. com.links(forms["2sf-perf"]) .. [=[ | ]=] .. com.links(forms["3sf-perf"]) .. [=[ | ]=] .. com.links(forms["3df-perf"]) .. [=[ | ]=] .. com.links(forms["2pf-perf"]) .. [=[ | ]=] .. com.links(forms["3pf-perf"]) .. [=[ |- ! rowspan="2" style="background:#cdcdcd" | imperfect indicative<br />]=] .. com.tag_text("المضارع") .. [=[ ! style="background:#dedede" | ''m'' | rowspan="2" | ]=] .. com.links(forms["1s-impf"]) .. [=[ | ]=] .. com.links(forms["2sm-impf"]) .. [=[ | ]=] .. com.links(forms["3sm-impf"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["2d-impf"]) .. [=[ | ]=] .. com.links(forms["3dm-impf"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["1p-impf"]) .. [=[ | ]=] .. com.links(forms["2pm-impf"]) .. [=[ | ]=] .. com.links(forms["3pm-impf"]) .. [=[ |- ! style="background:#dedede" | ''f'' | ]=] .. com.links(forms["2sf-impf"]) .. [=[ | ]=] .. com.links(forms["3sf-impf"]) .. [=[ | ]=] .. com.links(forms["3df-impf"]) .. [=[ | ]=] .. com.links(forms["2pf-impf"]) .. [=[ | ]=] .. com.links(forms["3pf-impf"]) .. [=[ |- ! rowspan="2" style="background:#cdcdcd" | subjunctive<br />]=] .. com.tag_text("المضارع المنصوب") .. [=[ ! style="background:#dedede" | ''m'' | rowspan="2" | ]=] .. com.links(forms["1s-subj"]) .. [=[ | ]=] .. com.links(forms["2sm-subj"]) .. [=[ | ]=] .. com.links(forms["3sm-subj"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["2d-subj"]) .. [=[ | ]=] .. com.links(forms["3dm-subj"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["1p-subj"]) .. [=[ | ]=] .. com.links(forms["2pm-subj"]) .. [=[ | ]=] .. com.links(forms["3pm-subj"]) .. [=[ |- ! style="background:#dedede" | ''f'' | ]=] .. com.links(forms["2sf-subj"]) .. [=[ | ]=] .. com.links(forms["3sf-subj"]) .. [=[ | ]=] .. com.links(forms["3df-subj"]) .. [=[ | ]=] .. com.links(forms["2pf-subj"]) .. [=[ | ]=] .. com.links(forms["3pf-subj"]) .. [=[ |- ! rowspan="2" style="background:#cdcdcd" | jussive<br />]=] .. com.tag_text("المضارع المجزوم") .. [=[ ! style="background:#dedede" | ''m'' | rowspan="2" | ]=] .. com.links(forms["1s-juss"]) .. [=[ | ]=] .. com.links(forms["2sm-juss"]) .. [=[ | ]=] .. com.links(forms["3sm-juss"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["2d-juss"]) .. [=[ | ]=] .. com.links(forms["3dm-juss"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["1p-juss"]) .. [=[ | ]=] .. com.links(forms["2pm-juss"]) .. [=[ | ]=] .. com.links(forms["3pm-juss"]) .. [=[ |- ! style="background:#dedede" | ''f'' | ]=] .. com.links(forms["2sf-juss"]) .. [=[ | ]=] .. com.links(forms["3sf-juss"]) .. [=[ | ]=] .. com.links(forms["3df-juss"]) .. [=[ | ]=] .. com.links(forms["2pf-juss"]) .. [=[ | ]=] .. com.links(forms["3pf-juss"]) .. [=[ |- ! rowspan="2" style="background:#cdcdcd" | imperative<br />]=] .. com.tag_text("الأمر") .. [=[ ! style="background:#dedede" | ''m'' | rowspan="2" | | ]=] .. com.links(forms["2sm-impr"]) .. [=[ | rowspan="2" | | rowspan="2" | ]=] .. com.links(forms["2d-impr"]) .. [=[ | rowspan="2" | | rowspan="2" | | ]=] .. com.links(forms["2pm-impr"]) .. [=[ | rowspan="2" | |- ! style="background:#dedede" | ''f'' | ]=] .. com.links(forms["2sf-impr"]) .. [=[ | ]=] .. com.links(forms["2pf-impr"]) if passive then text = text .. [=[ |- ! colspan="12" style="background:#bcbcbc" | passive voice<br />]=] .. com.tag_text("الفعل المجهول") .. [=[ |- | colspan="2" style="background:#cdcdcd" | ! colspan="3" style="background:#cdcdcd" | singular<br />]=] .. com.tag_text("المفرد") .. [=[ | rowspan="10" style="background:#cdcdcd;width:.5em" | ! colspan="2" style="background:#cdcdcd" | dual<br />]=] .. com.tag_text("المثنى") .. [=[ | rowspan="10" style="background:#cdcdcd;width:.5em" | ! colspan="3" style="background:#cdcdcd" | plural<br />]=] .. com.tag_text("الجمع") .. [=[ |- | colspan="2" style="background:#cdcdcd" | ! style="background:#cdcdcd" | 1<sup>st</sup> person<br />]=] .. com.tag_text("المتكلم") .. [=[ ! style="background:#cdcdcd" | 2<sup>nd</sup> person<br />]=] .. com.tag_text("المخاطب") .. [=[ ! style="background:#cdcdcd" | 3<sup>rd</sup> person<br />]=] .. com.tag_text("الغائب") .. [=[ ! style="background:#cdcdcd" | 2<sup>nd</sup> person<br />]=] .. com.tag_text("المخاطب") .. [=[ ! style="background:#cdcdcd" | 3<sup>rd</sup> person<br />]=] .. com.tag_text("الغائب") .. [=[ ! style="background:#cdcdcd" | 1<sup>st</sup> person<br />]=] .. com.tag_text("المتكلم") .. [=[ ! style="background:#cdcdcd" | 2<sup>nd</sup> person<br />]=] .. com.tag_text("المخاطب") .. [=[ ! style="background:#cdcdcd" | 3<sup>rd</sup> person<br />]=] .. com.tag_text("الغائب") .. [=[ |- ! rowspan="2" style="background:#cdcdcd" | perfect indicative<br />]=] .. com.tag_text("الماضي") .. [=[ ! style="background:#dedede" | ''m'' | rowspan="2" | ]=] .. com.links(forms["1s-ps-perf"]) .. [=[ | ]=] .. com.links(forms["2sm-ps-perf"]) .. [=[ | ]=] .. com.links(forms["3sm-ps-perf"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["2d-ps-perf"]) .. [=[ | ]=] .. com.links(forms["3dm-ps-perf"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["1p-ps-perf"]) .. [=[ | ]=] .. com.links(forms["2pm-ps-perf"]) .. [=[ | ]=] .. com.links(forms["3pm-ps-perf"]) .. [=[ |- ! style="background:#dedede" | ''f'' | ]=] .. com.links(forms["2sf-ps-perf"]) .. [=[ | ]=] .. com.links(forms["3sf-ps-perf"]) .. [=[ | ]=] .. com.links(forms["3df-ps-perf"]) .. [=[ | ]=] .. com.links(forms["2pf-ps-perf"]) .. [=[ | ]=] .. com.links(forms["3pf-ps-perf"]) .. [=[ |- ! rowspan="2" style="background:#cdcdcd" | imperfect indicative<br />]=] .. com.tag_text("المضارع") .. [=[ ! style="background:#dedede" | ''m'' | rowspan="2" | ]=] .. com.links(forms["1s-ps-impf"]) .. [=[ | ]=] .. com.links(forms["2sm-ps-impf"]) .. [=[ | ]=] .. com.links(forms["3sm-ps-impf"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["2d-ps-impf"]) .. [=[ | ]=] .. com.links(forms["3dm-ps-impf"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["1p-ps-impf"]) .. [=[ | ]=] .. com.links(forms["2pm-ps-impf"]) .. [=[ | ]=] .. com.links(forms["3pm-ps-impf"]) .. [=[ |- ! style="background:#dedede" | ''f'' | ]=] .. com.links(forms["2sf-ps-impf"]) .. [=[ | ]=] .. com.links(forms["3sf-ps-impf"]) .. [=[ | ]=] .. com.links(forms["3df-ps-impf"]) .. [=[ | ]=] .. com.links(forms["2pf-ps-impf"]) .. [=[ | ]=] .. com.links(forms["3pf-ps-impf"]) .. [=[ |- ! rowspan="2" style="background:#cdcdcd" | subjunctive<br />]=] .. com.tag_text("المضارع المنصوب") .. [=[ ! style="background:#dedede" | ''m'' | rowspan="2" | ]=] .. com.links(forms["1s-ps-subj"]) .. [=[ | ]=] .. com.links(forms["2sm-ps-subj"]) .. [=[ | ]=] .. com.links(forms["3sm-ps-subj"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["2d-ps-subj"]) .. [=[ | ]=] .. com.links(forms["3dm-ps-subj"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["1p-ps-subj"]) .. [=[ | ]=] .. com.links(forms["2pm-ps-subj"]) .. [=[ | ]=] .. com.links(forms["3pm-ps-subj"]) .. [=[ |- ! style="background:#dedede" | ''f'' | ]=] .. com.links(forms["2sf-ps-subj"]) .. [=[ | ]=] .. com.links(forms["3sf-ps-subj"]) .. [=[ | ]=] .. com.links(forms["3df-ps-subj"]) .. [=[ | ]=] .. com.links(forms["2pf-ps-subj"]) .. [=[ | ]=] .. com.links(forms["3pf-ps-subj"]) .. [=[ |- ! rowspan="2" style="background:#cdcdcd" | jussive<br />]=] .. com.tag_text("المضارع المجزوم") .. [=[ ! style="background:#dedede" | ''m'' | rowspan="2" | ]=] text = text .. com.links(forms["1s-ps-juss"]) .. [=[ | ]=] .. com.links(forms["2sm-ps-juss"]) .. [=[ | ]=] .. com.links(forms["3sm-ps-juss"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["2d-ps-juss"]) .. [=[ | ]=] .. com.links(forms["3dm-ps-juss"]) .. [=[ | rowspan="2" | ]=] .. com.links(forms["1p-ps-juss"]) .. [=[ | ]=] .. com.links(forms["2pm-ps-juss"]) .. [=[ | ]=] .. com.links(forms["3pm-ps-juss"]) .. [=[ |- ! style="background:#dedede" | ''f'' | ]=] .. com.links(forms["2sf-ps-juss"]) .. [=[ | ]=] .. com.links(forms["3sf-ps-juss"]) .. [=[ | ]=] .. com.links(forms["3df-ps-juss"]) .. [=[ | ]=] .. com.links(forms["2pf-ps-juss"]) .. [=[ | ]=] .. com.links(forms["3pf-ps-juss"]) end text = text .. [=[ |} </div> </div>]=] return text end return export |