« Module:IdentifierRACJ » : différence entre les versions
Aller à la navigation
Aller à la recherche
Ajout d'une fonction pour extraire le numéro de dossier |
Nouvelle version |
||
| (11 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
local p = {} | local p = {} | ||
-- Extrait | -- Extrait : dd-500xxxx prioritairement, sinon dd-ddddddd qui n’est pas suivi de -ddd | ||
function p.extraireNoDeDecision(frame) | function p.extraireNoDeDecision(frame) | ||
local texte = frame.args[1] or "" | local texte = frame.args[1] or "" | ||
local identifiant = string.match(texte, "(%d%d%-%d%d%d%d%d%d%d)") | |||
return | -- 1. Essayer de capturer un identifiant 500xxxx | ||
local identifiant = string.match(texte, "(%f[%d]%d%d%-500%d%d%d%d%f[%D])") | |||
if identifiant then | |||
return identifiant | |||
end | |||
-- 2. Sinon, chercher un identifiant dd-ddddddd NON suivi de -ddd | |||
for id in string.gmatch(texte, "%d%d%-%d%d%d%d%d%d%d") do | |||
local startPos, endPos = string.find(texte, id, 1, true) | |||
if startPos then | |||
local suivant = string.sub(texte, endPos + 1, endPos + 4) | |||
if not suivant:match("^%-%d%d%d") then | |||
return id | |||
end | |||
end | |||
end | |||
return "" | |||
end | end | ||
-- Extrait | -- Extrait tous les identifiants sauf celui de décision | ||
function p.extraireNoDeDossier(frame) | function p.extraireNoDeDossier(frame) | ||
local texte = frame.args[1] or "" | local texte = frame.args[1] or "" | ||
local | |||
if | -- Utilise la fonction précédente pour déterminer ce qui doit être exclu | ||
-- | local decision = p.extraireNoDeDecision{ args = { texte } } | ||
local deja = { [decision] = true } | |||
local prefixesExclus = {} | |||
local identifiants = {} | |||
-- 1. dd-ddddddd-ddd | |||
for id in string.gmatch(texte, "(%d%d%-%d%d%d%d%d%d%d%-%d%d%d)") do | |||
if not deja[id] then | |||
deja[id] = true | |||
prefixesExclus[string.match(id, "^(%d%d%-%d%d%d%d%d%d%d)")] = true | |||
table.insert(identifiants, id) | |||
end | |||
end | |||
-- 2. dd-ddddddd (sauf préfixes déjà capturés) | |||
for id in string.gmatch(texte, "(%d%d%-%d%d%d%d%d%d%d)") do | |||
if not deja[id] and not prefixesExclus[id] then | |||
deja[id] = true | |||
table.insert(identifiants, id) | |||
end | |||
end | |||
-- 3. ddd-ddd | |||
for id in string.gmatch(texte, "(%f[%d]%d%d%d%-%d%d%d%f[%D])") do | |||
if not deja[id] then | |||
deja[id] = true | |||
table.insert(identifiants, id) | |||
end | |||
end | |||
-- 4. dddd-ddd | |||
for id in string.gmatch(texte, "(%f[%d]%d%d%d%d%-%d%d%d%f[%D])") do | |||
if not deja[id] then | |||
deja[id] = true | |||
table.insert(identifiants, id) | |||
end | |||
end | end | ||
return table.concat(identifiants, ", ") | |||
end | end | ||
return p | return p | ||
Dernière version du 2 juin 2025 à 19:00
local p = {}
-- Extrait : dd-500xxxx prioritairement, sinon dd-ddddddd qui n’est pas suivi de -ddd
function p.extraireNoDeDecision(frame)
local texte = frame.args[1] or ""
-- 1. Essayer de capturer un identifiant 500xxxx
local identifiant = string.match(texte, "(%f[%d]%d%d%-500%d%d%d%d%f[%D])")
if identifiant then
return identifiant
end
-- 2. Sinon, chercher un identifiant dd-ddddddd NON suivi de -ddd
for id in string.gmatch(texte, "%d%d%-%d%d%d%d%d%d%d") do
local startPos, endPos = string.find(texte, id, 1, true)
if startPos then
local suivant = string.sub(texte, endPos + 1, endPos + 4)
if not suivant:match("^%-%d%d%d") then
return id
end
end
end
return ""
end
-- Extrait tous les identifiants sauf celui de décision
function p.extraireNoDeDossier(frame)
local texte = frame.args[1] or ""
-- Utilise la fonction précédente pour déterminer ce qui doit être exclu
local decision = p.extraireNoDeDecision{ args = { texte } }
local deja = { [decision] = true }
local prefixesExclus = {}
local identifiants = {}
-- 1. dd-ddddddd-ddd
for id in string.gmatch(texte, "(%d%d%-%d%d%d%d%d%d%d%-%d%d%d)") do
if not deja[id] then
deja[id] = true
prefixesExclus[string.match(id, "^(%d%d%-%d%d%d%d%d%d%d)")] = true
table.insert(identifiants, id)
end
end
-- 2. dd-ddddddd (sauf préfixes déjà capturés)
for id in string.gmatch(texte, "(%d%d%-%d%d%d%d%d%d%d)") do
if not deja[id] and not prefixesExclus[id] then
deja[id] = true
table.insert(identifiants, id)
end
end
-- 3. ddd-ddd
for id in string.gmatch(texte, "(%f[%d]%d%d%d%-%d%d%d%f[%D])") do
if not deja[id] then
deja[id] = true
table.insert(identifiants, id)
end
end
-- 4. dddd-ddd
for id in string.gmatch(texte, "(%f[%d]%d%d%d%d%-%d%d%d%f[%D])") do
if not deja[id] then
deja[id] = true
table.insert(identifiants, id)
end
end
return table.concat(identifiants, ", ")
end
return p