Editing Module:AbilityInteractionGive feedback
Jump to navigation
Jump to search
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 1: | Line 1: | ||
-- Renders a standard interaction box for the interactions tab of {{AbilitySection}}. | |||
-- Entry point: {{#invoke:AbilityInteraction|box}}, via Template:AbilityInteraction. | |||
-- | |||
-- Presentation for each interaction lives in REGISTRY below. Call sites pick an | |||
-- interaction by name and supply body text only; nothing else is customizable. | |||
-- Anything bespoke should use {{IconBox}} directly rather than growing parameters here. | |||
-- | |||
-- To add an interaction, add a REGISTRY entry: | -- To add an interaction, add a REGISTRY entry: | ||
-- aliases = other names resolving to this entry | -- aliases = other names resolving to this entry; assumed not to overlap | ||
-- title = header text | -- title = header text | ||
-- type = positive | negative | info | -- type = positive | negative | info | ||
-- iconfile = image file name, without the | -- iconfile = image file name, without the File: prefix | ||
-- link = wiki page name, or a full URL | -- link = wiki page name, or a full URL | ||
local p = {} | |||
local getArgs = require('Module:Arguments').getArgs | |||
local REGISTRY = { | local REGISTRY = { | ||
['debuff resist'] = { | ['debuff resist'] = { | ||
aliases = { 'debuff reducer' }, | aliases = { 'debuff reducer' }, | ||
| Line 42: | Line 32: | ||
link = 'Dispel Magic', | link = 'Dispel Magic', | ||
}, | }, | ||
[' | ['unstoppable'] = { | ||
aliases = {}, | aliases = {}, | ||
title = ' | title = 'Unstoppable', | ||
type = 'negative', | type = 'negative', | ||
iconfile = ' | iconfile = 'Unstoppable.png', | ||
link = ' | link = 'Unstoppable', | ||
}, | }, | ||
['slowing hex'] = { | ['slowing hex'] = { | ||
aliases = {}, | aliases = {}, | ||
title = 'Slowing Hex', | title = 'Slowing Hex', | ||
type = ' | type = 'info', | ||
iconfile = 'Slowing Hex.png', | iconfile = 'Slowing Hex.png', | ||
link = 'Slowing Hex', | link = 'Slowing Hex', | ||
}, | }, | ||
[' | ['indomitable'] = { | ||
aliases = {}, | aliases = {}, | ||
title = ' | title = 'Indomitable', | ||
type = 'negative', | type = 'negative', | ||
iconfile = ' | iconfile = 'Indomitable.png', | ||
link = ' | link = 'Indomitable', | ||
}, | }, | ||
} | } | ||
-- Lookup index of aliases plus canonical keys, built once. | |||
-- Canonical keys are registered last so they always win. | |||
local index = {} | local index = {} | ||
for _, entry in pairs(REGISTRY) do | for _, entry in pairs(REGISTRY) do | ||
for _, alias in ipairs(entry.aliases or {}) do | for _, alias in ipairs(entry.aliases or {}) do | ||
index[ | index[alias] = entry | ||
end | end | ||
end | end | ||
for key, entry in pairs(REGISTRY) do | for key, entry in pairs(REGISTRY) do | ||
index[ | index[key] = entry | ||
end | end | ||
| Line 173: | Line 106: | ||
end | end | ||
-- | -- Registry table for the documentation page. Not used in article space. | ||
function p.list(frame) | function p.list(frame) | ||
local keys = {} | local keys = {} | ||
| Line 181: | Line 114: | ||
table.sort(keys) | table.sort(keys) | ||
local out = { '{| class="wikitable"', '! Interaction !! Example' } | local out = { '{| class="wikitable"', '! Interaction !! Aliases !! Type !! Example' } | ||
for _, key in ipairs(keys) do | for _, key in ipairs(keys) do | ||
local entry = REGISTRY[key] | local entry = REGISTRY[key] | ||
local | local aliases = {} | ||
for _, alias in ipairs(entry.aliases or {}) do | for _, alias in ipairs(entry.aliases or {}) do | ||
table.insert( | table.insert(aliases, '<code>' .. alias .. '</code>') | ||
end | end | ||
table.insert(out, '|-') | table.insert(out, '|-') | ||
table.insert(out, '| ' .. table.concat( | table.insert(out, '| <code>' .. key .. '</code>') | ||
table.insert(out, '| ' .. (#aliases > 0 and table.concat(aliases, ', ') or '—')) | |||
table.insert(out, '| ' .. entry.type) | |||
table.insert(out, '| ' .. frame:expandTemplate{ | table.insert(out, '| ' .. frame:expandTemplate{ | ||
title = 'AbilityInteraction', | title = 'AbilityInteraction', | ||