Module:Format
La documentation de ce module est générée par le modèle {{Documentation module}}.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
-- Module dédié au formatage de textelocal fun = {}-- Mise en forme des nombres-- Mime le comportement du mot magique formatnum, sans paramètre Rfunction fun.formatnum(frame) return fun.do_formatnum(frame:getParent().args)endfunction fun.do_formatnum(arguments) local number = arguments[1] -- Retourne une chaîne vide si le paramètre est absent ou vide if not number or number == "" then return "" end -- Si la string n'est pas une représentation valide d'un nombre, on la retourne telle quelle if not tonumber(number) then return number end -- Extraction des parties du nombre local start, _, minus, intPart, point, fracPart = number:find("^([^0-9.]?)0*(%d*)(%.?)(%d*)$") -- Le parsage échoue avec par exemple les notations scientifiques : "1e+16" if not start then return number end local result = "" -- Signe moins result = result .. minus -- Partie entière if #intPart > 0 then local index = #intPart for digit in intPart:gfind("%d") do result = result .. digit -- Espace insécable tous les trois chiffres if index % 3 == 1 and index > 1 then result = result .. "\194\160" end index = index - 1 end else -- Ajout d'un zéro si la partie décimale est vide result = result .. "0" end -- Virgule if point ~= "" then result = result .. "," end -- Partie fractionnaire result = result .. fracPart return resultend-- Mise en forme des nombres avec unité-- Basé sur Modèle:Unité, mais sans limitation de nombre d'argumentsfunction fun.unite(frame) return fun.do_unite(frame:getParent().args)end-- Réalisation de la fonction précédentefunction fun.do_unite(arguments) local result = "" -- Formatage de la valeur principale if arguments[1] ~= nil then result = fun.do_formatnum{arguments[1]} end -- Formatage de la puissance de 10 éventuelle if arguments.e ~= nil then result = result .. fun.do_x10{arguments.e} end -- Parcours des unités et exposants local index = 2 while arguments[index] ~= nil do if index == 2 then -- Première unité : espace insécable result = result .. " " else -- Unités suivantes : point médian result = result .. "⋅" end -- Affichage de l'unité result = result .. arguments[index] -- Exposant éventuel if arguments[index+1] ~= nil then result = result .. fun.do_expo{arguments[index+1]} end index = index + 2 end -- Non-retour à la ligne result = "<span class=\"nowrap\">" .. result .. "</span>" return resultend-- Mise en forme des exposants-- Basé sur Modèle:Expfunction fun.expo(frame) return fun.do_expo(frame:getParent().args)end-- Réalisation de la fonction précédentefunction fun.do_expo(arguments) local result = "" if arguments[1] ~= nil then result = result .. arguments[1] end result = "<sup>" .. result .. "</sup>" return resultend-- Mise en forme des puissances de 10-- Basé sur Modèle:x10function fun.x10(frame) return fun.do_x10(frame:getParent().args)end-- Réalisation de la fonction précédentefunction fun.do_x10(arguments) local result = "×10" .. fun.do_expo{arguments[1]} return resultend-- Affichage d'une valeur en parsecs-- Basé sur Modèle:Parsecfunction fun.parsec(frame) return fun.do_parsec(frame:getParent().args)end-- Réalisation de la fonction précédentefunction fun.do_parsec(arguments) local result = "" -- Unités disponibles local units = { pc = {"[[parsec|pc]]", [false] = {1, ""}, [true] = {1, ""}}, kpc = {"[[Kiloparsec|kpc]]", [false] = {1000, ""}, [true] = {0.001, "million"}}, mpc = {"[[Mégaparsec|Mpc]]", [false] = {1, "million"}, [true] = {0.001, "milliard"}}, gpc = {"[[Gigaparsec|Gpc]]", [false] = {1, "milliard"}, [true] = {1, "milliard"}} } -- Valeur principale local resultVal = fun.do_formatnum{(arguments[1] or "")} -- Unité utilisée local unitData = (units[arguments[2]] or units.pc) if arguments.marge ~= nil or arguments.sup ~= nil then -- Marge éventuelle if arguments.marge ~= nil then local resultMarge = "" ; if tonumber(arguments.marge) ~= nil then resultMarge = "<small>±" .. arguments.marge .. "</small>" else resultMarge = arguments.marge end resultVal = resultVal .. resultMarge end -- Deuxième valeur éventuelle if arguments.sup ~= nil then resultVal = resultVal .. " à " .. arguments.sup end else -- "Environ" si c'est une valeur brute seule result = result .. "environ " end -- Affichage de la valeur result = result .. fun.do_unite{resultVal,unitData[1]} .. " " -- Affichage de la conversion en années-lumière local numVal = tonumber(arguments[1]) if numVal ~= nil then -- On utilise un autre ordre de grandeur si la valeur est trop grande local isBigVal = (numVal*3.2616 >= 1000) -- Valeur en années-lumière local alVal = numVal*unitData[isBigVal][1]*3.2616 -- Première valeur result = result .. "(∼" .. fun.do_formatnum{fun.do_chiffresSignificatifs{alVal,3}} .. " " if arguments.sup ~= nil and tonumber(arguments.sup) ~= nil then -- Deuxième valeur éventuelle alVal = tonumber(arguments.sup)*unitData[isBigVal][1]*3.2616 result = result .. "à " .. fun.do_formatnum{fun.do_chiffresSignificatifs{alVal,3}} .. " " end -- La dernière valeur affichée (alVal) entraîne-t-elle un pluriel ? local unitFull = "" if unitData[isBigVal][2] ~= "" then -- Il faut avoir un mot à mettre au pluriel if alVal >= 1.995 then unitFull = "s" end unitFull = unitData[isBigVal][2] .. unitFull .. " d'" end -- Affichage de l'unité result = result .. unitFull .. "[[Année-lumière|a.l.]])" ; end return resultend-- Affichage d'un nombre avec chiffres significatifsfunction fun.chiffresSignificatifs(frame) return fun.do_chiffresSignificatifs(frame:getParent().args)end-- Réalisation de la fonction précédente-- Attention, renvoie une chaîne-- Usage : fun.do_chiffresSignificatifs{valeur, nb de chiffres significatifs}function fun.do_chiffresSignificatifs(arguments) local result = "" local value, digits = tonumber(arguments[1]), tonumber(arguments[2]) if value ~= nil and digits ~= nil then local logVal = math.ceil(math.log10(value)) local mult = 10^(digits-logVal) local rounded = math.floor(value*mult+0.5)/mult result = string.format("%." .. tostring(math.max(digits-logVal,0)) .. "f", rounded) end return resultend-- Ajoute des hyperliens aux mots séparés par des virgules, comme ceux des propriétés Wikidatafunction fun.ajouterLiens(frame) local arguments = frame:getParent().args local mots = mw.text.split(arguments[2], ",") local liens = table.concat(mots, "]], [[") if liens ~= nil and liens ~= "" then return "[[" .. liens .. "]]" else return "" endendreturn fun
🔥 Top keywords: Wikipédia:Accueil principalDissolution parlementaire (France)Alexander ZverevCarlos AlcarazJordan BardellaRaphaël GlucksmannÉlections européennes de 2019 en FranceAssemblée nationale (France)Manon AubryGroupe du Parti populaire européenSpécial:RechercheListe des listes aux élections européennes de 2024 en FranceÉlections européennes de 2024 en FranceValérie HayerÉlections législatives en FranceBjörn BorgRafael NadalSarah KnafoRassemblement nationalÉlections européennes de 2024Marion MaréchalÉlections législatives françaises de 2022Conservateurs et réformistes européensRenew EuropeInternationaux de France de tennisParlement européenFrançois-Xavier BellamyGrand Chelem (tennis)Juan Carlos FerreroParti populaire européenIdentité et démocratieRima HassanRenaissance (parti)Emmanuel MacronNovak DjokovicRobert MénardListe de partis politiques en FranceÉlections législatives françaises de 2024Palmarès du simple messieurs des Internationaux de France