|
|
| (9 intermediate revisions by 2 users not shown) |
| Line 1: |
Line 1: |
| -- TEMPORARY probe. Dumps every SpiritScaling entry in Data:HeroData.json,
| |
| -- together with the label resolution paths available for each stat key.
| |
| -- {{#invoke:Sandbox/Vergir|dump}}
| |
| local p = {} | | local p = {} |
|
| |
| local heroes_data = mw.loadJsonData("Data:HeroData.json")
| |
| local attributes_data = mw.loadJsonData("Data:AttributeData.json")
| |
| local lang_module = require('Module:Lang')
| |
| local dictionary_module = require('Module:Dictionary')
| |
| local hero_data_module = require('Module:HeroData')
| |
|
| |
| -- next() ignores metamethods, and mw.loadJsonData tables are proxies, so
| |
| -- emptiness has to be tested through pairs().
| |
| local function sorted_keys(tbl)
| |
| local keys = {}
| |
| if tbl == nil then return keys end
| |
| for key in pairs(tbl) do table.insert(keys, key) end
| |
| table.sort(keys)
| |
| return keys
| |
| end
| |
|
| |
| local function attr_label_key(stat)
| |
| for _, category in pairs(attributes_data) do
| |
| if category[stat] ~= nil then
| |
| return category[stat]["label"], category[stat]["postfix"]
| |
| end
| |
| end
| |
| return nil, nil
| |
| end
| |
|
| |
| function p.dump(frame)
| |
| local out = {}
| |
| local stats_seen = {}
| |
|
| |
| for _, hero_key in ipairs(sorted_keys(heroes_data)) do
| |
| local hero_data = heroes_data[hero_key]
| |
| local stat_keys = sorted_keys(hero_data["SpiritScaling"])
| |
| if #stat_keys > 0 then
| |
| local parts = {}
| |
| for _, stat in ipairs(stat_keys) do
| |
| stats_seen[stat] = true
| |
| local base = hero_data_module.get_stat(hero_data, stat)
| |
| table.insert(parts, stat .. '=' .. tostring(hero_data["SpiritScaling"][stat]) ..
| |
| ' (base ' .. tostring(base) .. ')')
| |
| end
| |
| table.insert(out, '* <code>' .. hero_key .. '</code> ' .. tostring(hero_data["Name"]) ..
| |
| ' [dev=' .. tostring(hero_data["InDevelopment"]) ..
| |
| ' disabled=' .. tostring(hero_data["IsDisabled"]) ..
| |
| ' labs=' .. tostring(hero_data["InHeroLabs"]) ..
| |
| ' selectable=' .. tostring(hero_data["IsSelectable"]) .. ']: ' ..
| |
| table.concat(parts, ', '))
| |
| end
| |
| end
| |
|
| |
| table.insert(out, '')
| |
| table.insert(out, 'Label resolution per stat:')
| |
| for _, stat in ipairs(sorted_keys(stats_seen)) do
| |
| local label_key, postfix_key = attr_label_key(stat)
| |
| local lang_str = label_key and lang_module.get_string(label_key) or ''
| |
| local postfix_str = postfix_key and lang_module.get_string(postfix_key) or ''
| |
| local dict_str = dictionary_module.translate(stat)
| |
| table.insert(out, '* <code>' .. stat .. '</code> attr_label=<code>' ..
| |
| tostring(label_key) .. '</code> lang="' .. tostring(lang_str) ..
| |
| '" postfix="' .. tostring(postfix_str) ..
| |
| '" dict="' .. tostring(dict_str) .. '"')
| |
| end
| |
|
| |
| return table.concat(out, '\n')
| |
| end
| |
|
| |
| return p | | return p |