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') | ||
-- Shared helper function | -- Shared helper function | ||
local function get_heroes(in_herolabs) | local function get_heroes(in_herolabs, include_key) | ||
local heroes = {} | local heroes = {} | ||
| Line 29: | Line 20: | ||
--- Create a sort key for each hero to ensure correct alphabetical ordering. | --- Create a sort key for each hero to ensure correct alphabetical ordering. | ||
-- This logic handles special cases like "The Doorman" by looking for a "_sort" version of the hero's key in the language files. | |||
local hero_name = lang_module.get_string(hero_key, nil, 'en') | local hero_name = lang_module.get_string(hero_key, nil, 'en') | ||
local sort_key_to_find = hero_key .. '_sort' | local sort_key_to_find = hero_key .. '_sort' | ||
| Line 34: | Line 26: | ||
local sort_key | local sort_key | ||
-- | -- The lang_module returns the requested key (wrapped in HTML) if a translation is not found. | ||
-- We detect this failure by checking if the returned string contains the key we originally searched for. | |||
if string.find(potential_sort_key, sort_key_to_find, 1, true) then | if string.find(potential_sort_key, sort_key_to_find, 1, true) then | ||
-- If the key is found in the result, it means the translation failed. Fall back to the hero's display name for sorting. | |||
sort_key = hero_name | sort_key = hero_name | ||
else | else | ||
-- If the key is NOT found, it means we received a valid sort key (e.g., "Doorman"). Use it. | |||
sort_key = potential_sort_key | sort_key = potential_sort_key | ||
end | end | ||
-- Store reusable hero data | -- Store reusable hero data | ||
| Line 50: | Line 41: | ||
name = hero_name, | name = hero_name, | ||
sort_key = sort_key, | sort_key = sort_key, | ||
link = | link = lang_module.get_string(hero_key, 'en'), | ||
recommended = tostring(is_recommended) | recommended = tostring(is_recommended) | ||
} | } | ||
| Line 64: | Line 55: | ||
end) | end) | ||
return heroes | return heroes | ||
end | end | ||
| Line 70: | Line 60: | ||
-- for [[Template:Deadlock_Wiki/Heroes]] | -- for [[Template:Deadlock_Wiki/Heroes]] | ||
function p.get_hero_nav_cards(frame) | function p.get_hero_nav_cards(frame) | ||
local in_herolabs = frame.args['in_herolabs'] or 'false' | |||
local text_size = frame.args['text_size'] | local text_size = frame.args['text_size'] | ||
local card_size = frame.args['card_size'] | local card_size = frame.args['card_size'] | ||
local | local sticker_size = frame.args['sticker_size'] | ||
local herolabs_text_size = frame.args['herolabs_text_size'] | |||
local debug_mode = frame.args['debug_mode'] == 'true' | local debug_mode = frame.args['debug_mode'] == 'true' | ||
local lang_code = lang_module.get_lang_code() | |||
local subpage_str = '' | |||
if lang_code ~= 'en' then | |||
subpage_str = '/' .. lang_code | |||
end | |||
local heroes = get_heroes(in_herolabs) | local heroes = get_heroes(in_herolabs) | ||
local | |||
local ret = '' | |||
for _, hero in ipairs(heroes) do | for _, hero in ipairs(heroes) do | ||
ret = ret .. '{{Hero card2' | |||
ret = ret .. '|name=' .. hero.name | |||
ret = ret .. '|link=' .. hero.link | |||
ret = ret .. '|subpage=' .. subpage_str | |||
ret = ret .. '|recommended=' .. hero.recommended | |||
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 .. '}}' | |||
end | end | ||
if debug_mode then | if debug_mode then | ||
| Line 94: | Line 102: | ||
-- for [[Template:Roster]] | -- for [[Template:Roster]] | ||
function p.get_hero_roster(frame) | function p.get_hero_roster(frame) | ||
local in_herolabs = frame.args['in_herolabs'] or 'false' | local in_herolabs = frame.args['in_herolabs'] or 'false' | ||
local debug_mode = frame.args['debug_mode'] == 'true' | local debug_mode = frame.args['debug_mode'] == 'true' | ||
local lang_code = lang_module.get_lang_code() | |||
local subpage_str = '' | |||
if lang_code ~= 'en' then | |||
subpage_str = '/' .. lang_code | |||
end | |||
local heroes = get_heroes(in_herolabs) | local heroes = get_heroes(in_herolabs) | ||
local | |||
local ret = '' | |||
for _, hero in ipairs(heroes) do | for _, hero in ipairs(heroes) do | ||
ret = ret .. '{{HeroRosterCard' | |||
ret = ret .. '|name=' .. hero.name | |||
ret = ret .. '|key=' .. hero.key | |||
ret = ret .. '}}' | |||
end | end | ||
if debug_mode then | if debug_mode then | ||
| Line 115: | Line 133: | ||
-- for [[Template:Quotes Navbox]] etc. | -- for [[Template:Quotes Navbox]] etc. | ||
p.get_hero_bulletpoints = function(frame) | p.get_hero_bulletpoints = function(frame) | ||
local subpage = frame.args['1'] | |||
local in_herolabs = frame.args['in_herolabs'] or 'false' | |||
local debug_mode = frame.args['debug_mode'] == 'true' | local debug_mode = frame.args['debug_mode'] == 'true' | ||
local lang_code = lang_module.get_lang_code() | |||
local subpage_str = '' | |||
if lang_code ~= 'en' then | |||
subpage_str = '/' .. lang_code | |||
end | end | ||
local heroes = get_heroes(in_herolabs) | local heroes = get_heroes(in_herolabs) | ||
local ret = '' | |||
for _, hero in ipairs(heroes) do | for _, hero in ipairs(heroes) do | ||
if subpage then | |||
ret = ret .. '{{PageRef|'.. hero.name | |||
ret = ret .. '|alt_link='.. hero.name | |||
ret = ret .. '/'.. subpage | |||
ret = ret ..'}} • ' | |||
else | |||
ret = ret .. '{{HeroIcon|'.. hero.name | |||
ret = ret ..'}} • ' | |||
end | |||
end | |||
-- Remove the last bullet point | |||
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 | ||