Módulo:Link de predefinição em geral: mudanças entre as edições
Importando predefinição/módulo da Wikipédia em português para manter layout |
Importando predefinição/módulo da Wikipédia em português para manter layout |
||
| Linha 32: | Linha 32: | ||
end | end | ||
-- Constrói a parte do link | |||
local function linkTitle(args) | local function linkTitle(args) | ||
local titleObj | local titleObj | ||
if args['1'] then | if args['1'] then | ||
-- Isso lida com :Page e outros NS | -- Isso lida com :Page e outros NS | ||
| Linha 49: | Linha 42: | ||
titleObj = mw.title.getCurrentTitle() | titleObj = mw.title.getCurrentTitle() | ||
end | end | ||
local textPart = args.alttext | local textPart = args.alttext | ||
if not _ne(textPart) then | if not _ne(textPart) then | ||
if titleObj ~= nil then | if titleObj ~= nil then | ||
textPart = titleObj:inNamespace( | -- Opção Recomendada (Usando ID numérico do namespace 10): | ||
textPart = titleObj:inNamespace(10) and args['1'] or titleObj.fullText | |||
else | else | ||
-- ligação vermelha | -- ligação vermelha | ||
| Linha 73: | Linha 64: | ||
textPart = nw('{') .. textPart .. nw('}') | textPart = nw('{') .. textPart .. nw('}') | ||
end | end | ||
titlePart = | local titlePart | ||
if _ne(args.nolink) then | |||
titlePart = textPart | |||
else | |||
titlePart = '[[' .. (titleObj ~= nil and titleObj.fullText or addTemplate(args['1'])) .. | |||
'|' .. textPart .. ']]' | |||
end | |||
if _ne(args.braceinside) then | if _ne(args.braceinside) then | ||
titlePart = nw('{') .. titlePart .. nw('}') | titlePart = nw('{') .. titlePart .. nw('}') | ||
end | |||
local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname) | |||
if bold then | |||
titlePart = "'''" .. titlePart .. "'''" | |||
end | |||
if _ne(args.nowrapname) then | |||
titlePart = '<span class="nowrap">' .. titlePart .. '</span>' | |||
end | end | ||
return titlePart | return titlePart | ||
| Linha 90: | Linha 96: | ||
function p._main(args) | function p._main(args) | ||
local italic = _ne(args.italic) or _ne(args.italics) | local italic = _ne(args.italic) or _ne(args.italics) | ||
local dontBrace = _ne(args.brace) or _ne(args.braceinside) | local dontBrace = _ne(args.brace) or _ne(args.braceinside) | ||
| Linha 97: | Linha 102: | ||
local expand = _ne(args._expand) | local expand = _ne(args._expand) | ||
local titlePart = linkTitle(args) | local titlePart = linkTitle(args) | ||
-- Constrói os argumentos | -- Constrói os argumentos | ||
| Linha 152: | Linha 154: | ||
if show_result then | if show_result then | ||
if _ne(args.nocat) then codeArguments['nocat'] = true end | |||
local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments} | local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments} | ||
ret = ret .. " → " .. result | ret = ret .. " → " .. result | ||
Edição das 05h01min de 20 de setembro de 2026
-- Isso implementa a Predefinição:Tlg local getArgs = require('Módulo:Arguments').getArgs local p = {}
-- É uma string que não está vazia? local function _ne(s) return s ~= nil and s ~= "" end
local nw = mw.text.nowiki
local function addTemplate(s) local i, _ = s:find(':', 1, true) if i == nil then return 'Predefinição:' .. s end local ns = s:sub(1, i - 1) if ns == or mw.site.namespaces[ns] then return s else return 'Predefinição:' .. s end end
local function trimTemplate(s) local needle = 'predefinição:' if s:sub(1, needle:len()):lower() == needle then return s:sub(needle:len() + 1) else return s end end
-- Constrói a parte do link local function linkTitle(args)
local titleObj if args['1'] then -- Isso lida com :Page e outros NS titleObj = mw.title.new(args['1'], 'Predefinição') else titleObj = mw.title.getCurrentTitle() end
local textPart = args.alttext if not _ne(textPart) then if titleObj ~= nil then -- Opção Recomendada (Usando ID numérico do namespace 10): textPart = titleObj:inNamespace(10) and args['1'] or titleObj.fullText else -- ligação vermelha textPart = args['1'] end end
if _ne(args.subst) then -- hack: a coisa do ns acima provavelmente está quebrada textPart = 'subst:' .. textPart end
if _ne(args.brace) then textPart = nw('Predefinição:') .. textPart .. nw('') elseif _ne(args.braceinside) then textPart = nw('{') .. textPart .. nw('}') end
local titlePart if _ne(args.nolink) then titlePart = textPart else titlePart = '[[' .. (titleObj ~= nil and titleObj.fullText or addTemplate(args['1'])) .. '|' .. textPart .. ']]' end if _ne(args.braceinside) then titlePart = nw('{') .. titlePart .. nw('}') end local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname) if bold then titlePart = "" .. titlePart .. "" end
if _ne(args.nowrapname) then
titlePart = '' .. titlePart .. '' end return titlePart end
function p.main(frame) local args = getArgs(frame, { trim = true, removeBlanks = false }) return p._main(args) end
function p._main(args) local italic = _ne(args.italic) or _ne(args.italics) local dontBrace = _ne(args.brace) or _ne(args.braceinside) local code = _ne(args.code) or _ne(args.tt) local show_result = _ne(args._show_result) local expand = _ne(args._expand)
local titlePart = linkTitle(args)
-- Constrói os argumentos local textPart = "" local textPartBuffer = "|" local codeArguments = {} local codeArgumentsString = "" local i = 2 local j = 1 while args[i] do local val = args[i] if val ~= "" then if _ne(args.nowiki) then -- Remove as marcações nowiki primeiro porque chamar nw em algo que já contém marcações nowiki irá -- desmontar o marcador de faixa nowiki e resultará na exibição literal de UNIQ...QINU val = nw(mw.text.unstripNoWiki(val)) end local k, v = string.match(val, "(.*)=(.*)") if not k then codeArguments[j] = val j = j + 1 else codeArguments[k] = v end codeArgumentsString = codeArgumentsString .. textPartBuffer .. val if italic then val = '' .. val .. '' end textPart = textPart .. textPartBuffer .. val end i = i + 1 end
-- envoltório final
local ret = titlePart .. textPart
if not dontBrace then ret = nw('Predefinição:') .. ret .. nw('') end
if _ne(args.a) then ret = nw('*') .. ' ' .. ret end
if _ne(args.kbd) then ret = '' .. ret .. '' end
if code then
ret = '' .. ret .. ''
elseif _ne(args.plaincode) then
ret = '' .. ret .. ''
end
if _ne(args.nowrap) then ret = '' .. ret .. '' end
--[[ Embrulhar como 'HTML'? local span = mw.html.create('span') span:wikitext(ret) --]]
if _ne(args.debug) then ret = ret .. '\n
' .. mw.text.encode(mw.dumpObject(args)) .. '
' end
if show_result then if _ne(args.nocat) then codeArguments['nocat'] = true end local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments} ret = ret .. " → " .. result end
if expand then local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}') local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query) mw.log() ret = ret .. " [" .. tostring(url) .. "]" end
return ret end
return p