モジュール:リンク修正依頼/改名
表示
require('strict')
local getArgs = require('Module:Arguments').getArgs
local fexternal = '%s <span style="font-size:smaller">([[Special:LinkSearch/%s|外部リンク検索]])</span>'
local fcrosswiki = '[[%s]] <span style="font-size:smaller">([%s 非転送] / [%s 履歴])</span>'
local finner = '[[%s]] <span style="font-size:smaller">([%s 非転送] / [%s 履歴] / [[Special:WhatLinksHere/%s|リンク元]])</span>'
local function makeLink(target)
if type(target) ~= 'string' then
return ''
end
local title = mw.title.new(target)
local result, uri = pcall(mw.uri.new, target)
if result and uri.host then
return mw.ustring.format(fexternal, target, target)
elseif not title then
return target
end
return mw.ustring.format(
(title.interwiki == '') and finner or fcrosswiki,
(mw.ustring.sub(target, 1, 1) == ':') and target or (':' .. target),
title:fullUrl('redirect=no'),
title:fullUrl('action=history'),
title.prefixedText
)
end
local p = {}
local fli = '<li>%s→%s</li>\n'
function p.main(frame)
local args = getArgs(frame, { wrappers = 'Template:リンク修正依頼/改名' })
local linklist = mw.html.create('ol'):addClass('plainlinks'):newline()
local i = 1
while (args[i] or args[i + 1]) do
linklist:wikitext(mw.ustring.format(fli, makeLink(args[i]), makeLink(args[i + 1])))
i = i + 2
end
local wikitable = mw.html.create('table')
:addClass('wikitable mw-collapsible')
:wikitext('\n<tr><th>改名によるリンク修正依頼</th></tr>\n')
:wikitext("<tr><td>'''改名提案の場所''': ")
:wikitext(args['提案']
-- `mw.title.new(A{{!}}B)` is a nil value
or args[2] and mw.title.new(args[2]) and '[[' .. mw.title.new(args[2]).talkPageTitle.prefixedText .. ']]'
or ''
)
:wikitext('</td></tr>\n<tr><td>')
:wikitext(tostring(linklist))
:wikitext('</td></tr>\n')
if args.options then
wikitable:wikitext('<tr><td>optionsを使用: ')
:wikitext(frame:extensionTag('syntaxhighlight', args.options, { lang = 'json', inline = '' } ))
:wikitext('</td></tr>\n')
end
if i > 20 then
wikitable:addClass('mw-collapsed')
end
return tostring(wikitable)
end
return p