« Module:Utils » : différence entre les versions
De Eco - Wiki Français
| [version vérifiée] | [version vérifiée] |
Contenu remplacé par « local p = {} --- Trims and parses the args into a table, then returns the table function p.normalise(args) for k, v in pairs(args) do v = mw.text.trim(tostring(v)) if v ~= '' then args[k] = v end end return args end --- Trims and parses the args into a table, then returns the table --- @author User:Avaren function p.normaliseArgs(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = mw.text.trim(to... » Balise : Contenu remplacé |
Aucun résumé des modifications |
||
| (12 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 29 : | Ligne 29 : | ||
return args | return args | ||
end | end | ||
function p.CheckId(name) | function p.CheckId(name) | ||
local itemData = mw.loadData("Module:ItemData") | local itemData = mw.loadData("Module:ItemData") | ||
local itemTable = itemData.items[ | local ItemName = p.ItemSearch(name) | ||
local itemTable = itemData.items[ItemName] | |||
if itemTable == nil then return 'NoItem' end | if itemTable == nil then return 'NoItem' end | ||
local IconName = itemTable.ID | local IconName = itemTable.ID | ||
| Ligne 40 : | Ligne 40 : | ||
end | end | ||
--- | function p.CheckList(List) | ||
--- | local NewList = "" | ||
local function | if (List ~= "") then | ||
local TempList ={} | |||
local | for Name in string.gmatch(List, "([^,]+)") do | ||
TempList[Name] = Name | |||
end | |||
for Name,Data in pairs(TempList) do | |||
if (NewList == "") then NewList = NewList .. Name else NewList = NewList .. "," .. Name end | |||
end | |||
end | |||
return NewList | |||
end | |||
function p.getLanguageCode() | |||
local language = mw.language.getContentLanguage() | |||
local languageCode = language:getCode() | |||
return languageCode | |||
end | |||
function p.getLanguageName() | |||
local languageName = "English" | |||
local language = mw.language.getContentLanguage() | |||
local languageCode = language:getCode() | |||
if languageCode == "ru" then languageName = "Russian" end | |||
if languageCode == "de" then languageName = "German" end | |||
if languageCode == "fr" then languageName = "French" end | |||
return languageName | |||
end | |||
function p.checkImage(filename) | |||
if filename then | |||
if mw.title.makeTitle('Media', filename).file.exists then return "Y" else return "N" end | |||
else return "Error name" end | |||
end | |||
function p.checkPage(pagename) | |||
local pagetitle = mw.title.new(pagename) | |||
if pagetitle and pagetitle.exists then return "Y" else return "N" end | |||
end | |||
function p.SkillSearch(PageName) | |||
local SkillName = '' | |||
local skillData = require( "Module:SkillData" ) | |||
local skillList = skillData.skills | |||
local Lang = p.getLanguageName() | |||
for Sname,Sdata in pairs(skillList) do | |||
if (Sdata.Name[Lang] == PageName) then SkillName = Sname end | |||
end | |||
return SkillName | |||
end | |||
function p.SkillSearchByID(SkillID) | |||
local SkillName = 'None' | |||
local skillData = require( "Module:SkillData" ) | |||
local skillList = skillData.skills | |||
local Lang = p.getLanguageName() | |||
for Sname,Sdata in pairs(skillList) do | |||
if (Sdata.SkillID == SkillID) then SkillName = Sname end | |||
end | |||
return SkillName | |||
end | |||
-- Normalise les apostrophes typographiques en apostrophes droites | |||
function p.NormalizeApostrophes(text) | |||
if text == nil then return text end | |||
-- Remplace les apostrophes typographiques ' et ' par l'apostrophe droite ' | |||
return text:gsub("'", "'"):gsub("'", "'") | |||
end | |||
function p.ItemSearch(PageName) | |||
local ItemName = 'None' | |||
local ItemData = require("Module:ItemData") | |||
local ItemList = ItemData.items | |||
local Lang = p.getLanguageName() | |||
-- Normaliser les apostrophes dans le nom de la page | |||
local NormalizedPageName = p.NormalizeApostrophes(PageName) | |||
for Iname, Idata in pairs(ItemList) do | |||
-- Normaliser aussi les apostrophes dans les données | |||
local NormalizedItemName = p.NormalizeApostrophes(Idata.Name[Lang]) | |||
if (NormalizedItemName == NormalizedPageName) then | |||
ItemName = Iname | |||
break | |||
end | |||
end | |||
return ItemName | |||
end | |||
function p.ItemNameFromID(itemID) | |||
local ItemData = require("Module:ItemData") | |||
local Lang = p.getLanguageName() | |||
for key, data in pairs(ItemData.items) do | |||
if data.ID == itemID then | |||
-- prend la langue courante si elle existe et n'est pas vide | |||
local name = data.Name[Lang] | |||
if name == nil or name == "" then | |||
name = data.Name["English"] | |||
end | |||
return name or itemID -- fallback sur ID si tout échoue | |||
end | |||
end | |||
return itemID -- fallback si ID inconnu | |||
end | |||
function p.TagSearch(PageName) | |||
local TagName = 'None' | |||
local TagData = require( "Module:TagData" ) | |||
local TagList = TagData.tags | |||
local Lang = p.getLanguageName() | |||
for Tname,Tdata in pairs(TagList) do | |||
if (Tdata.Name[Lang] == PageName) then TagName = Tname end | |||
end | |||
return TagName | |||
end | |||
function p.BiomeSearch(PageName) | |||
local BiomeName = 'None' | |||
local BiomeData = require( "Module:BiomeData" ) | |||
local BiomeList = BiomeData.biomes | |||
local Lang = p.getLanguageName() | |||
for Bname,Bdata in pairs(BiomeList) do | |||
if (Bdata.Name[Lang] == PageName) then BiomeName = Bname end | |||
end | |||
return BiomeName | |||
end | |||
function p.AnimalSearch(PageName) | |||
local AnimalName = 'None' | |||
local AnimalData = require( "Module:AnimalData" ) | |||
local AnimalList = AnimalData.animals | |||
local Lang = p.getLanguageName() | |||
for Aname,Adata in pairs(AnimalList) do | |||
if (Adata.Name[Lang] == PageName) then AnimalName = Aname end | |||
end | |||
return AnimalName | |||
end | |||
function p.SpecialtyXP(Tier) | |||
local WikiText = '' | |||
WikiText = WikiText ..'<table class="table table-striped table-bordered"><tr class="thead-dark"><th>Specialty Level</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th></tr><tr><td>Specialty XP</td>' | |||
for i = 1, 6 do | |||
local XP = Tier * ( 25 * i) ^ 2 | |||
WikiText = WikiText .. '<td>' .. XP .. '</td>' | |||
end | end | ||
return | WikiText = WikiText ..'</tr></table>' | ||
return WikiText | |||
end | |||
function p.Translate(String) | |||
local Translate = String | |||
local Lang = p.getLanguageName() | |||
local TranslateData = require( "Module:LocalizationData" ) | |||
local TranslateList = TranslateData.locales | |||
for Tname,Tdata in pairs(TranslateList) do | |||
if ( Tname == String) then Translate = Tdata.Translate[Lang] end | |||
end | |||
return Translate | |||
end | end | ||
function p.ItemTags(TagsList) | |||
local WikiText = "" | |||
local WikiTagText = "" | |||
local | local Lang = p.getLanguageName() | ||
for | local TagString = p.Translate("{0} Tag"); | ||
local TagData = require( "Module:TagData" ) | |||
local IconUtils = require('Module:IconUtils') | |||
for Count,Tname in pairs(TagsList) do | |||
TagName = TagData.tags[Tname]; | |||
TagNameLoc = TagName.Name[Lang]; | |||
TagLink = p.VarSub(TagString,TagNameLoc); | |||
if (TagName.IsVisibleInTooltip == "True") then WikiTagText = IconUtils.main{ name = TagNameLoc, id = TagName.ID, size = 128, style = 4, link = TagLink } end | |||
end | end | ||
if (WikiTagText ~= "") then WikiText = '<div class="row">' .. WikiTagText .. '</div>' end | |||
end | return WikiText | ||
return | end | ||
-- variable substitution | |||
function p.VarSub(String,Loc) | |||
return string.gsub(String,'{0}',Loc) | |||
end | |||
function p.VSTranslate(String,Loc) | |||
return p.VarSub(p.Translate(String),Loc) | |||
end | |||
function p.gallery(context) | |||
local gallery = frame:callParserFunction{ name = '#tag:gallery', args = { mode = 'slideshow', widths = '100%', ''.. context:getParent().args[1] .. '' , showthumbnails = 'true'} } | |||
return gallery | |||
end | |||
function p.FoodsShelfLife(ShelfLife) | |||
local WikiText = tonumber(ShelfLife)/86400 .. ' days' | |||
return WikiText | |||
end | end | ||
return p | return p | ||
Dernière version du 8 mars 2026 à 13:47
Ce module fournit des fonctions utilitaires utilisées par d'autres modules.
Utilisation
Ajoutez la ligne de code suivante en haut de votre fichier :
local Utils = require("Module:Utils")
-- Vous pouvez ensuite appeler les fonctions de ce module dans votre script. Par exemple :
local tableLength = Utils.tableLen(maTable)
local p = {}
--- Trims and parses the args into a table, then returns the table
function p.normalise(args)
for k, v in pairs(args) do
v = mw.text.trim(tostring(v))
if v ~= '' then
args[k] = v
end
end
return args
end
--- Trims and parses the args into a table, then returns the table
--- @author User:Avaren
function p.normaliseArgs(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = mw.text.trim(tostring(v))
if v ~= '' then
args[k] = v
end
end
return args
end
function p.CheckId(name)
local itemData = mw.loadData("Module:ItemData")
local ItemName = p.ItemSearch(name)
local itemTable = itemData.items[ItemName]
if itemTable == nil then return 'NoItem' end
local IconName = itemTable.ID
return IconName
end
function p.CheckList(List)
local NewList = ""
if (List ~= "") then
local TempList ={}
for Name in string.gmatch(List, "([^,]+)") do
TempList[Name] = Name
end
for Name,Data in pairs(TempList) do
if (NewList == "") then NewList = NewList .. Name else NewList = NewList .. "," .. Name end
end
end
return NewList
end
function p.getLanguageCode()
local language = mw.language.getContentLanguage()
local languageCode = language:getCode()
return languageCode
end
function p.getLanguageName()
local languageName = "English"
local language = mw.language.getContentLanguage()
local languageCode = language:getCode()
if languageCode == "ru" then languageName = "Russian" end
if languageCode == "de" then languageName = "German" end
if languageCode == "fr" then languageName = "French" end
return languageName
end
function p.checkImage(filename)
if filename then
if mw.title.makeTitle('Media', filename).file.exists then return "Y" else return "N" end
else return "Error name" end
end
function p.checkPage(pagename)
local pagetitle = mw.title.new(pagename)
if pagetitle and pagetitle.exists then return "Y" else return "N" end
end
function p.SkillSearch(PageName)
local SkillName = ''
local skillData = require( "Module:SkillData" )
local skillList = skillData.skills
local Lang = p.getLanguageName()
for Sname,Sdata in pairs(skillList) do
if (Sdata.Name[Lang] == PageName) then SkillName = Sname end
end
return SkillName
end
function p.SkillSearchByID(SkillID)
local SkillName = 'None'
local skillData = require( "Module:SkillData" )
local skillList = skillData.skills
local Lang = p.getLanguageName()
for Sname,Sdata in pairs(skillList) do
if (Sdata.SkillID == SkillID) then SkillName = Sname end
end
return SkillName
end
-- Normalise les apostrophes typographiques en apostrophes droites
function p.NormalizeApostrophes(text)
if text == nil then return text end
-- Remplace les apostrophes typographiques ' et ' par l'apostrophe droite '
return text:gsub("'", "'"):gsub("'", "'")
end
function p.ItemSearch(PageName)
local ItemName = 'None'
local ItemData = require("Module:ItemData")
local ItemList = ItemData.items
local Lang = p.getLanguageName()
-- Normaliser les apostrophes dans le nom de la page
local NormalizedPageName = p.NormalizeApostrophes(PageName)
for Iname, Idata in pairs(ItemList) do
-- Normaliser aussi les apostrophes dans les données
local NormalizedItemName = p.NormalizeApostrophes(Idata.Name[Lang])
if (NormalizedItemName == NormalizedPageName) then
ItemName = Iname
break
end
end
return ItemName
end
function p.ItemNameFromID(itemID)
local ItemData = require("Module:ItemData")
local Lang = p.getLanguageName()
for key, data in pairs(ItemData.items) do
if data.ID == itemID then
-- prend la langue courante si elle existe et n'est pas vide
local name = data.Name[Lang]
if name == nil or name == "" then
name = data.Name["English"]
end
return name or itemID -- fallback sur ID si tout échoue
end
end
return itemID -- fallback si ID inconnu
end
function p.TagSearch(PageName)
local TagName = 'None'
local TagData = require( "Module:TagData" )
local TagList = TagData.tags
local Lang = p.getLanguageName()
for Tname,Tdata in pairs(TagList) do
if (Tdata.Name[Lang] == PageName) then TagName = Tname end
end
return TagName
end
function p.BiomeSearch(PageName)
local BiomeName = 'None'
local BiomeData = require( "Module:BiomeData" )
local BiomeList = BiomeData.biomes
local Lang = p.getLanguageName()
for Bname,Bdata in pairs(BiomeList) do
if (Bdata.Name[Lang] == PageName) then BiomeName = Bname end
end
return BiomeName
end
function p.AnimalSearch(PageName)
local AnimalName = 'None'
local AnimalData = require( "Module:AnimalData" )
local AnimalList = AnimalData.animals
local Lang = p.getLanguageName()
for Aname,Adata in pairs(AnimalList) do
if (Adata.Name[Lang] == PageName) then AnimalName = Aname end
end
return AnimalName
end
function p.SpecialtyXP(Tier)
local WikiText = ''
WikiText = WikiText ..'<table class="table table-striped table-bordered"><tr class="thead-dark"><th>Specialty Level</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th></tr><tr><td>Specialty XP</td>'
for i = 1, 6 do
local XP = Tier * ( 25 * i) ^ 2
WikiText = WikiText .. '<td>' .. XP .. '</td>'
end
WikiText = WikiText ..'</tr></table>'
return WikiText
end
function p.Translate(String)
local Translate = String
local Lang = p.getLanguageName()
local TranslateData = require( "Module:LocalizationData" )
local TranslateList = TranslateData.locales
for Tname,Tdata in pairs(TranslateList) do
if ( Tname == String) then Translate = Tdata.Translate[Lang] end
end
return Translate
end
function p.ItemTags(TagsList)
local WikiText = ""
local WikiTagText = ""
local Lang = p.getLanguageName()
local TagString = p.Translate("{0} Tag");
local TagData = require( "Module:TagData" )
local IconUtils = require('Module:IconUtils')
for Count,Tname in pairs(TagsList) do
TagName = TagData.tags[Tname];
TagNameLoc = TagName.Name[Lang];
TagLink = p.VarSub(TagString,TagNameLoc);
if (TagName.IsVisibleInTooltip == "True") then WikiTagText = IconUtils.main{ name = TagNameLoc, id = TagName.ID, size = 128, style = 4, link = TagLink } end
end
if (WikiTagText ~= "") then WikiText = '<div class="row">' .. WikiTagText .. '</div>' end
return WikiText
end
-- variable substitution
function p.VarSub(String,Loc)
return string.gsub(String,'{0}',Loc)
end
function p.VSTranslate(String,Loc)
return p.VarSub(p.Translate(String),Loc)
end
function p.gallery(context)
local gallery = frame:callParserFunction{ name = '#tag:gallery', args = { mode = 'slideshow', widths = '100%', ''.. context:getParent().args[1] .. '' , showthumbnails = 'true'} }
return gallery
end
function p.FoodsShelfLife(ShelfLife)
local WikiText = tonumber(ShelfLife)/86400 .. ' days'
return WikiText
end
return p