モジュール:サンドボックス/本日晴天/仮リンク/link
表示
モジュールの解説[作成]
require('strict')
local function otherLangLink(langCode, pageName)
-- 引数が指定されていない場合はnilを返す
if not langCode or not pageName then
return nil
end
local langDisp
-- wikidataの場合は「wikidata」、それ以外の場合は言語名+「版」とする
if langCode == 'wikidata' or langCode == 'Wikidata' then
return string.format('[[:d:%s|wikidata]]', pageName)
end
langDisp = mw.loadData('モジュール:Wikipedia言語名/lang mapping')[langCode]
if not langDisp then
error('言語コードの指定に誤りがあります', 0)
end
return string.format(
'[[:%s:%s|%s版]]',
langCode,
pageName,
langDisp
)
end
local function otherLangLinkDispName(langCode, pageName, interwikilabel, short, links)
-- 必須引数が指定されていない場合はnilを返す
if not langCode or not pageName then
return nil
end
-- 言語ページ取得
local langPage = mw.loadData('モジュール:Wikipedia言語名/lang mapping')[langCode]
if not langPage then
error('言語コードの指定に誤りがあります', 0)
end
-- 言語短縮名取得
local langShort
if short == 'on' then
langShort = mw.loadData('モジュール:Wikipedia言語名/lang mapping short')[langCode]
end
-- 言語表示部分取得
local langLink
if links == 'no' then
langLink = langShort or langPage
else
langLink = string.format(
langShort and '[[%s|%s]]' or '[[%s]]',
langPage,
langShort
)
end
return string.format(
'%s: <span lang="%s", xml:lang="%s">[[:%s:%s|%s]]<span>',
langLink,
langCode,
langCode,
langCode,
pageName,
interwikilabel or pageName
)
end
local p = {}
function p.otherLangLinkList(args)
local label = args.label or args[1] or ''
local result = mw.html.create()
-- ツールチップ指定
if args.view then
local tooltip = mw.html.create('span')
:attr('title', (args.link .. args.title))
:wikitext(label)
if args.black then
result:node(tooltip)
else
result:wikitext('[[', args.link, '|')
:node(tooltip)
:wikitext(']]')
end
else
result:wikitext(
'[[',
args.link,
'|',
label,
']]<span class="interlangLink_solved" style="display: none;" title="この仮リンクは解消済みです。日本語版記事をチェックして問題がなければ通常の内部リンクに書き換えてください。">'
)
end
if args[2] and args[3] then
-- フォント指定
if not args.viewInterwikiPageName then
result:wikitext(
'<span style="font-size: 0.77em; font-weight: normal;" class="noprint">'
)
end
-- 改行指定対応
if args.br then
result:wikitext('<br/>')
end
result:wikitext('(')
if args.viewInterwikiPageName then
result:node(
otherLangLinkDispName(args[2], args[3], args.interwikilabel, args.short, args.links)
)
else
result:wikitext(
table.concat(
{
otherLangLink(args[2], args[3]),
otherLangLink(args[4], args[5]),
otherLangLink(args[6], args[7]),
otherLangLink(args[8], args[9])
},
'、'
)
)
end
if args.add then
result:wikitext(args.add)
end
result:wikitext(')')
if not args.viewInterwikiPageName then
result:wikitext('</span>')
end
end
if not args.view then
result:wikitext('<sup>[解消済]</sup></span>')
end
return result
end
return p