Editing Module:HeroData/navGive feedback
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
| Latest revision | Your text | ||
| Line 3: | Line 3: | ||
local hero_release_module = require('Module:HeroData/release') | local hero_release_module = require('Module:HeroData/release') | ||
local lang_module = require('Module:Lang') | local lang_module = require('Module:Lang') | ||
-- | -- for [[Template:Deadlock_Wiki/Heroes]] on home page, i.e. [[Template:Hero card2]] | ||
function p.get_hero_nav_cards(frame) | |||
local in_herolabs = frame.args['in_herolabs'] -- true or false | |||
local text_size = frame.args['text_size'] | |||
local card_size = frame.args['card_size'] | |||
local sticker_size = frame.args['sticker_size'] | |||
local herolabs_text_size = frame.args['herolabs_text_size'] | |||
local debug_mode = frame.args['debug_mode'] | |||
-- Get current page title and extract language code | |||
local current_title = mw.title.getCurrentTitle() | |||
local subpage = current_title.subpageText | |||
local lang_code = 'en' -- default to English | |||
-- If there's a subpage and it's not empty and not "Sandbox", use it as language code | |||
if subpage and subpage ~= '' and subpage ~= 'Sandbox' then | |||
lang_code = subpage | |||
end | |||
-- Turn debug_mode from string to bool, default to false | |||
if debug_mode == nil then | |||
debug_mode = false | |||
elseif debug_mode == 'true' then | |||
debug_mode = true | |||
elseif debug_mode == 'false' then | |||
debug_mode = false | |||
end | |||
if in_herolabs ~= 'true' and in_herolabs ~= 'false' then | |||
return 'in_herolabs must be either true or false' | |||
return | |||
end | end | ||
-- Only add subpage if not English | |||
local subpage_str = '' | |||
if lang_code ~= 'en' then | |||
subpage_str = '/' .. lang_code | |||
end | |||
-- Iterate heroes | |||
local heroes = {} | local heroes = {} | ||
for hero_key, hero_data in pairs(heroes_data) do | for hero_key, hero_data in pairs(heroes_data) do | ||
if hero_data["Name"] ~= nil then | |||
if hero_data["Name"] ~= nil | -- if herolabs is requested, only needs to have herolabs=true | ||
-- otherwise, needs to be not disabled, in development, nd herolabs is nil or false | |||
local this_hero_status = hero_release_module.get_hero_release_status(hero_key) | local this_hero_status = hero_release_module.get_hero_release_status(hero_key) | ||
if this_in_herolabs == nil then this_in_herolabs = false end | |||
if ((in_herolabs == 'true' and this_hero_status == 'HeroLabs') or | if ((in_herolabs == 'true' and this_hero_status == 'HeroLabs') or | ||
(in_herolabs == 'false' and this_hero_status == 'Released')) then | (in_herolabs == 'false' and this_hero_status == 'Released')) then | ||
local is_recommended = hero_data['IsRecommended'] | local is_recommended = hero_data['IsRecommended'] | ||
if is_recommended == nil then | |||
is_recommended = false | |||
end | end | ||
local hero_str = '|name=' .. lang_module.get_string(hero_key, nil, 'en') .. | |||
'|link=' .. lang_module.get_string(hero_key, 'en') .. | |||
'|subpage=' .. subpage_str .. | |||
'|recommended=' .. tostring(is_recommended) | |||
table.insert(heroes, hero_str) | |||
table.insert(heroes, | |||
end | end | ||
end | end | ||
end | end | ||
-- | -- Order list alphabetically | ||
table.sort(heroes | table.sort(heroes) -- O(nlogn) | ||
-- Add each item to output | |||
local ret = '' | |||
for index, hero_name in ipairs(heroes) do | |||
ret = ret .. '{{Hero card2' .. hero_name | |||
ret = ret .. '|text_size=' .. text_size | |||
ret = ret .. '|herolabs=' .. in_herolabs | |||
-- | ret = ret .. '|card_size=' .. card_size | ||
ret = ret .. '|sticker_size=' .. sticker_size | |||
ret = ret .. '|herolabs_text_size=' .. herolabs_text_size | |||
ret = ret .. '}} ' | |||
local | |||
for | |||
end | end | ||
-- Remove the last space | |||
ret = string.sub(ret, 1, -(string.len(' '))-1) | |||
-- | |||
if debug_mode then | if debug_mode then | ||
return ret | return ret | ||
else | else -- evaluate wikitext if not in debug mode | ||
return frame:preprocess(ret) | return frame:preprocess(ret) | ||
end | end | ||
end | end | ||
return p | return p | ||