Documentation[voir] [modifier] [historique] [purger]

Page de test : Discussion module:section/analyse/test.


b = require("Module:bases")
local titres = mw.loadData('Module:section article/data')
local types = mw.loadData('Module:types de mots/data')

local p = {}

function _get_alias(alias_table)
    aliases = {}
    for code, valeur in pairs(alias_table) do
        if aliases[valeur] == nil then aliases[valeur]={} end	-- Initialise la liste des alias pour "valeur" si elle n'existe pas encore
        table.insert(aliases[valeur], code)						-- Ajoute le nouvel alias correspondant à "valeur"
    end
    return aliases
end

function _get_niveau(niveau)
	if niveau == nil then return '====' end	-- Le niveau le plus profond par défaut
	if niveau == 1 then return '=' end
	if niveau == 2 then return '==' end
	if niveau == 3 then return '===' end
	if niveau == 4 then return '====' end
	--if niveau == 5 then return '=====' end
	return '====='	-- Le niveau le plus profond par défaut
end

function p.affiche_code_remplacement_python()
	local resultat = {}
 
    table.insert(resultat, '<pre>')
    
    -- PARTIE "SECTIONS DE TITRES NORMAUX" (titres)
    table.insert(resultat, '# Sections de titres normaux')
    -- Table inversée des alias
    titres_al = _get_alias(titres['alias'])
    
    for code, t in pairs(titres['texte']) do
        local alias = titres_al and titres_al[code] or {}
        table.insert(alias, code)	-- On ajoute le code comme alias également pour éviter les problèmes
        local niveau = _get_niveau(t['niveau'])
        
    	-- Remplacement des alias par le nom standard en corrigant le niveau au passage si besoin
        local replaced = table.concat(alias, '|')
        local replacements = '(u"\\n[\\t ]*=*[\\t ]*\\{\\{S\\|(' .. replaced .. ')\\}\\}[\\t ]*=*[\\t ]*\\r", u"\\n' .. niveau .. ' {{S|' .. code .. '}} ' .. niveau .. '"),';
        table.insert(resultat, replacements)
    end
    
    -- PARTIE "SECTIONS DE TYPES" (types)
    table.insert(resultat, '\n# Sections de types')
    -- Table inversée des alias
    types_al = _get_alias(types['alias'])
    
    for code, t in pairs(types['texte']) do
        local alias = types_al and types_al[code] or {}
        table.insert(alias, code)	-- On ajoute le code comme alias également pour éviter les problèmes
        
    	-- Remplacement des alias par le nom standard en corrigant le niveau au passage si besoin
        local replaced = table.concat(alias, '|')
        replacements = '(u"\\n[\\t ]*=*[\\t ]*\\{\\{S\\|(' .. replaced .. ')\\|(.+?)\\}\\}[\\t ]*=*[\\t ]*\\r", u"\\n=== {{S|' .. code .. '|" + r"\\2}} ==="),';
        table.insert(resultat, replacements)
    end
    
    table.insert(resultat, '</pre>')
 
    return table.concat(resultat, "\r\n")
end

function p.affiche_code_remplacement_javascript()
	local resultat = {}
 
    table.insert(resultat, '<pre>')
    
    -- PARTIE "SECTIONS DE TITRES NORMAUX" (titres)
    table.insert(resultat, '// Sections de titres normaux')
    -- Table inversée des alias
    titres_al = _get_alias(titres['alias'])
    
    for code, t in pairs(titres['texte']) do
        local alias = titres_al and titres_al[code] or {}
        table.insert(alias, code)	-- On ajoute le code comme alias également pour éviter les problèmes
        
        local niveau = t['niveau']
        if niveau == 'tous' then
        	niveau = 5
        end
        
        -- On fait autant de lignes que d'alias
        for i, al in pairs(alias) do
        	mw.log(code, i, al)
        	local ligne = '"' .. al .. '": {niveau: ' .. niveau .. ', nom_maj: "' .. code .. '"},'
        	table.insert(resultat, ligne)
        end
    end
    
    -- PARTIE "SECTIONS DE TYPES" (types)
    table.insert(resultat, '\n// Sections de types')
    -- Table inversée des alias
    types_al = _get_alias(types['alias'])
    
    for code, t in pairs(types['texte']) do
        local alias = types_al and types_al[code] or {}
        table.insert(alias, code)	-- On ajoute le code comme alias également pour éviter les problèmes
        
        -- On fait autant de lignes que d'alias
        for i, al in pairs(alias) do
        	local ligne = '"' .. al .. '": { niveau: ' .. 3 .. ', nom_maj: "' .. code .. '", hasCode:1},'
        	table.insert(resultat, ligne)
        end
    end
    
    table.insert(resultat, '</pre>')
 
    return table.concat(resultat, "\r\n")
end

function p.affiche_regex_pour_dump()
	-- ébauche
	local res = {}
	table.insert(res, '1. Titres et alias de niveau 4\n\n')
	titres_al = _get_alias(titres['alias'])
	for code, t in pairs(titres['texte']) do
		local alias = titres_al and titres_al[code] or {}
		table.insert(alias, code)
		local replaced = table.concat(alias, '|') .. '|'
		if t['niveau'] == 4 then
			table.insert(res, replaced)
		end
	end
	local res_str = table.concat(res, '')
	return string.sub( res_str, 1, string.len( res_str )-1 )
end

return p