Module:Lien frontière

 Documentation[créer] [purger]
local p = {}
local Drapeau = require 'Module:Drapeau'
local Outils = require 'Module:Outils'

local function _traitePrefixe(texte)
    local result, count = texte
        :gsub("^Drapeau de ", "")
        :gsub("^Drapeau du ", "le ")
        :gsub("^Drapeau des ", "les ")
        :gsub("^Drapeau d'", "")
    return result
end

local function _latinise_letters(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");

            return tmparg;
end
--[[
functions that compare two strings as plain text.
]]
local function _triePays(a, b)
    if _latinise_letters(a) < _latinise_letters(b) then
        return a, b
    else
        return b, a
    end
end

function p.genereLien(frame)
    local paysA = Outils.trim(frame.args[1])
    local paysB = Outils.trim(frame.args[2])
    
	--local premierPays = p.minimum(paysA, paysB)
    local premierPays, secondPays = _triePays(paysA, paysB)
    
    local premierTexteDrapeau = Drapeau.pays(frame:newChild{args = {
        [1] = premierPays,
        domaine = 'drapeau',
        align = 'non',
        t = '0',
    }})
    local premierTextePays = _traitePrefixe(premierTexteDrapeau)

    --local secondPays = p.maximum(paysA, paysB)
    local secondTexteDrapeau = Drapeau.pays(frame:newChild{args = {
        [1] = secondPays,
        domaine = 'drapeau',
        align = 'non',
        t = '0',
    }})
    local secondTextePays = _traitePrefixe(secondTexteDrapeau)

    local texteLien = paysB
    local suffixe = Outils.trim(frame.args[3])
    if suffixe then
        texteLien = texteLien .. ' ('.. suffixe ..')'
    end

    return '[[Frontière entre ' .. premierTextePays .. ' et ' .. secondTextePays .. '|' .. texteLien .. ']]'
end

function p.genereCat(frame)
    local paysA = Outils.trim(frame.args[1])
    
    local premierTexteDrapeau = Drapeau.pays(frame:newChild{args = {
        [1] = paysA,
        domaine = 'drapeau',
        align = 'non',
        t = '0',
    }})
    local premierTextePays, count = premierTexteDrapeau:gsub("^Drapeau ", "Frontières ")

    return '[['..premierTextePays .. '|' .. paysA .. ']]'
end
    
return p