コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

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

半永久的に拡張半保護されているモジュール
モジュールの解説[表示] [編集] [履歴] [キャッシュを破棄]

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

使い方

#invokeで呼び出す

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

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

他のモジュールから使用する

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

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

関連項目

require('strict')
local p = {}

function p.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 work = 0
	for i = 1, 13 do
		work = work + tonumber(id:sub(i, i)) * (2 - i % 2)
	end
	
	return work % 9 == 0
end

function p.main(frame)
	return p.check(frame.args[1] or '') and '' or 'error'
end

return p