Module:Tt: Difference between revisions
ReisuDesign (talk | contribs) No edit summary |
ReisuDesign (talk | contribs) No edit summary |
||
| 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 22: | Line 24: | ||
local tooltip = mw.text.decode(args[2], true) | local tooltip = mw.text.decode(args[2], true) | ||
local out = mw.html.create() | local out = mw.html.create('span') | ||
:addClass('custom-tt-wrapper') | |||
:addClass(args.class or '') | |||
local visibleText = text | |||
local | local cleanText = text | ||
-- | -- Handle explicit link parameter | ||
if args.link and mw.text.trim(tostring(args.link)) ~= '' then | if args.link and mw.text.trim(tostring(args.link)) ~= '' then | ||
local link = tostring(args.link) | local link = tostring(args.link) | ||
visibleText = '[[' .. | |||
(link == '1' and text or link) .. | |||
link == '1' and text or link | '|' .. | ||
'|' | text .. | ||
text | ']]' | ||
']]' | |||
cleanText = text | |||
-- Handle text that is already an internal link | |||
-- | |||
elseif text:find('%[%[') and text:find('%]%]') then | 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 | -- Tooltip trigger | ||
local trigger = out:tag('span') | |||
:addClass('custom-tt-trigger') | |||
:attr('tabindex', '0') | |||
:attr('role', 'button') | |||
:attr('aria-label', 'Tooltip for ' .. cleanText) | |||
:wikitext('ⓘ') | |||
-- Tooltip | -- Tooltip | ||
out:tag('span') | |||
:addClass('custom-tt-content') | |||
:wikitext(tooltip) | |||
return out | return out | ||
end | end | ||
function p.CleanTT(tx) | function p.CleanTT(tx) | ||
return tx:gsub( | |||
' | '<span class="custom%-tt%-wrapper[^>]*>.-</span>', | ||
' | '' | ||
) | ) | ||
end | end | ||
return p | return p | ||