Module:Drapeau

De Baripedia
Révision datée du 18 août 2013 à 13:45 par Arthur (discussion | contributions) (1 version)
(diff) ◂ Version précédente | Voir la version actuelle (diff) | Version suivante ▸ (diff)

La documentation pour ce module peut être créée à Module:Drapeau/doc

Erreur de script : Erreur Lua : impossible de créer le processus : proc_open n’est pas disponible. Vérifiez la directive de configuration PHP « disable_functions ».

--[[
This module is intended to replace the functionality of {{drapeau2}} and related
templates.  It provides several methods, including
]]

math_mod = require( "Module:Math" );
gdata = require( "Module:Drapeau/Data" );
globalFrame = nil

drapeau = {};
domainelist={
     defaut = {regexp="[[$main|$name]]" , desc="article sur le pays"}
    ,drapeau = {regexp="Drapeau $du$name" , desc="label du drapeau"}
    ,formelongue = {regexp="[[$main|$namelong]]" , desc="lien vers le pays sous la forme longue"}
    ,football = {regexp="[[Équipe $de$name de football|$name]]" , desc="lien vers la sélection nationale de [[football]] masculin"}
    ,footballF = {regexp="[[Équipe $de$name de football féminin|$name]]" , desc="lien vers la sélection nationale de [[football]] féminin"}
    ,football21 = {regexp="[[Équipe $de$name espoirs de football|$name]]" , desc="lien versla sélection nationale de [[football]] espoirs masculin"}
    ,football17 = {regexp="[[Équipe $de$name de football des moins de 17 ans|$name]]" , desc="lien vers la sélection nationale de [[Coupe du monde de football des moins de 17 ans|football des moins de 17 ans]] masculin"}
    ,football20 = {regexp="[[Équipe $de$name de football des moins de 20 ans|$name]]" , desc="lien vers la sélection nationale de [[Coupe du monde de football des moins de 20 ans|football des moins de 20 ans]] masculin"}
    ,basketball = {regexp="[[Équipe $de$name de basket-ball|$name]]" , desc="lien vers la sélection nationale de [[basket-ball]] masculin"}
    ,basketballF = {regexp="[[Équipe $de$name de basket-ball féminin|$name]]" , desc="lien vers la sélection nationale de [[basket-ball]] féminin"}
    ,volleyball = {regexp="[[Équipe $de$name de volley-ball|$name]]" , desc="lien vers la sélection nationale de [[volley-ball]] masculin"}
    ,volleyballF = {regexp="[[Équipe $de$name de volley-ball féminin|$name]]" , desc="lien vers la sélection nationale de [[volley-ball]] féminin"}
    ,waterpolo = {regexp="[[Équipe $de$name de water-polo masculin|$name]]" , desc="lien vers la sélection nationale de [[water-polo]] masculin"}
    ,waterpoloF = {regexp="[[Équipe $de$name de water-polo féminin|$name]]" , desc="lien vers la sélection nationale de [[water-polo]] féminin"}
    ,handball = {regexp="[[Équipe $de$name de handball masculin|$name]]" , desc="lien vers la sélection nationale de [[handball]] masculin"}
    ,handballF = {regexp="[[Équipe $de$name de handball féminin|$name]]" , desc="lien vers la sélection nationale de [[handball]] féminin"}
    ,hockeysurglace = {regexp="[[Équipe $de$name de hockey sur glace|$name]]" , desc="lien vers la sélection nationale de [[hockey sur glace]] masculin"}
    ,hockeysurglaceF = {regexp="[[Équipe $de$name de hockey sur glace féminin|$name]]" , desc="lien vers la sélection nationale de [[hockey sur glace]] féminin"}
    ,hockeysurgazon = {regexp="[[Équipe $de$name de hockey sur gazon|$name]]" , desc="lien vers la sélection nationale de [[hockey sur gazon]] masculin"}
    ,hockeysurgazonF = {regexp="[[Équipe $de$name de hockey sur gazon féminin|$name]]" , desc="lien vers la sélection nationale de [[hockey sur gazon]] féminin"}
    ,beachsoccer = {regexp="[[Équipe $de$name de beach soccer|$name]]" , desc="lien vers la sélection nationale de [[beach soccer]]"}
    ,cricket = {regexp="[[Équipe $de$name de cricket|$name]]" , desc="lien vers la sélection nationale de [[cricket]]"}
    ,footballamericain = {regexp="[[Équipe $de$name de football américain|$name]]" , desc="lien vers la sélection nationale de [[football américain]]"}
    ,footballaustralien = {regexp="[[Équipe $de$name de football américain|$name]]" , desc="lien vers la sélection nationale de [[football australien]]"}
    ,futsal = {regexp="[[Équipe $de$name de futsal|$name]]" , desc="lien vers la sélection nationale de [[futsal]]"}
    ,gymnastique = {regexp="[[Équipe $de$name de gymnastique artistique masculine|$name]]" , desc="lien vers la sélection nationale de [[gymnastique artistique]] masculine"}
    ,gymnastiqueF = {regexp="[[Équipe $de$name de gymnastique artistique féminine|$name]]" , desc="lien vers la sélection nationale de [[gymnastique artistique]] féminine"}
    ,jo = {regexp="[[$name aux Jeux olympiques|$name]]" , desc="lien vers la délégation olympique"}
    ,jocio = {regexp="[[$name aux Jeux olympiques|$cio]]" , desc="lien vers la délégation olympique mais label sous forme du code CIO"}
    ,rugby = {regexp="[[Équipe $de$name de rugby à XV|$name]]" , desc="lien vers la sélection nationale de [[rugby à XV]] masculin"}
    ,rugbyF = {regexp="[[Équipe $de$name de rugby à XV féminin|$name]]" , desc="lien vers la sélection nationale de [[rugby à XV]] féminin"}
    ,rugby7 = {regexp="[[Équipe $de$name de rugby à 7|$name]]" , desc="lien versla sélection nationale de [[rugby à 7]] masculin"}
    ,rugby13 = {regexp="[[Équipe $de$name de rugby à XIII|$name]]" , desc="lien vers la sélection nationale de [[rugby à XIII]] masculin"}
    ,tennis = {regexp="[[Équipe $de$name de Coupe Davis|$name]]" , desc="lien vers la sélection nationale de [[tennis]] de [[Coupe Davis]]"}
    ,tennisF = {regexp="[[Équipe $de$name de Fed Cup|$name]]" , desc="lien vers la sélection nationale de [[tennis]] de [[Fed Cup]]"}
    ,futsal = {regexp="[[Équipe $de$name de futsal|$name]]" , desc="lien vers la sélection nationale de [[futsal]] masculin"}
    ,futsalF = {regexp="[[Équipe $de$name de futsal féminin|$name]]" , desc="lien vers la sélection nationale de [[futsal]] féminin"}
    ,cyclismesurpiste = {regexp="[[Équipe $de$name de cyclisme sur piste|$name]]" , desc="lien vers la sélection nationale de [[cyclisme sur piste]] masculin"}
    ,cyclismesurpisteF = {regexp="[[Équipe $de$name de cyclisme sur piste féminin|$name]]" , desc="lien vers la sélection nationale de [[cyclisme sur piste]] féminin"}
    ,cyclismesurroute = {regexp="[[Équipe $de$name de cyclisme sur route|$name]]" , desc="lien vers la sélection nationale de [[cyclisme sur route]] masculin"}
    ,cyclismesurrouteF = {regexp="[[Équipe $de$name de cyclisme sur route féminin|$name]]" , desc="lien vers la sélection nationale de [[cyclisme sur route]] féminin"}
    ,gentileMS = {regexp="[[$name|$gentileMS]]" , desc="lien vers la nationalité"}
    ,gentileFS = {regexp="[[$name|$gentileFS]]" , desc="lien vers la nationalité"}
    ,gentileMP = {regexp="[[$name|$gentileMP]]" , desc="lien vers la nationalité"}
    ,gentileFP = {regexp="[[$name|$gentileFP]]" , desc="lien vers la nationalité"}
}
--Aide:Fonction_genre
genre={
 ms=  {le="le " ,du="du "	,de="de "	,au="au "	,en="au "}
,msa= {le="l'"	,du="de l'"	,de="d'"	,au="à l'"	,en="en "}
,msi= {le=""    ,du="de "	,de="de "	,au="à "	,en="à "}
,msia={le=""	,du="d'"	,de="d'"	,au="à "	,en="à "}
,fs=  {le="la "	,du="de la ",de="de  "  ,au="à la "	,en="en "}
,fsa= {le="l'"	,du="de l'"	,de="de l'"	,au="à l'"	,en="en "}
,fsi= {le=""	,du="de "	,de="de "	,au="à "	,en="à "}
,fsia={le=""	,du="de l'"	,de="d'"	,au="à "	,en="à "}
,mp=  {le="les ",du="des "	,de="des "	,au="aux "	,en="aux "}
,fp=  {le="les ",du="des "	,de="des "	,au="aux "	,en="aux "}
}
--[[
pays

Affiche le pays accompagné de son drapeau {{drapeau2}}

Usage:
    {{ Invoke:Drapeau | pays | France }}
    
]]
function printDrapeau(imgsrc,size)    
    local border='';  
    local alt='';
    if imgsrc["flagborder"] ~= "no" then
        border='border|'
    end
    
    alt=string.gsub(domainelist["drapeau"]["regexp"], "%$(%w+)", genre[imgsrc["genre"]])
    alt=string.gsub(alt, "%$(%w+)", imgsrc)
    alt=string.gsub(alt, "%$(%w+)", imgsrc) --dernière passe pour $name
    
    return '<span class="flagicon">' ..
                '[[Fichier:' .. imgsrc["flag"] .. '|' .. size ..'px|' .. border .. alt ..']]' ..
            '</span>';
end

function printCible(text,domaine)    
    local target='';
    if text["main"] ~= nil then
        target=string.gsub(domainelist[domaine]["regexp"], "%$(%w+)", genre[text["genre"]])
        target=string.gsub(target, "%$(%w+)", text)
        target=string.gsub(target, "%$(%w+)", text) --dernière passe pour $name
    end
    return target;
end

function _latinise(tmparg)
            --2>--remove case
            tmparg=mw.ustring.lower(tmparg);
            --2>--remove acccent
            tmparg=mw.ustring.gsub(tmparg, "[àáâãäå]", "a");
            tmparg=mw.ustring.gsub(tmparg, "[æ]", "ae");
            tmparg=mw.ustring.gsub(tmparg, "[ç]", "c");
            tmparg=mw.ustring.gsub(tmparg, "[èéêë]", "e");
            tmparg=mw.ustring.gsub(tmparg, "[ìíîï]", "i");
            tmparg=mw.ustring.gsub(tmparg, "[ñ]", "n");
            tmparg=mw.ustring.gsub(tmparg, "[òóôõö]", "o");
            tmparg=mw.ustring.gsub(tmparg, "[œ]", "oe");
            tmparg=mw.ustring.gsub(tmparg, "[ùúûü]", "u");
            tmparg=mw.ustring.gsub(tmparg, "[ýÿ]", "y");
            --3>--remove ponct
            tmparg=mw.ustring.gsub(tmparg, "[' -_]", "");
            
            return tmparg;
end

function _cletri(tmparg)
            --2>--remove case
            tmparg=mw.ustring.lower(tmparg);
            --2>--remove acccent
            tmparg=mw.ustring.gsub(tmparg, "[àáâãäå]", "a");
            tmparg=mw.ustring.gsub(tmparg, "[æ]", "ae");
            tmparg=mw.ustring.gsub(tmparg, "[ç]", "c");
            tmparg=mw.ustring.gsub(tmparg, "[èéêë]", "e");
            tmparg=mw.ustring.gsub(tmparg, "[ìíîï]", "i");
            tmparg=mw.ustring.gsub(tmparg, "[ñ]", "n");
            tmparg=mw.ustring.gsub(tmparg, "[òóôõö]", "o");
            tmparg=mw.ustring.gsub(tmparg, "[œ]", "oe");
            tmparg=mw.ustring.gsub(tmparg, "[ùúûü]", "u");
            tmparg=mw.ustring.gsub(tmparg, "[ýÿ]", "y");
            --3>--remove ponct
            tmparg=mw.ustring.gsub(tmparg, "['-_]", " ");
            --4>--remove forme longue            
            tmparg=mw.ustring.gsub(tmparg, "^republique ", "");
            tmparg=mw.ustring.gsub(tmparg, "^iles ", "");
            tmparg=mw.ustring.gsub(tmparg, "^de ", "");
            tmparg=mw.ustring.gsub(tmparg, "^du ", "");
            
            return '<span class="datasortkey" data-sort-value="'..tmparg..'" style="display:none;">&zwj;</span>';
end


function drapeau.list(frame)
    globalFrame = frame
    local args = frame.args
    local res="";
    
    if args[1] == nil then
        local pFrame = frame:getParent();
        args = pFrame.args;
        for k,v in pairs( frame.args ) do
            args[k] = v;
        end
    end
    if args[2] == nil then
        args[2]=142 --France par défaut
    end
    

    if(args[1]=='libelle') then    
        res="{|class='wikitable' \n!code!!descriptif!!exemple "..mw.wikibase.sitelink(gdata.data[142]["qid"] ).."!!exemple "..mw.wikibase.sitelink(gdata.data[31]["qid"] ).."!!exemple "..mw.wikibase.sitelink(gdata.data[30]["qid"] ).."\n|-\n"
        for k,v in pairs( domainelist ) do
            res= res .. "|<code>" .. k .. "<\code> ||".. domainelist[k]["desc"] .. "||" ..printCible(gdata.data[142],k) .. "||" ..printCible(gdata.data[31],k) .. "||" ..printCible(gdata.data[30],k) .. "\n|-\n"
        end
        res=res .. "|}"
    end
    if(args[1]=='pays') then    
        for k,v in pairs( gdata.data ) do
            res= res .. "*<code>" .. gdata.data[k]["name"] .. "<\code> : "..mw.wikibase.sitelink(gdata.data[k]["qid"] ) .."\n"
        end
    end
    return res;

end

function drapeau.List(frame)
    return drapeau.list(frame)
end


function drapeau.pays(frame)
    globalFrame = frame
    local args = frame.args
    local tmparg;
    if args[1] == nil then
        local pFrame = frame:getParent();
        args = pFrame.args;
        for k,v in pairs( frame.args ) do
            args[k] = v;
        end
    end
    
    for i=1,10 do 
        if args[i] == nil then 
            args[i] = ""
        else
            --1>--remove whitespace
            args[i]=args[i]:match( '^%s*(.-)%s*$' );
            args[i]=_latinise(args[i]);
        end        
    end

    --par défaut
    if (args["taille"] == nil) then args["taille"] = '20x15' end
    if (args["domaine"] == nil) then args["domaine"] = 'defaut' end
    if (args["align"] == nil) then args["align"] = 'left' end
    if (args["lien"] == nil) then args["lien"] = 'oui' end
    
    
    local q=0;
    local data;
    if(args["CIO"]~= nil) then
        q=gdata.idByCIO[args["CIO"]]
    else
        q=gdata.idByName[args[1]]        
    end
    local data=gdata.data[q];    
    --local data=paysFlag[args[1]];
    local res='';
    if(args["t"] == '1') then
        res=res .. _cletri(data["name"]);
    end    
    if(args["align"] == 'left') then
        res=res .. printDrapeau(data,args["taille"])..'&nbsp;';
    end    
    if(args["cible"] ~= nil) then
        res=res .. args["cible"] .. '&nbsp;<span style="font-size:90%;" class="nowrap">(';
    end
    if(args["lien"] == 'oui') then
        res=res ..printCible(data,_latinise(args["domaine"]));
    end
    if(args["cible"] ~= nil) then
        res=res  .. ')</span>';
    end    
    if(args["align"] == 'right') then
        res=res .. '&nbsp;' .. printDrapeau(data,args["taille"]);
    end
    return res;

end

function drapeau.Pays(frame)
    return drapeau.pays(frame)
end


return drapeau