This module provides access to Module:scripts from templates, so that they can make use of the information stored there.
{{#invoke:scripts/templates|exists|script code}}
Check whether a script code exists and is valid. It will return "1" if the script code exists, and the empty string "" if it does not.
This is rarely needed, because a script error will result when someone uses a code that is not valid, so you do not need this just to check for errors. However, in case you need to decide different actions based on whether a certain parameter is a script code or something else, this function can be useful.
{{#invoke:scripts/templates|getByCode|script code|item to look up|index}}
Queries information about a script code.
getCanonicalName
or getCategoryName
. If no item has been provided, the result will be a script error.getOtherNames
. It selects which item in the list to return. On items that are single strings, like getCanonicalName
, it has no effect. If no index is given, the default will be 1 (the first subitem). If an index is given that is higher than the number of items in the list, the result will be an empty string.For example, to request the default (canonical) name of the script whose code is Latn
:
{{#invoke:scripts/templates|getByCode|Latn|getCanonicalName}}
latin
To request its second name, if any:
{{#invoke:scripts/templates|getByCode|Latn|getOtherNames|1}}
Roman
local export = {}
function export.exists(frame)
local args = frame.args
local sc = args or error("Script code has not been specified. Please pass parameter 1 to the module invocation.")
sc = require("Module:scripts").getByCode(sc)
if sc then
return "1"
else
return ""
end
end
function export.getByCode(frame)
local args = frame.args
local sc = args or error("Script code (parameter 1) has not been specified.")
sc = require("Module:scripts").getByCode(sc, true)
return require("Module:language-like").templateGetByCode(sc, args,
function(itemname)
if itemname == "countCharacters" then
local text = args or ""
return sc:countCharacters(text)
end
end
)
end
function export.getByCanonicalName(frame)
local args = frame.args
local sc = args or error("Script name (parameter 1) has not been specified.")
sc = require("Module:scripts").getByCanonicalName(sc)
if sc then
return sc:getCode()
else
return "None"
end
end
function export.findBestScript(frame)
local args = frame.args
local text = args or error("Text to analyse (parameter 1) has not been specified.")
local lang = args or error("Language code (parameter 2) has not been specified.")
lang = require("Module:languages").getByCode(lang, true)
return require("Module:scripts").findBestScript(text, lang):getCode()
end
function export.findBestScriptWithoutLang(frame)
local args = frame.args
local text = args or error("Text to analyse (parameter 1) has not been specified.")
return require("Module:scripts").findBestScriptWithoutLang(text)
end
return export