モジュールの解説[表示] [編集] [履歴] [キャッシュを破棄]

Template:UserAN2用のモジュール。

使い方 編集

書式 編集

{{#invoke:UserAN2|main}}

local p={}
local fullurl = '[https://ja.wikipedia.org/w/index.php?title='

function p.main( frame )
--	local args = require( 'Module:Arguments' ).getArgs( frame, { wrappers = 'Template:UserAN2', removeBlanks = true })

	-- 入力引数格納
	local type2	= frame.args.type	or ''
	local status	= frame.args.status	or args['状態']  or ''

	local username	= frame.args.user	or args[1] or ''
	local enc_name	 = mw.uri.encode(username, "WIKI")
	local check	= frame.args.check	or args[2] or ''

	if username == '' then
		return p.error('アカウント未記入')
	end

	-- type指定が空白ならデフォルトでuser2指定、そうでなければ引数を小文字化
	if type2 == '' then
		type2 = 'user2'
	else
		type2 = string.lower(type2)
	end

	-- アイコン
	local icon = {
		done = '[[File:Yes check.svg|20px|<span class="done">済</span>]]',
		doing = '[[画像:Stock post message.svg|22px|<span class="doing">未了</span>]]',

		reject = '[[ファイル:X mark.svg|15px|<span class="done">却下</span>]] <span style="font-weight: bold;">却下</span>',
	}

	--定形リンク
	local link = {
		plain1	= '<span class="plainlinks">',
		small1	= '<span style="font-size: smaller;">',
		small2	= '<span style="font-size: small;">',
		span1	= '</span>',
		span2	= '</span></span>',

		user	= fullurl ..'User:' ..enc_name ..' 利用者:' ..username ..']',
		user2	= '利用者:' ..username,
		talk	= fullurl ..'User_talk:' ..enc_name ..' 会話]',
		contrib	= fullurl ..'Special:Contributions/' ..enc_name ..' 投稿記録]',
		undo	= '<sup>' ..fullurl ..'Special:Contributions&target=' ..enc_name ..'&tagfilter=mw-undo 取り消し]</sup>',
		revert	= '<sub>' ..fullurl ..'Special:Contributions&target=' ..enc_name ..'&tagfilter=mw-manual-revert 手動差し戻し]</sub>',
		log	= fullurl ..'Special:Log&page=User%3A' ..enc_name ..' 記録]',
		xtools	= '[https://xtools.wmflabs.org/ec/ja.wikipedia.org/' ..enc_name ..'?uselang=ja xtools]',
		blocklog= fullurl ..'Special:Log/&type=block&page=User:' ..enc_name ..' ブロック記録]',
		block	= '[[特別:投稿ブロック/' ..enc_name ..'|ブロック]]',
		ca 	= '[[Special:CentralAuth/' ..enc_name ..'|CA]]',
		ur	= '[[Special:UserRights/' ..enc_name ..'|権限]]',
		guc	= '[https://guc.toolforge.org/?by=date&user=' ..enc_name ..' guc]', --2021/6/18廃止:[[Template‐ノート:UserAN#guc -> xtool]]

		ip	= username,	-- 生入力内容 diff/logid兼用
		ip_talk	= fullurl ..'User_talk:' ..username ..' 会話]',
		ip_cont	= fullurl ..'Special:Contributions/' ..username ..' 投稿記録]',
		ip_log	= '[[Special:Log/' ..username ..'|記録]]',
		whois	= 'Whois [https://whois.domaintools.com/' ..username ..' IPv4]・'
			.. '[https://www.ultratools.com/tools/ipv6InfoResult?ipAddress=' ..username ..' IPv6]',

	}

	--進捗判定
	local flag = ''

	if string.lower(status) == 'done' or status == '済' or status == '済み' then
		flag = icon.done
	else
		flag = icon.doing
	end

	if string.lower(check) == 'done' or check == '済' or check == '済み' then
		flag = icon.done

	elseif check == '却下' or check == '非対処' then
		flag = icon.reject

	elseif check ~= '' then
		flag = icon.done ..'<span style="font-size: smaller; font-weight: bold;">' ..check ..'</span>'
	end

	--アカウント表記形式 / type2に入っている文字列を上から総当たりで参照し、合致すればlabelの内容を置換する(#Switch構文の代わり)
	local label = ({
		user	= p.user(link),
		user2	= p.user2(link),
		user3	= p.user2(link),
		user4	= p.user4(link),
		user5	= p.user5(link),
		unl	= p.unl(link),
		usernolink = p.unl(link),

		ip	= p.ip(link),
		ip2	= p.ip2(link),
		ipuser2	= p.ip2(link),

		none	= username,

		user50	= p.user50(link),
		userr	= p.userR(link),
		userr2	= p.userR2(link),
		userr3	= p.userR3(link),

		diff	= p.diff(link),
		logid	= p.logid(link),
	})[type2]

	if label then
		return flag ..' ' ..label
	end
end

-- エラーメッセージ
function p.error ( message )
	return '<strong class="error">エラー:' ..message ..'</strong>'
end

-- 以下、各表記書式
function p.user ( link )
	return link.plain1 ..link.user ..link.small1 ..'(' .. link.talk ..' / ' ..link.contrib ..')' ..link.span2
end

function p.user2 ( link )
	return link.plain1 ..link.user ..link.small1 ..'(' ..link.talk ..' / ' ..link.contrib ..' / ' ..link.log ..')' ..link.span2
end

function p.user4 ( link )
	return link.plain1 ..link.small1 ..'(' ..link.talk ..' / ' ..link.contrib ..' / ' ..link.log ..')' ..link.span2
end

function p.user5 ( link )
	return link.plain1 ..link.user ..link.small1 ..'(' ..link.talk ..' / ' ..link.contrib ..' / ' ..link.log ..' / '
		..link.ca .. ' / ' ..link.xtools ..')' ..link.span2
end

function p.unl ( link )
	return link.plain1 ..link.user2 ..link.small1 ..'(' ..link.talk ..' / ' ..link.contrib ..' / ' ..link.log ..')' ..link.span2
end

function p.ip ( link )
	return 'IP:' ..link.ip ..link.plain1 ..link.small1 ..'(' ..link.ip_talk ..' / ' ..link.ip_cont ..')' ..link.span2
end

function p.ip2 ( link )
	return 'IP:' ..link.ip ..link.plain1 ..link.small1 ..'(' ..link.ip_talk ..' / ' ..link.ip_cont ..' / '
			..link.ip_log ..' / ' ..link.whois ..')' ..link.span2
end

function p.user50 ( link )
	return link.plain1 ..link.user ..link.small1 ..'(' ..link.talk ..' / ' ..link.contrib ..' / '
		..link.log ..' / ' ..link.ca .. ' / ' ..link.guc ..' / ' ..link.xtools
		..')' ..link.span2
end

function p.userR ( link )
	return link.plain1 ..link.user ..link.small1 ..'(' ..link.talk ..' / ' ..link.contrib
		..link.small2 ..'(' ..link.undo ..'&#32;' ..link.revert ..')' ..link.span1
		..link.log ..')' ..link.span2
end

function p.userR2 ( link )
	return link.plain1 ..link.user ..link.small1 ..'(' ..link.talk ..' / ' ..link.contrib
		..link.small2 ..'(' ..link.undo ..'&#32;' ..link.revert ..')' ..link.span1
		..link.log ..' / ' ..link.xtools ..' / '  ..link.ca .. ' / ' ..link.ur ..' / ' ..link.guc
		..')' ..link.span2
end

function p.userR3 ( link )
	return link.plain1 ..link.user2 ..link.small1 ..'(' ..link.talk ..' / ' ..link.contrib
		..link.small2 ..'(' ..link.undo ..'&#32;' ..link.revert ..')' ..link.span1
		..link.log ..' / ' ..link.xtools ..' / '  ..link.ca .. ' / ' ..link.ur ..' / ' ..link.guc
		..')' ..link.span2
end

function p.diff ( link )
	return '[[特別:差分/' ..link.ip ..'/prev|版番 ' ..link.ip ..' の差分]]'
end

function p.logid ( link )
	return '[[特別:転送/logid/' ..link.ip ..'|Logid/' ..link.ip ..']]'
end

return p