Module:Tt: Difference between revisions
ReisuDesign (talk | contribs) No edit summary |
ReisuDesign (talk | contribs) No edit summary |
||
| (3 intermediate revisions by the same user not shown) | |||
| Line 4: | Line 4: | ||
local args = require('Module:Arguments').getArgs(frame, { | local args = require('Module:Arguments').getArgs(frame, { | ||
parentFirst = true, | parentFirst = true, | ||
wrappers = { 'Template:Tt' } | wrappers = {'Template:Tt'} | ||
}) | }) | ||
| Line 11: | Line 11: | ||
if args.clean then | if args.clean then | ||
return p.CleanTT(args[1]) | return p.CleanTT(args[1]) | ||
end | |||
if not args[2] or mw.text.trim(args[2]) == '' then | |||
return args[1] | return args[1] | ||
end | end | ||
return p._main(args) | |||
end | end | ||
| Line 21: | Line 23: | ||
local text = args[1] | local text = args[1] | ||
local tooltip = mw.text.decode(args[2], true) | local tooltip = mw.text.decode(args[2], true) | ||
out: | local out = mw.html.create('span') | ||
:addClass('custom-tt-wrapper') | |||
:addClass(args.class or '') | |||
local visibleText = text | |||
local cleanText = text | |||
-- Handle explicit link parameter | |||
if args.link and mw.text.trim(tostring(args.link)) ~= '' then | |||
local link = tostring(args.link) | |||
visibleText = '[[' .. | |||
(link == '1' and text or link) .. | |||
'|' .. | |||
text .. | |||
']]' | |||
cleanText = text | |||
-- Handle text that is already an internal link | |||
elseif text:find('%[%[') and text:find('%]%]') then | |||
visibleText = text | |||
cleanText = text | |||
:gsub('%[%[[^%]|]+|', '') | |||
:gsub('%[%[ | |||
:gsub('%[%[', '') | :gsub('%[%[', '') | ||
:gsub('%]%]', '') | :gsub('%]%]', '') | ||
end | end | ||
-- Visible text | |||
out:wikitext(visibleText) | |||
-- | -- Tooltip trigger | ||
local trigger = out:tag('span') | |||
:addClass(' | :addClass('custom-tt-trigger') | ||
: | :attr('tabindex', '0') | ||
: | :attr('role', 'button') | ||
: | :attr('aria-label', 'Tooltip for ' .. cleanText) | ||
: | :wikitext('ⓘ') | ||
-- Tooltip | -- Tooltip | ||
out:tag('span') | |||
:addClass(' | :addClass('custom-tt-content') | ||
:wikitext(tooltip) | :wikitext(tooltip) | ||
return out | return out | ||
| Line 89: | Line 73: | ||
function p.CleanTT(tx) | function p.CleanTT(tx) | ||
return tx:gsub( | |||
' | '<span class="custom%-tt%-wrapper[^>]*>.-</span>', | ||
' | '' | ||
) | ) | ||
end | end | ||
return p | return p | ||