Módulo:Outdent – Wikipédia, a enciclopédia livre
Este módulo não apresenta nenhuma documentação. Por favor, documente-o caso o saiba usar ou tenha conhecimentos para tal. |
local p = {} local getArgs = require('Módulo:Arguments').getArgs function p.outdent (frame) local args = getArgs (frame) local count = 0 local Start = '┌' local End = '┘' local i = 0 local line = '' local outside = mw.html.create('span') local indentTable = {'reverter','indentar','in','r'} -- lista de parâmetros que significam reverter/indentar for k,v in pairs(indentTable) do -- definir início e fim se revertido if args[v] then Start = '└' End = '┐' end end if not args[1] then args[1] = '' end -- args[1] deixa de ser nil (nulo) for _ in string.gmatch(args[1],':') do count = count+1 -- aumentar count (contagem) para cada : (dois-pontos) end for _ in string.gmatch(args[1],'*') do count = count+1 -- aumentar count para cada * (asterisco) end for _ in string.gmatch(args[1],'#') do count = count+2 -- aumentar count em 2 para cada # (cerquilha) end if count == 0 then -- definir count para args[1] caso necessário count = tonumber(args[1]) end if not count then count = 10 -- 10 default end if count > 40 then count = 40 -- 40 max end count = count * 1.6 - 0.7 -- converter para width (largura) local lineMath = math.ceil(count * 1.6) while i < lineMath do -- criar linha line = line..'─' i = i+1 end if count == - 0.7 then -- definir para pipe | se count fosse 0 line = '|' Start = '' End = '' end outside -- criar tag span :addClass('outdent-template') :css('display','block') :css('margin-top','-0.5em') :css('color','#AAA;') :wikitext('<span style="display:inline-block; overflow:hidden;">'..Start..'</span>') -- começo :wikitext('<span style="display:inline-block; overflow:hidden; word-wrap:normal; width:'..count..'em;">'..line..'</span>') -- meio :wikitext('<span style="display:inline-block; overflow:hidden;">'..End..'</span>') -- fim if line ~= '|' then -- mesmo que if not pipe (|) (se não for pipe) outside :css('position','relative') :css('left','-0.25em') else outside :css('margin-top','0.25em') end if args['testar_largura_da_linha'] then -- usado para testar largura da linha antes e depois da redução da largura return 'Antes:'..'<br />'..line..'<br />'..'Depois:'..'<br />'..'<span style="display:inline-block;overflow:hidden;word-wrap:normal;width:'..count..'em;">'..line..'</span>'..'<br />'..'Final:'..'<br />'..tostring(outside) end if args[2] then local note = mw.html.create('span') note:wikitext('([[Wikipédia:Indentação#Recomeço|desindentação]]) ') -- adicionar (desindentação) caso necessário return tostring(outside)..tostring(note) else return outside end end return p