Editing Module:Tt
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 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]) | ||
elseif not args[2] or args[2] == '' then | |||
return args[1] | return args[1] | ||
else | |||
return p._main(args) | |||
end | end | ||
end | end | ||
| Line 23: | Line 21: | ||
local text = args[1] | local text = args[1] | ||
local tooltip = mw.text.decode(args[2], true) | local tooltip = mw.text.decode(args[2], true) | ||
local out = mw.html.create() | |||
local out | out:wikitext('‍') | ||
local wrapper = out:tag('span') | |||
:addClass('custom-tt-wrapper') | :addClass('custom-tt-wrapper') | ||
:addClass( | :addClass('toggle-tooltip') | ||
:addClass('mw-collapsible') | |||
:addClass('mw-collapsed') | |||
:addClass('giw-collapsible') | |||
if args.class and args.class ~= '' then | |||
wrapper:addClass(args.class) | |||
end | |||
local isLinked = ( | |||
(args.link and args.link ~= '') | |||
or (text:find('%[%[') and text:find('%]%]')) | |||
) | |||
if isLinked then | |||
local link = tostring(args.link or '') | |||
-- Visible linked text | |||
if link == '1' then | |||
wrapper:wikitext('[[' .. text .. ']] ') | |||
elseif link ~= '' then | |||
wrapper:wikitext('[[' .. link .. '|' .. text .. ']] ') | |||
else | |||
wrapper:wikitext(text .. ' ') | |||
end | |||
-- Clean text for screen readers | |||
local cleanText = text | |||
:gsub('%[%[?[^|%]]+|', '') | |||
cleanText = text | |||
:gsub('%[%[[^%] | |||
:gsub('%[%[', '') | :gsub('%[%[', '') | ||
:gsub('%]%]', '') | :gsub('%]%]', '') | ||
-- | -- Store the tooltip label | ||
wrapper:attr( | |||
'data-tt-text', | |||
'ⓘ' | |||
) | |||
-- Info icon / actual collapsible toggle | |||
wrapper:tag('span') | |||
:addClass('mw-collapsible-toggle') | |||
:addClass('mw-collapsible-toggle-collapsed') | |||
:addClass('custom-tt') | |||
:attr('aria-label', 'Tooltip for ' .. cleanText) | |||
:wikitext( | |||
'<span class="screen-reader-text">Tooltip for ' | |||
.. cleanText | |||
.. '</span>ⓘ' | |||
) | |||
:done() | |||
else | |||
-- Plain text itself is the toggle | |||
wrapper:attr('data-tt-text', text) | |||
wrapper:tag('span') | |||
:addClass('mw-collapsible-toggle') | |||
:addClass('mw-collapsible-toggle-collapsed') | |||
:addClass('custom-tt') | |||
:wikitext(text) | |||
:done() | |||
end | |||
-- Tooltip | -- Tooltip content | ||
wrapper:tag('span') | |||
:addClass('custom-tt | :addClass('mw-collapsible-content') | ||
:addClass('custom-tt') | |||
:wikitext(tooltip) | :wikitext(tooltip) | ||
:done() | |||
out:wikitext('‍') | |||
return out | return out | ||
| Line 73: | Line 103: | ||
function p.CleanTT(tx) | function p.CleanTT(tx) | ||
local clean = tx:gsub( | |||
'<span class="custom%-tt%-wrapper[^>] | '‍<span class="custom%-tt%-wrapper[^>]-data%-tt%-text="(.-)">.-‍', | ||
'' | '%1' | ||
) | ) | ||
return clean | |||
end | end | ||
return p | return p | ||