Modul:werger

Ji Wîkîferheng
Here cem: navîgasyon, lêgerîn
-- Çavkanî: fr.wiktionary.org [[Module:traduction]]
b = require('Modul:bases')
lang = require('Modul:ziman')

local p = {}

local cats = {}
-- Activer pour voir les catégories générées
-- Seulement pour déboguer avec l'aperçu : désactiver en sauvegardant
local isdebug = false

function _categorie_section(nom_cat, clef, ecrit)
    if isdebug then
    	if clef then
        	return b.fait_categorie(nom_cat, nil, true) .. '(' .. clef .. ')'
        else
        	return b.fait_categorie(nom_cat, nil, true)
        end
    else
        return b.fait_categorie_contenu(nom_cat, clef, ecrit)
    end
end

function _fait_span_trad(texte, code)
    if (texte ~= nil and code ~= nil) then
        return '<span class="trad-' .. code .. '">' .. texte .. '</span>'
    else
        return ''
    end
end

-- Fonction pour écrire l'équivalent du modèle Z
function p.Z(frame)
    -- Récupération des variables nécessaires à la création du titre
    local args = frame:getParent().args
    args = b.trim_parametres(args)
    local code  = args[1]
    local trier = false
    if (args[2] == 'trier') then trier = true end
    local article = mw.title.getCurrentTitle()
    
    -- Pas de code de langue, indispensable
    if code == nil or code == '' then
    	table.insert(cats, _categorie_section('Wîkîferheng:Wergerên Z bê ziman'))
        return '[[Wîkîferheng:Lîsteya zimanan|Navê zimanê]]' .. table.concat(cats)
    end
    
    -- A-t-on une langue correspondant au code ?
    local langue = lang.get_nom(code)
    local textet = {}
    
    -- Oui : écrit le texte
    if (langue ~= nil and langue ~= '') then
        table.insert(textet, b.ucfirst(langue))
        
        -- Catégories
        local newcattext = trier and 'Wîkîferheng:Traductions à trier en ' or 'Wergerên bi '
        table.insert(cats, _categorie_section(newcattext .. langue))
    
    -- Langue sans code! Catégorisée pour la retrouver
    else
        table.insert(textet, '<i><font color="red">' .. code .. '</font></i>[[Modul:ziman/dane|*]]')
        
        table.insert(cats, _categorie_section('Wîkîferheng:Wergerên Z bi koda ziman a nediyarkirî', code))
    end
    
    texte = _fait_span_trad(table.concat(textet), code)
    
    return texte .. table.concat(cats)
end

---------------------------------------------------------------------------------------------------------
-- Modul bo şablonên {{W}}, {{W+}} û {{W-}}
-- {{W|koda zimanê|peyv|zayend|jimar|tr=transliterasyon|cuda=|guman=}}

-- kurtenav
function kurtenav(zayend)
    if zayend == nil or zayend == '' then return nil end
	local sernav
	local kurte
    local kat = ''
    
	if zayend == 'm' or zayend == 'f'  then sernav = 'Zayend: mê'  kurte = 'm'
    elseif  zayend == 'n' then sernav = 'Zayend: nêr'  kurte = 'n'
    elseif  zayend == 'nt' then sernav = 'Zayend: nêtar'  kurte = 'nt'
    elseif  zayend == 'mn' then sernav = 'Zayend: mê û nêr'  kurte = 'mê û nêr'
    elseif  zayend == 'c' then sernav = 'Zayend: ?'  kurte = 'c'
    elseif  zayend == 'y' or zayend == 'yj' or zayend == 's'  then sernav = 'Jimar: yekjimar / kitjimar'  kurte = 'yj' 
    elseif  zayend == 'p' or zayend == 'pj' or zayend == 'kj' then sernav = 'Jimar: pirjimar'  kurte = 'pj' 
	else 
		sernav = 'Zayend li gorî standardê nehatiye nivîsandin.'
		kurte = '<span style="color:red; font-size:90%">(zayend?)</span>'
		kat = '[[Kategorî:Rûpelên bi çewtiyên zayend û jimarê]]'
    end
	
   return {'<span style="cursor:help;" title="' .. sernav .. '">' 
          .. '<span style="border-bottom: 1px dotted #555555; "><i>' .. kurte .. '</i></span></span>', kat}
end

-- cuda
function link_cuda(kod, peyv, ziman, cuda)
	if cuda == nil or cuda == '' then return nil end
    return '<span lang="' .. kod .. '" xml:lang="' .. kod .. '">'
                  .. '[[' .. peyv ..'#'.. ziman .. '|' .. cuda .. ']]</span>'
end

-- guman
function link_guman(link_hundir)
	if link_hundir == nil or link_hundir == '' then return nil end
    return '<sup style="font-size:90%" title="Gumanek ser vê wergerê heye"><b><i>?</i></b></sup>'
        .. '<span style="border-bottom:2px solid orange">' .. link_hundir .. '</span>'
end

-- kod, peyv, zayend, jimar, tr (an R), cuda, guman
function p.W(frame)
    local args = frame:getParent().args
    local cure = frame.args[1]
    local kod = args[1] 
    local peyv = args[2]
    local zayend = args[3]
    local jimar  = args[4]
    
	if kod == nil or kod == '' then return nil end
    if peyv == nil or peyv == '' then return nil end
    
    local trans = args['tr']  or args['R']
    local cuda = args['cuda']
    local guman = args['guman']
   
    local ziman = b.ucfirst(lang.get_nom(kod))
    if ziman == nil then ziman = '' end
    
    local link_cuda = link_cuda(kod, peyv, ziman, cuda)
    local link_hundir = '<span lang="' .. kod .. '" xml:lang="' .. kod .. '">'
                  .. '[[' .. peyv ..'#'.. ziman .. '|' .. peyv .. ']]</span>'
    
    -- W+ / W- /W
    local link_derve = ''              
    if (cure == '+') then 
       link_derve ='&nbsp;<sup>[[:' .. kod .. ':' .. peyv .. '|→&nbsp;' .. kod .. ']]' .. '</sup>'
    elseif (cure == '-') then 
       link_derve = ''
    else	
       link_derve ='&nbsp;<sup>[[:' .. kod .. ':' .. peyv .. '|<span style="color:grey>→&nbsp;' .. kod .. '</span>]]' .. '</sup>'
    end

   -- çêkirina şablon û kategoriyan
    local link = {link_hundir .. link_derve}
    local kat = ''
      
    if (cuda) then link = {link_cuda} link_hundir = link_cuda end
    if (guman == 'erê')  then link = {link_guman(link_hundir) .. link_derve}  kat = '[[Kategorî:Kontrola wergerê]]' end
    if (zayend and zayend ~= '')  then 
       kat = kat .. kurtenav(zayend)[2]
       table.insert(link, ' ' ..  kurtenav(zayend)[1])
    end
    if (jimar  and jimar ~= '')  then
       if jimar == jimar == '' then return nil end
       kat = kat ..kurtenav(jimar)[2]
       table.insert(link, ' û ' .. kurtenav(jimar)[1])
    end
    if (trans)  then table.insert(link, ' (' .. trans .. ')') end
    
   return  table.concat(link) .. kat
    
end

return p