Join the Discord →
Learn More →
See Project →
See About page
Module:Tags
--- Shared module that converts <tag>s in certain areas into
-- colored text or text with a specified font.
-- @module tags
-- @alias p
-- @author KockaAdmiralac
--
local p = {}
-- Module dependencies.
local data = mw.loadData('Module:Tags/data')
-- Private logic.
--- Replacer function for opening tags.
-- @function replacer_open
-- @param {string} tag Tag whose opening tag to replace
-- @returns {string} Replacement text for the tag
-- @local
local function replacer_open(tag)
if data.fonts[tag] then
return table.concat({'<span data-font="', tag, '">'})
elseif data.colors[tag] then
return table.concat({'<span data-color="', tag, '">'})
else
return table.concat({'<', tag, '>'})
end
end
--- Replacer function for closing tags.
-- @function replacer_close
-- @param {string} tag Tag whose closing tag to replace
-- @returns {string} Replacement text for the tag
-- @local
local function replacer_close(tag, text)
if data.fonts[tag] or data.colors[tag] then
return '</span>'
else
return table.concat({'</', tag, '>'})
end
end
--- Module's main function.
-- Given a string of text, replaces all tags with text with appropriate fonts
-- and colors.
-- @function p.replace
-- @param {string} text Text to replace
-- @returns {string} Replacement text
function p.replace(text)
text = mw.ustring.gsub(text, '<(%w+)>', replacer_open)
text = mw.ustring.gsub(text, '</(%w+)>', replacer_close)
return text
end
return p
--