Modul:rêziman

Ji Wîkîferheng
Jump to navigation Jump to search
Template-info.png Belgekirina modulê[nîşan bide] [biguherîne] [rojane bike]
Ev belge ji Modul:rêziman/belge hatiye girtin.

Bikaranîn[biguherîne]

Di nav şablonên da tê bikaranîn

  • {{#invoke:rêziman|cure|nav=}}
  • {{#invoke:rêziman|cure|nav=|kat=}}

Hemû parametreyan:

  • {{#invoke:rêziman|cure|nav=|navcure=|kat=|link=}}

Bo şablonan, bnr.

Çewtiyên koda zimanî:

Mijarên têkildar:

Şablon
Vê şablonê nîşan bide
{{navdêr}} · {{serenav}} · {{lêker}} · {{rengdêr}} · {{hoker}} · {{cînav}} · {{girêdek}} · {{daçek}} · {{pêşdaçek}} · {{paşdaçek}} · {{bazinedaçek}} · {{artîkel}} · {{pirtik}} · {{baneşan}} · {{navgir}} · {{paşgir}} · {{pêşgir}} · {{reh}} · {{biwêj}} · {{hevok}} · {{gp}} (gotineke pêşiyan) · {{hejmar}} · {{tîp}} · {{sembol}} · {{kurtenav}}
Binêre herwiha
-- Modul bo şablonên: {{navdêr}}, {{lêker}}, {{rengdêr}},  {{hoker}}
-- {{serenav}}, {{cînav}}, {{paşgir}}, {{pêşgir}}, {{navgir}}
-- {{hejmar}}, {{kurtenav}}, {{gp}}, ...
b = require('Modul:bingeh')
m_languages = require("Modul:ziman")
formatZiman = require('Modul:girêdan').formatZiman

local p = {}

--- kurtenav zayend + jimar
function kurtenav(zj)
	local navz
	local sernav
	local kurte
	local nivis = ''
	
	local k_tab = {
		['m'] = {navz = 'mê', sernav = 'Zayend: mê', kurte ='m'},
		['n'] = {navz = 'nêr', sernav = 'Zayend: nêr', kurte ='n'},
		['nt'] = {navz = 'nêtar', sernav = 'Zayend: nêtar', kurte ='nt'},
		['mn'] = {navz = 'mê û nêr', sernav = 'Zayend: mê û nêr', kurte ='m&n'},
		['m/n'] = {navz = 'mê yan nêr', sernav = 'Zayend: mê yan nêr', kurte ='m/n'},
		['g'] = {navz = 'giştî', sernav = 'Zayend: common genger', kurte ='g'},
		['y'] = {navz = 'yekjimar', sernav = 'Jimar: yekjimar', kurte ='yj'},
		['p'] = {navz = 'pirjimar', sernav = 'Jimar: pirjimar', kurte ='pj'},
		['j'] = {navz = '[[jimarbar]]', sernav = 'Jimar: jimarbar', kurte ='j'},
		['nj'] = {navz = '[[nejimarbar]]', sernav = 'Jimar: nejimarbar', kurte ='nj'},
		['j/nj'] = {navz = '[[jimarbar]] û [[nejimarbar]]', sernav = 'Jimar: jimarbar û nejimarbar', kurte ='j/nj'},
	}
	
	if (mw.ustring.find(zj, '(%+)$')) then
		local zj_kem = mw.ustring.gsub(zj, '(%+)$', '')
		k_tab[zj] = {
			navz = 'bi gelemperî ' .. k_tab[zj_kem].navz,
			sernav = 'Zayend: bi gelemperî ' .. k_tab[zj_kem].navz .. ' e',
			kurte = k_tab[zj_kem].navz,
		}
	end
	
	if (k_tab[zj]) then
		nivis =  {
			'<i>'.. k_tab[zj].navz ..'</i>',
			'<abbr style="font-style:italic;" title="' .. k_tab[zj].sernav .. '">' .. k_tab[zj].kurte .. '</abbr>'
		}
	elseif (zj == '?') then
		nivis = {'<span style="background-color:#FFDDDD; font-size:small;">'
		 		.. 'zayend pêwîst e (z=m: mê, z=n: nêr, z=mn: mê û nêr, z=nt: nêtar)</span>'}
	elseif (zj == '-' or zj == nil or zj == '') then
		nivis = {''}
	else
		nivis = {'<span style="background-color:#FFDDDD; font-size:small;">'
		 		.. 'parametre: z=m: mê, z=n: nêr, z=mn: m û nêr, z=nt: nêtar</span>'}
	end
	
	return nivis
	
end

--- lêkerCure
function leker_cure(lc, ziman)
	local c_tab = {
					['x'] = 'xwerû',
					['p'] = 'pêkhatî',
					['h'] = 'hevedudanî',
					['b'] = 'biwêjî',
					['gh'] = 'gerguhêz',
					['ngh'] = 'negerguhêz'
	}
	local lc_tab = mw.text.split(lc, '-')
	local c1 = lc_tab[1]
	local c2 = lc_tab[2]
	local navc = ''
	local katc = ''
	
	if (c_tab[c1] and c_tab[c2]) then
		navc = 'lêkera ' .. c_tab[c1] .. ', ' .. c_tab[c2]
		katc = b.bike_kategori_naverok('Lêkerên '.. c_tab[c1] .. ' bi ' ..  ziman)
		.. b.bike_kategori_naverok('Lêkerên '.. c_tab[c2] .. ' bi ' ..  ziman)
		.. b.bike_kategori_naverok('Lêkerên ' .. c_tab[c1] .. ' yên ' .. c_tab[c2] .. ' bi ' ..  ziman )
	elseif (c_tab[c1] and not c_tab[c2]) then
		if (mw.ustring.find(c_tab[c1], '^[xphb]')) then
			navc = 'lêkera ' .. c_tab[c1]
		else
			navc = c_tab[c1]
		end
		katc = b.bike_kategori_naverok('Lêkerên '.. c_tab[c1] .. ' bi ' ..  ziman)
	elseif (c1 == '?') then
		navc = '<span style="background-color:#FFDDDD;font-size:small;">'
				.. 'cureyê lêkerê pêwîst e (c=gh: gerguhêz, c=ngh: negerguhêz, bo parametreyên din: [[Şablon:lêker#Bikaranîn]])</span>'
	else
		navc = '<span style="background-color:#FFDDDD;font-size:small;">'
				.. 'parametre: c=gh: gerguhêz, c=ngh: negerguhêz, bo parametreyên din: [[Şablon:lêker#Bikaranîn]]</span>'
	end
	
	return {'<i>'.. navc ..'</i>', katc}
end
  
function p.cure(frame)
    local args = frame:getParent().args
    local kod  = args[1]
    local nivisCuda  = args[2]
    local tr  = args['tr']
    local sc = args['sc'] -- alfabe/script
    local z  = args['z'] -- zayend
    local j  = args['j'] -- jimar
    local c  = args['c'] -- cure

    local m  = args['m'] -- forma mê
    local m2  = args['m2'] -- forma mê
    local m3  = args['m3'] -- forma mê
    local n  = args['n'] -- forma nêr
    local n2  = args['n2'] -- forma nêr 2
    local n3  = args['n3'] -- forma nêr 3
    local nt  = args['nt'] -- forma nêtar
    local p  = args['p'] -- forma pirjimar
    local p2  = args['p2'] -- forma pirjimar 2
    local p3  = args['p3'] -- forma pirjimar 3
    local y  = args['y'] -- forma pirjimar
    local np  = args['np'] -- forma nêr ya pirjimar
    local np2  = args['np2'] -- forma nêr ya pirjimar 2
    local np3  = args['np3'] -- forma nêr ya pirjimar 3
    local mp  = args['mp'] -- forma mê ya pirjimar
	local mp2  = args['mp2'] -- forma mê ya pirjimar 2
	local mp3  = args['mp3'] -- forma mê ya pirjimar 3
    local lk = args['lk'] -- forma lêker
    local nd = args['nd'] -- forma navdêr
    
    local niha = args['niha'] -- rehê dema niha
    local niha2 = args['niha2'] -- rehê dema niha 2
    local niha3 = args['niha3'] -- rehê dema niha 3
    local bori = args['borî'] -- rehê dema borî 
    local bori2 = args['borî2'] -- rehê dema borî 2
    local subj = args['subj'] -- rehê dema bilanî
    local subj2 = args['subj2'] -- rehê dema bilanî 2

    local komp = args['komp'] -- forma komparatîv
    local sup = args['sûp'] -- forma sûperlatîv
    
    local gir = args['gir'] -- tîpa girek
    local hur = args['hûr'] -- tîpa hûrek
    
    local form  = args['form'] -- form=êrê, ji bo formên tewandiyên navdêr, lêker, rengdêr, hoker an cînavan

    local nav = frame.args['nav']
    local kat = frame.args['kat']
    
    local nivisaSer = ''
    local formatNivisaSer = ''
    
 	local ziman = ""
    if not kod or kod == "" then
		return "<span style='color:red;font-size:85%;'>'''Ji kerema xwe koda zimanî di parametreya 1 de lê zêde bikin.'''</span>"
		.. b.bike_kategori_naverok('Rûpelên bi çewtiyên koda zimanî')
	elseif m_languages.getByCode(kod) == nil then
		return "<span style='font-size:85%;'>\"" ..  kod .. "\"</span><span style='color:red;font-size:85%;'>''' nayê zanîn. Divê [[Wîkîferheng:Lîsteya zimanan|koda zimanî]] be.'''</span>"
		.. b.bike_kategori_naverok('Rûpelên bi çewtiyên koda zimanî')
	end
	local lang = m_languages.getByCode(kod)
	local ziman = lang:getCanonicalName()
	----------------------------------------------------------------------------
	----------------------------- ÇÊKIRINA SERNIVÎSÊ ---------------------------
	----------------------------------------------------------------------------
	
	if mw.title.getCurrentTitle().nsText == "Jinûvesazî" then
		if (nivisCuda) then
			nivisaSer = '<strong>*' .. formatZiman(kod, nivisCuda, sc) .. '</strong>'
		else
			nivisaSer = '<strong>*' .. formatZiman(kod, mw.title.getCurrentTitle().subpageText, sc) .. '</strong>'
		end		
	else	
		if (nivisCuda) then
			nivisaSer = '<strong>' .. formatZiman(kod, nivisCuda, sc) .. '</strong>'
		else
			nivisaSer = '<strong>' .. formatZiman(kod, mw.title.getCurrentTitle().subpageText, sc) .. '</strong>'
		end
	end
       
	--- translit
	local translit
	local t_kod
	
	if (sc) then
		t_kod = kod .. '-' .. sc 
	else
		t_kod = kod
	end
	
	if (t_kod ~= nil) then
		local title = tostring(t_kod .. '-translit')
		local translitLink = tostring('Modul:' .. title)
       
		if mw.title.new( title, 'Modul' ).exists == true then
			translit = require(translitLink).tr
		end
	end
 
	if (tr and tr ~= '-' and tr ~= '') then
		nivisaSer = nivisaSer .. '&nbsp;<i>(' .. tr .. ')</i>'
	elseif (tr == '-') then
		nivisaSer = nivisaSer
	elseif ( (tr == '' or tr == nil) and translit ) then
		if (nivisCuda and translit(nivisCuda)) then
			nivisaSer = nivisaSer .. '&nbsp;<i>(' .. translit(nivisCuda) .. ')</i>'
		else
			if (translit(mw.title.getCurrentTitle().subpageText)) then
				nivisaSer = nivisaSer .. '&nbsp;<i>(' .. translit(mw.title.getCurrentTitle().subpageText) .. ')</i>'
			else
				nivisaSer = nivisaSer
			end
		end
	else
		nivisaSer = nivisaSer
	end
	 
	--- cure
	if (c and c ~= '' and nav == 'lêker') then
		nivisaSer = nivisaSer .. ' ' .. leker_cure(c, ziman)[1]
	else
		nivisaSer = nivisaSer
	end
	
	--- zayend
	if (z) then
		nivisaSer = nivisaSer .. ' ' .. kurtenav(z)[1]
	end
	
	--- jimar	
	if (j) then
		nivisaSer = nivisaSer .. ' ' .. kurtenav(j)[1]
	end

	--- rengdêr qiyasbar an na 	
	if form == "-" and nav == "rengdêr" then
		nivisaSer = nivisaSer .. ' <i>([[Nimînok:Ferhengok#neqiyasbar|neqiyasbar]])</i>' 
	end

	--- formên din (mê, nêr, nêtar) // Format: { {parametre, nivîs, navê cureyî}, ... }
	--- rehên lêkeran (rehê dema niha, borî, subj.)
	if (gir or hur or m or n or nt or y or p or np or mp or nd or lk or komp or sup or niha or bori or subj) then
		local tab = { 	
						{ {gir}, 'girek', 'tîp', tr_tab ={'girtr'} }, 
						{ {hur}, 'hûrek', 'tîp', tr_tab ={'hûrtr'} },
						{ {m, m2, m3}, 'forma mê', tr_tab = {'mtr', 'm2tr', 'm3tr'} }, 
						{ {n, n2, n3}, 'forma nêr', tr_tab = {'ntr', 'n2tr', 'n3tr'} }, 
						{ {nt}, 'forma nêtar', tr_tab = {'nttr', 'nt2tr', 'nt3tr'} },
						{ {y}, 'forma yekjimar', tr_tab = {'ytr', 'y2tr', 'y3tr'} }, 
						{ {p, p2, p3}, 'forma pirjimar', tr_tab = {'ptr', 'p2tr', 'p3tr'} }, 
						{ {np, np2, np3}, 'forma nêr a pirjimar', tr_tab = {'nptr', 'np2tr', 'np3tr'} },
						{ {mp, mp2, mp3}, 'forma mê ya pirjimar', tr_tab = {'mptr', 'mp2tr', 'mp3tr'} }, 
						{ {nd}, 'forma navdêr', tr_tab ={} }, 
						{ {lk}, 'forma lêker', tr_tab ={} },
						{ {komp}, 'forma komparatîv', tr_tab ={} }, 
						{ {sup}, 'forma sûperlatîv', tr_tab ={} },
						{ {niha, niha2, niha3}, 'rehê dema niha', tr_tab ={'nihatr', 'niha2tr', 'niha3tr'} },
						{ {bori, bori2}, 'rehê dema borî', tr_tab ={'borîtr', 'borî2tr'}  }, 
						{ {subj, subj2}, 'rehê dema bilanî', tr_tab ={'subj', 'subj2tr'} }
		}
	
		nivisaSer = nivisaSer .. ' <i>(</i>'
		
		for i, v in ipairs(tab) do
			if ( #v[1] >= 1 and (nav == v[3] or v[3] == nil ) ) then
				nivisaSer = nivisaSer .. '<i>' .. v[2] .. '</i> '
				for j, t in ipairs(v[1]) do
					nivisaSer = nivisaSer ..  require("Module:links").full_link{
						term = t,
						lang = require("Module:ziman").getByCode(kod),
						accel = {form = v[2], lemma = nivisCuda, gender = z, translit = args[tab[i].tr_tab[j]], lemma_translit = tr},
						tr = args[tab[i].tr_tab[j]],
					}
					if j == #v[1] then 
						nivisaSer = nivisaSer .. ', '
					else
						nivisaSer = nivisaSer .. ' <i>an</i> '
					end
				end
			end
		end
		nivisaSer = nivisaSer .. '<i>)</i>'
		nivisaSer = mw.ustring.gsub(nivisaSer, ', <i>%)</i>', '<i>)</i>')
	end
	----------------------------------------------------------------------------
	----------------------------- ÇEKIRINA KATEGORIYAN -------------------------
	----------------------------------------------------------------------------
	-- çêkirina kategoriyan (koda zimanî ne hatiye nivîsandin)
	if (kod == nil or kod == '') then 
		if (kat ~= nil) then nav = kat end
		kat =  b.bike_kategori_naverok('Şablonên rêzimanî yên bê koda zimanî')
		return nivisaSer .. kat
	end
  
	-- Çêkirina kategoriyan (koda zimanî hatiye nivîsandin)
	if (ziman ~= nil) then
		if (kat == 'nekat') then
			kat = ''
		else
			if (kat ~= nil and kat ~= 'nekat') then
				nav = kat
			end
			
			local naveRupele = mw.title.getCurrentTitle().subpageText
			local is_reconstructed = mw.title.getCurrentTitle().nsText == "Jinûvesazî"
			if is_reconstructed then
				default_head = require("Modul:utilities").plain_gsub(naveRupele, kod .. "/", "")
			else
				default_head = naveRupele
			end

		-- Kategoriya YEKEM [[Kategorî:nav (ziman)]] 
			-- Bo formên tewandî (form=êrê) kategorî ([[Kategorî:nav (ziman)]]) nayê çêkirin.
			if ( (nav == 'navdêr' or nav == 'lêker' or nav == 'rengdêr' or nav == 'hoker' or nav == 'cînav' or nav == 'serenav') and form == 'erê') then
				kat = b.bike_kategori_naverok('Formên ' .. nav .. 'an' .. ' bi ' ..  ziman )
			elseif (nav == 'navgir' or nav == 'paşgir') then
				naveRupele = naveRupele:gsub('^-', "")
				kat =  b.bike_kategori_naverok(b.ucfirst(nav) .. ' bi ' ..  ziman, naveRupele)
			else
				if mw.title.getCurrentTitle().nsText == "Jinûvesazî" then
					kat =  b.bike_kategori_naverok(b.ucfirst(nav) .. ' bi ' ..  ziman, default_head)
				else
					kat =  b.bike_kategori_naverok(b.ucfirst(nav) .. ' bi ' ..  ziman )
				end
			end
	    	
	    	-- Kategorî li gorî zayên (z=) û jimarê (j=)
			local zj_tab = {
							['m'] = 'mê',
							['m+'] = 'ku bi gelemperî mê ne',
							['n'] = 'nêr',
							['n+'] = 'ku bi gelemperî nêr in',
							['nt'] = 'nêtar',
							['mn'] = 'mê û nêr',
							['g'] = 'giştî', -- common gender (c)
							['p+'] = 'ku bi gelemperî pirjimar in',
							['j'] = 'jimarbar',
							['j+'] = 'jimarbar',
							['nj+'] = 'nejimarbar',
							['nj'] = 'nejimarbar',
			}
			if not form then -- heke form=erê/- be kategorî neke	              
				if (zj_tab[z]) then
					kat = kat .. b.bike_kategori_naverok(b.ucfirst(nav) .. 'ên ' .. zj_tab[z] .. ' bi ' ..  ziman )
				elseif (zj_tab[j]) then
					kat = kat .. b.bike_kategori_naverok(b.ucfirst(nav) .. 'ên ' .. zj_tab[j] .. ' bi ' ..  ziman )
				elseif (z == 'm/n') then
					kat = kat .. b.bike_kategori_naverok(b.ucfirst(nav) .. 'ên mê bi ' ..  ziman )
					kat = kat .. b.bike_kategori_naverok(b.ucfirst(nav) .. 'ên nêr bi ' ..  ziman )
				elseif (j == 'j/nj') then
					kat = kat .. b.bike_kategori_naverok(b.ucfirst(nav) .. 'ên jimarbar bi ' ..  ziman )
					kat = kat .. b.bike_kategori_naverok(b.ucfirst(nav) .. 'ên nejimarbar bi ' ..  ziman )
				end
			end
		end
		
    	-- cure
		if (c and c ~= '' and nav == 'lêker') then
			kat = kat .. leker_cure(c, ziman)[2]
		end
		
			--- rengdêr qiyasbar an na 	
		if form == "-" and nav == "rengdêr" then
			kat = kat .. b.bike_kategori_naverok('Rengdêrên neqiyasbar bi ' ..  ziman )
		end

				
		-- ji bo [[:Kategorî:Palîndrom]]
		if mw.title.getCurrentTitle().nsText ~= "Jinûvesazî" and mw.ustring.len(mw.title.getCurrentTitle().subpageText)>1
			and require('Modul:palindromes').is_palindrome(
				mw.title.getCurrentTitle().subpageText, lang, sc
				) then
			kat = kat .. b.bike_kategori_naverok('Palîndrom bi ' ..  ziman )
		end

		
		-- Kategorî ji bo zimanê kurdî
		if (kod == 'ku' and nav == 'navdêr' and (z == "-") and form ~= 'erê') then
			kat =  kat
		elseif (kod == 'ku' and nav == 'navdêr' and (z == nil or z == '' or z == '?') and form ~= 'erê') then
			kat =  kat .. b.bike_kategori_naverok('Navdêrên bêzayend (kurdî)')
		end
		if (kod == 'ku' and nav == 'lêker' and (c == nil or c == '' or c == '?') and form ~= 'erê') then
			kat =  kat .. b.bike_kategori_naverok('Lêkerên bêcure (kurdî)')
		end
		
		return nivisaSer .. kat
     
	else
		return  '<span style="color:red;font-size:85%;"><i>(çewtiya koda zimanî, bnr. [[Modul:ziman/dane|*]])</i></span>' .. b.bike_kategori_naverok('Rûpelên bi çewtiyên koda zimanî')
	end
end

return p