Module:Abilities/utils: Difference between revisionsGive feedback
m Saag moved page Module:AbilityData/utils to Module:Abilities/utils |
mNo edit summary Tag: Manual revert |
||
| (37 intermediate revisions by 5 users not shown) | |||
| Line 1: | Line 1: | ||
-- returns the table of a specific item | local p = {} | ||
function | local commonutils = require "Module:Utilities" | ||
local lang = require"Module:Lang" | |||
if(hero_key == nil) then return | local dictionary_module = require("Module:Dictionary") | ||
local data = mw.loadJsonData("Data:AbilityCards.json") | |||
-- returns the table of a specific item' | |||
function p.get_ability_card_data(hero_key, ability_num) | |||
if(hero_key == nil) then return nil end | |||
return data[hero_key][tonumber(ability_num)] | return data[hero_key][tonumber(ability_num)] | ||
end | end | ||
function get_hero_key(hero_name) | function p.get_hero_key(hero_name) | ||
for i, hero in pairs(data) do | for i, hero in pairs(data) do | ||
if hero["Name"] == hero_name then | if hero["Name"] == hero_name then | ||
| Line 14: | Line 20: | ||
return nil | return nil | ||
end | end | ||
-- Returns the key of the hero whose ability name is passed as an argument | |||
--{{#invoke:Abilities/utils|find_hero_by_ability|ABILITY_NAME}}-- | |||
p.find_hero_by_ability = function(frame) | |||
local ability_name = frame.args[1] | |||
if not ability_name or ability_name == "" then | |||
return "Missing Ability Name" | |||
end | |||
-- Normalize input for case-insensitive comparison | |||
local normalized_input = string.lower(ability_name) | |||
-- Iterate through all heroes in the data | |||
for hero_key, ui_data in pairs(data) do | |||
-- Check each ability for this hero | |||
for ability_num, ability in pairs(ui_data) do | |||
local current_name = lang.get_string(ability.Key) | |||
if string.lower(current_name) == normalized_input then | |||
return hero_key | |||
end | |||
end | |||
end | |||
return "Hero Not Found" | |||
end | |||
-- Add prefix and postfix labels to a value. Eg. "32" -> "32s" | |||
function p.format_value_with_prepost(key, value, frame, exclude_plus) | |||
if (exclude_plus == nil) then exclude_plus = false end | |||
if (value == nil) then return nil end | |||
local prefix = lang.get_string(string.format("%s_prefix",key)) | |||
local postfix = lang.get_string(string.format("%s_postfix",key)) | |||
-- Default pre/post fix to empty string, as they may not exist | |||
if (prefix == nil) then prefix = '' end | |||
if (postfix == nil) then postfix = '' end | |||
-- If string ends with 'm', then set the postfix to 'm' and remove it | |||
if commonutils.string_endswith(tostring(value), 'm') then | |||
value = tonumber(value:sub(1, -2)) | |||
postfix = 'm' | |||
end | |||
-- If string ends with 's', then set the postfix to 's' and remove it | |||
if commonutils.string_endswith(tostring(value), 's') then | |||
value = tonumber(value:sub(1, -2)) | |||
postfix = 's' | |||
end | |||
if (prefix == '{s:sign}') then | |||
if value < 0 then | |||
prefix = '-' | |||
else | |||
prefix = '+' | |||
end | |||
end | |||
-- Do not assign a minus sign if value is already negative | |||
if (prefix == '-' and value < 0) then | |||
prefix = '' | |||
end | |||
-- some use cases don't require the '+' symbol prefix | |||
if exclude_plus == true and prefix == '+' then | |||
prefix = '' | |||
end | |||
value_and_uom = frame:expandTemplate{ | |||
title = 'Template:ValueAndUom', | |||
args = { | |||
prefix..value, | |||
postfix, | |||
uom_style = 'font-size: 0.8em; color: #9C9C9C' | |||
} | |||
} | |||
return value_and_uom | |||
end | |||
function p.get_notes_source_page_name(ability_key) | |||
local ability_name_localized = lang.get_string(ability_key) | |||
local notes_str_localized = dictionary_module.translate('Notes', nil, '') | |||
--Determine notes link | |||
local notes_source_page | |||
local notes_untranslated_msg = '' | |||
-- if either "Notes" string or ability_name is not able to be localized, | |||
-- use an english link instead, as transcluded content relies on it | |||
if (ability_name_localized == '') or (notes_str_localized == '') then | |||
notes_source_page = ability_name_en .. '/' .. dictionary_module.translate('Notes', 'en', '') | |||
if notes_str_localized=='' then | |||
notes_untranslated_msg = '<br>' .. dictionary_module.translate('NotesNeedsTranslation') .. ' [[Template:Translate]]' .. "<br>" | |||
end | |||
else | |||
notes_source_page = ability_name_localized .. '/' .. notes_str_localized | |||
end | |||
notes_source_page = "User:Sur/" .. notes_source_page --temp | |||
return notes_source_page | |||
end | |||
return p | |||