FANDOM


-- <nowiki>
--------------------------------------------------------------------------------
-- An inexpensive alternative to {{#ifexist}} which looks for a given module,
-- and returns one of two values depending on whether it was found.
--
-- Syntax:
-- {{#invoke:Existsmod|main|<module-name>|<value-if-found>|<value-if-missing>}}
--------------------------------------------------------------------------------
local p = {}
 
local checkType = require("libraryUtil").checkType
local normalize = require("Dev:NormalizeModuleName")
local getArgs = require("Dev:Arguments").getArgs
 
function p.module_exists(name, foundVal, missingVal)
    checkType("Dev:Existsmod", 1, name, "string", true)
 
    if name then
        name = table.concat{normalize(name)}
 
        if package.loaded[name] then
            return foundVal
        else
            local _, val = pcall(package.loaders[2], name)
 
            if type(val) == "function" or type(val) == "string" then
                return foundVal 
            end
        end
    end
 
    return missingVal
end
 
function p.main(frame)
    local args = getArgs(frame)
 
    return p.module_exists(args[1], args[2], args[3])
end
 
return p
 
-- </nowiki>
-- (Add categories here.)

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.