« Module:IdentifierRACJ » : différence entre les versions

Modification pour extraire aussi les numéros de dossier qui ont la forme dd-ddd, ddd-ddd et dddd-ddd en plus de dd-ddddddd qui ne sont pas des numéros de décision (cas entre 2000 et 1er juin 2004)
Nouvelle mouture
Ligne 4 : Ligne 4 :
function p.extraireNoDeDecision(frame)
function p.extraireNoDeDecision(frame)
     local texte = frame.args[1] or ""
     local texte = frame.args[1] or ""
    -- 1. Priorité à ceux dont les 3 premiers chiffres après le tiret sont 500
     local identifiant = string.match(texte, "(%d%d%-500%d%d%d%d)")
     local identifiant = string.match(texte, "(%d%d%-500%d%d%d%d)")
     if identifiant then
     if identifiant then
         return identifiant
         return identifiant
     end
     end
    -- 2. Sinon, match un identifiant générique de type dd-ddddddd
     identifiant = string.match(texte, "(%d%d%-%d%d%d%d%d%d%d)")
     identifiant = string.match(texte, "(%d%d%-%d%d%d%d%d%d%d)")
     return identifiant or ""
     return identifiant or ""
end
end


-- Si un dd-500xxxx est présent, retourne tous les autres identifiants (sauf lui)
-- Extrait tous les identifiants secondaires valides
-- parmi les formats : dd-ddddddd, dd-ddd, ddd-ddd, dddd-ddd
function p.extraireNoDeDossier(frame)
function p.extraireNoDeDossier(frame)
     local texte = frame.args[1] or ""
     local texte = frame.args[1] or ""
Ligne 23 : Ligne 18 :


     local identifiants = {}
     local identifiants = {}
    local deja = {}


     if decision then
     if decision then
        local deja = {}
         deja[decision] = true
         deja[decision] = true


         -- Collecter les identifiants de formats variés
         -- 1. dd-ddddddd
         for id in string.gmatch(texte, "(%d%d%-%d%d%d%d%d%d%d)") do
         for id in string.gmatch(texte, "(%d%d%-%d%d%d%d%d%d%d)") do
             if not deja[id] then
             if not deja[id] then
Ligne 35 : Ligne 30 :
             end
             end
         end
         end
         for id in string.gmatch(texte, "(%d%d%-%d%d%d)") do
 
        -- 2. ddd%-ddd (must not be part of longer match)
         for id in string.gmatch(texte, "(%f[%d]%d%d%d%-%d%d%d%f[%D])") do
             if not deja[id] then
             if not deja[id] then
                 deja[id] = true
                 deja[id] = true
Ligne 41 : Ligne 38 :
             end
             end
         end
         end
         for id in string.gmatch(texte, "(%d%d%d%-%d%d%d)") do
 
            if not deja[id] then
         -- 3. dddd%-ddd
                deja[id] = true
         for id in string.gmatch(texte, "(%f[%d]%d%d%d%d%-%d%d%d%f[%D])") do
                table.insert(identifiants, id)
            end
        end
         for id in string.gmatch(texte, "(%d%d%d%d%-%d%d%d)") do
             if not deja[id] then
             if not deja[id] then
                 deja[id] = true
                 deja[id] = true