Module:Sandbox/Aurelain/SkillSynergies
From Heroes of Might and Magic: Olden Era Official Wiki
Documentation for this module may be created at Module:Sandbox/Aurelain/SkillSynergies/doc
-- Usage: {{#invoke:SkillSynergies|display|lang=en|skill=skill_assault}}
local p = {}
local SkillsOverview = require("Module:Sandbox/Aurelain/SkillsOverview")
local PATCH_NAME = {
['Summon Avatar'] = 'Summon Avatar (Skill)',
}
------------------------------------------------------------------------------------------------------------------------
-- Debugs a variable
------------------------------------------------------------------------------------------------------------------------
local function dump(target)
return '<pre>' .. mw.dumpObject(target) .. '</pre>'
end
------------------------------------------------------------------------------------------------------------------------
-- Ejects punctuation from inside quotes. Example: `foo “Bar.”` into `foo “Bar”.`
------------------------------------------------------------------------------------------------------------------------
local function repairEnglishPunctuation(text)
return string.gsub(text, "([%,%.%!%?])”", "”%2%1")
end
------------------------------------------------------------------------------------------------------------------------
-- Creates a "Foo/XX|" string based on the first quoted word in a text
------------------------------------------------------------------------------------------------------------------------
local function generateRoboticLink(descriptionInEnglish, lang)
local name = descriptionInEnglish:match("“(.-)”")
if name and name ~= '' then
name = PATCH_NAME[name] or name
return name .. '/' .. lang .. '|'
end
return nil
end
------------------------------------------------------------------------------------------------------------------------
-- Debugs a variable
------------------------------------------------------------------------------------------------------------------------
local function findSynergies(allSkills, skill, lang)
local synergies = {}
for _, group in ipairs(allSkills) do
for _, rank in ipairs(group.ranks) do
for _, subSkill in pairs(rank.subSkills) do
local descriptionEn = repairEnglishPunctuation(subSkill.descriptionEn)
if lang == 'en' then
local description = repairEnglishPunctuation(subSkill.description)
else
--local roboticLink = generateSpecificRoboticLink(enDescription, lang, skill)
--if checkMentionsSkill(enDescription, skill) then
-- end
--end
end
end
end
end
return synergies
end
------------------------------------------------------------------------------------------------------------------------
-- Debugs a variable
------------------------------------------------------------------------------------------------------------------------
local function findEnglishName(allSkills, skill)
for _, group in ipairs(allSkills) do
if group.id == skill then
return group.nameEn
end
end
end
------------------------------------------------------------------------------------------------------------------------
-- Main public function
------------------------------------------------------------------------------------------------------------------------
function p.display(frame)
local d = repairEnglishPunctuation('foo “Bar.”')
if 1 then return dump(d) end
-- Args
local args = frame.args
local lang = args.lang or 'en'
local skill = args.skill
if not skill or skill == '' then return 'You must provide a skill id' end
lang = 'fr'
--skill = 'skill_formation'
local allSkills = SkillsOverview.getSkillsFromCargo(lang)
local nameEn = findEnglishName(allSkills, skill)
if not nameEn then return 'Cannot find name for skill "' .. skill .. '"' end
local synergies = findSynergies(allSkills, nameEn, lang)
if 1 then return dump(synergies) end
return 'hello'
end
return p


