モジュール:法人番号検査

ナビゲーションに移動 検索に移動
モジュールの解説[表示] [編集] [履歴] [キャッシュを破棄]

このモジュールは、与えられた番号が法人番号として適切かどうかを検査します。番号が13桁の数値であり、かつチェックディジット(参考)が合っていれば検査に合格します。

使い方[編集]

#invokeで呼び出す[編集]

{{#invoke:法人番号検査|main|検査対象の番号}}

テンプレートから当モジュールを使用する場合は、上記のようにしてmain関数を呼び出してください。検査に合格すればmain関数は空文字列を返し、不合格であれば文字列のerrorを返します。したがってテンプレート側で#if文や#switch文などを記述すれば、合格の場合と不合格の場合で処理を分けることができます。

他のモジュールから使用する[編集]

local result = require('モジュール:法人番号検査').check(id)  -- idは検査対象の番号

他のモジュールから当モジュールを利用する場合は、check関数を呼び出すことで検査を行えます。check関数は第1引数に渡された値(文字列型である必要があります)について検査を行い、検査に合格すればブール値のtrueを返し、不合格であればブール値のfalseを返します。

関連項目[編集]

require('モジュール:No globals')

local function _check(id)
	--[[
	-- 法人番号の検査を行う
	-- 文字列idが法人番号として有効であればtrueを、
	-- そうでなければfalseを返す
	]]--
	id = id:match('^%s*([1-9]%d%d%d%d%d%d%d%d%d%d%d%d)%s*$')
	if not id then
		return false
	end

	local temp = 0
	for i, v in ipairs{ id:byte(1, 13) } do
		temp = temp + tonumber(string.char(v)) * (2 - i % 2)
	end
	
	return temp % 9 == 0
end

return {
	check = function(id)
		require('libraryUtil').checkType('check', 1, id, 'string')
		return _check(id)
	end,
	main = function(frame)
		return _check(frame.args[1] or '') and '' or 'error'
	end
}