This wiki has had no edits or log actions made within the last 45 days and has been automatically marked as inactive. If you would like to prevent this wiki from being closed, please start showing signs of activity here. If there are no signs of this wiki being used within the next 15 days, this wiki will be closed in accordance to the Dormancy Policy (which all wiki founders accept when requesting a wiki). If this wiki is closed and no one reopens it 135 days from now, this wiki will become eligible for deletion. Note: If you are a bureaucrat, you can go to Special:ManageWiki and uncheck "inactive" yourself.

Module:LibraryUtil

From Persist Online Wiki

Documentation for this module may be created at Module:LibraryUtil/doc

-- <nowiki>
local libraryUtil = require( 'libraryUtil' )

-- libraryUtil is a standard scribunto module, the following commented out code is just to show what is inside it. Documentation about these functions can be found at https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#libraryUtil
--[=[
local libraryUtil = {}

function libraryUtil.checkType( name, argIdx, arg, expectType, nilOk )
	if arg == nil and nilOk then
		return
	end
	if type( arg ) ~= expectType then
		local msg = string.format( "bad argument #%d to '%s' (%s expected, got %s)",
			argIdx, name, expectType, type( arg )
		)
		error( msg, 3 )
	end
end

function libraryUtil.checkTypeMulti( name, argIdx, arg, expectTypes )
	local argType = type( arg )
	for _, expectType in ipairs( expectTypes ) do
		if argType == expectType then
			return
		end
	end
	local n = #expectTypes
	local typeList
	if n > 1 then
		typeList = table.concat( expectTypes, ', ', 1, n - 1 ) .. ' or ' .. expectTypes[n]
	else
		typeList = expectTypes[1]
	end
	local msg = string.format( "bad argument #%d to '%s' (%s expected, got %s)",
		argIdx,
		name,
		typeList,
		type( arg )
	)
	error( msg, 3 )
end

function libraryUtil.checkTypeForIndex( index, value, expectType )
	if type( value ) ~= expectType then
		local msg = string.format( "value for index '%s' must be %s, %s given",
			index, expectType, type( value )
		)
		error( msg, 3 )
	end
end

function libraryUtil.checkTypeForNamedArg( name, argName, arg, expectType, nilOk )
	if arg == nil and nilOk then
		return
	end
	if type( arg ) ~= expectType then
		local msg = string.format( "bad named argument %s to '%s' (%s expected, got %s)",
			argName, name, expectType, type( arg )
		)
		error( msg, 3 )
	end
end

function libraryUtil.makeCheckSelfFunction( libraryName, varName, selfObj, selfObjDesc )
	return function ( self, method )
		if self ~= selfObj then
			error( string.format(
				"%s: invalid %s. Did you call %s with a dot instead of a colon, i.e. " ..
				"%s.%s() instead of %s:%s()?",
				libraryName, selfObjDesc, method, varName, method, varName, method
			), 3 )
		end
	end
end
]=]

function libraryUtil.makeCheckClassFunction( libraryName, varName, class, selfObjDesc )
	return function ( self, method )
		if getmetatable( self ) ~= class then
			error( string.format(
				"%s: invalid %s. Did you call %s with a dot instead of a colon, i.e. " ..
				"%s.%s() instead of %s:%s()?",
				libraryName, selfObjDesc, method, varName, method, varName, method
			), 3 )
		end
	end
end

return libraryUtil
-- </nowiki>
Cookies help us deliver our services. By using our services, you agree to our use of cookies.