<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.minetest.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ALibraryUtil</id>
	<title>Module:LibraryUtil - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.minetest.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ALibraryUtil"/>
	<link rel="alternate" type="text/html" href="https://wiki.minetest.org/index.php?title=Module:LibraryUtil&amp;action=history"/>
	<updated>2026-04-29T14:33:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>https://wiki.minetest.org/index.php?title=Module:LibraryUtil&amp;diff=15083&amp;oldid=prev</id>
		<title>&gt;FnControlOption: FnControlOption changed the content model of the page Module:LibraryUtil from &quot;plain text&quot; to &quot;Scribunto&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.minetest.org/index.php?title=Module:LibraryUtil&amp;diff=15083&amp;oldid=prev"/>
		<updated>2022-06-07T17:38:25Z</updated>

		<summary type="html">&lt;p&gt;FnControlOption changed the content model of the page &lt;a href=&quot;/Module:LibraryUtil&quot; title=&quot;Module:LibraryUtil&quot;&gt;Module:LibraryUtil&lt;/a&gt; from &amp;quot;plain text&amp;quot; to &amp;quot;Scribunto&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
    libraryUtil, modified for the Minetest Wiki.&lt;br /&gt;
&lt;br /&gt;
    Code released under the GPL v2+ as per:&lt;br /&gt;
    https://github.com/wikimedia/mediawiki-extensions-Scribunto/blob/7d676c3/COPYING&lt;br /&gt;
&lt;br /&gt;
    @license GNU GPL v2+&lt;br /&gt;
    @author Brad Jorsch &amp;lt; bjorsch@wikimedia.org &amp;gt;&lt;br /&gt;
    @author &amp;quot;Mr. Stradivarius&amp;quot; &amp;lt; misterstrad@gmail.com &amp;gt;&lt;br /&gt;
    @author MrIbby &amp;lt; siribby@outlook.com &amp;gt;&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local LibraryUtil = {}&lt;br /&gt;
&lt;br /&gt;
function LibraryUtil.checkType( name, argIdx, arg, expectType, nilOk )&lt;br /&gt;
    if arg == nil and nilOk then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    if type( arg ) ~= expectType then&lt;br /&gt;
        local msg = string.format( &amp;quot;bad argument #%d to '%s' (%s expected, got %s)&amp;quot;,&lt;br /&gt;
            argIdx, name, expectType, type( arg )&lt;br /&gt;
        )&lt;br /&gt;
        error( msg, 3 )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function LibraryUtil.checkTypeMulti( name, argIdx, arg, expectTypes )&lt;br /&gt;
    local argType = type( arg )&lt;br /&gt;
    for _, expectType in ipairs( expectTypes ) do&lt;br /&gt;
        if argType == expectType then&lt;br /&gt;
            return&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    local n = #expectTypes&lt;br /&gt;
    local typeList&lt;br /&gt;
    if n &amp;gt; 1 then&lt;br /&gt;
        typeList = table.concat( expectTypes, ', ', 1, n - 1 ) .. ' or ' .. expectTypes[n]&lt;br /&gt;
    else&lt;br /&gt;
        typeList = expectTypes[1]&lt;br /&gt;
    end&lt;br /&gt;
    local msg = string.format( &amp;quot;bad argument #%d to '%s' (%s expected, got %s)&amp;quot;,&lt;br /&gt;
        argIdx,&lt;br /&gt;
        name,&lt;br /&gt;
        typeList,&lt;br /&gt;
        type( arg )&lt;br /&gt;
    )&lt;br /&gt;
    error( msg, 3 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function LibraryUtil.checkTypeForIndex( index, value, expectType )&lt;br /&gt;
    if type( value ) ~= expectType then&lt;br /&gt;
        local msg = string.format( &amp;quot;value for index '%s' must be %s, %s given&amp;quot;,&lt;br /&gt;
            index, expectType, type( value )&lt;br /&gt;
        )&lt;br /&gt;
        error( msg, 3 )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function LibraryUtil.checkTypeForNamedArg( name, argName, arg, expectType, nilOk )&lt;br /&gt;
    if arg == nil and nilOk then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    if type( arg ) ~= expectType then&lt;br /&gt;
        local msg = string.format( &amp;quot;bad named argument %s to '%s' (%s expected, got %s)&amp;quot;,&lt;br /&gt;
            argName, name, expectType, type( arg )&lt;br /&gt;
        )&lt;br /&gt;
        error( msg, 3 )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function LibraryUtil.makeCheckSelfFunction( libraryName, varName, selfObj, selfObjDesc )&lt;br /&gt;
    return function ( self, method )&lt;br /&gt;
        if self ~= selfObj then&lt;br /&gt;
            error( string.format(&lt;br /&gt;
                &amp;quot;%s: invalid %s. Did you call %s with a dot instead of a colon, i.e. &amp;quot; ..&lt;br /&gt;
                &amp;quot;%s.%s() instead of %s:%s()?&amp;quot;,&lt;br /&gt;
                libraryName, selfObjDesc, method, varName, method, varName, method&lt;br /&gt;
            ), 3 )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return LibraryUtil&lt;/div&gt;</summary>
		<author><name>&gt;FnControlOption</name></author>
	</entry>
</feed>