Aller au contenu

Module:Alserv1

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 4 novembre 2022 à 17:48 et modifiée en dernier par Alserv (discuter | contributions) (ajout de documentation). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[créer] [purger]
--[[
	Analyse des catégories temporelles.
	
	Module adapté de:
	https://en.wikipedia.org/wiki/Module:Year_category_type
	avec les modifications suiventes:
	-	La fonction principale est nommée type() au lieu de main() pour permettre
		une extension aisée avec de nouvelles fonctions.
	-	Une nouvelle fonction typede() analyse son argument au lieu du titre de
		la page courante, pour faciliter les tests.
	-	L'analyse du titre et la valeur retournée sont traduites en français.
	]]
local p = {}

--[[
	Types de pages.
	
	Cette table supporte l'analyse du titre d'une page.
	Clé:	le type de la page
	Valeur:	le pattern correspondant à ce titre
	]]
local types = {
						--  1363
	annee				= "^%d*$",
						--  970 av. J.-C.
	annee_avant			= "^%d* av%. J%.%-C%.$",
						--  Années 1360
	decennie			= "^Années %d*0$",
						--  Années 970 av. J.-C.
	decennie_avant		= "^Années %d*0 av%. J%.%-C%.$",
						--  XIVe siècle
	siecle				= "^[IVXLCDM]+er? siècle$",
						--  Xe siècle av. J.-C.
	siecle_avant		= "^[IVXLCDM]+er? siècle av%. J%.%-C%.$",
						--  IIe millénaire
	millenaire			= "^[IVXLCDM]+er? millénaire$",
						--  Ier millénaire av. J.-C.
	millenaire_avant	= "^[IVXLCDM]+er? millénaire av%. J%.%-C%.$",
}

--[[
	Retourne le type du titre d'une page.
	Argument:	titre à analyser
	Résultat:	une des valeurs suivantes:
				annee, annee_avant, decennie, decennie_avant, siecle,
				siecle_avant, millenaire, millenaire_avant, inconnu
	
	Un simple string.match() serait suffisant, mais il est préférable d'utiliser
	mw.ustring.match() pour se prémunir au cas où une modification ultérieure
	introduirait des catégories unicode dans les patterns.
	]]
local function type	(chaine)	
	for unit, pattern in pairs(types) do
		if mw.ustring.match(chaine, pattern) then
			return unit
		end
	end
	return "inconnu"
end

--[[
	Retourne le type du titre passé en argument.
	Argument:	titre de la page
	Résultat:	une des valeurs suivantes:
				annee, annee_avant, decennie, decennie_avant, siecle,
				siecle_avant, millenaire, millenaire_avant, inconnu
	
	Cette fonction est utile pour faire des tests sans devoir créer des pages
	de test avec des titres particuliers.
	]]
function p.typede	(frame)		
	return type(frame.args[1])
end

--[[
	Retourne le type du titre de la page courante.
	Argument:	aucun
	Résultat:	une des valeurs suivantes:
				annee, annee_avant, decennie, decennie_avant, siecle,
				siecle_avant, millenaire, millenaire_avant, inconnu
	]]
function p.type		(frame)		
	return type(mw.title.getCurrentTitle().text)
end

return p