Wikipedia:Comparable Lua functions to wikitext
This is a list of Lua functions and the wikitext parser functions and magic words that they are comparable to.
It is slightly out of date for what wikitext parser functions can do.
Parser functions
editWikitext | Lua |
---|---|
{{#if:x |not empty |empty}}
|
if x then
'not empty'
else
'empty'
end
|
{{#ifeq:x |y |identical |different}}
|
if x == y then
'identical'
else
'different'
end
|
{{#iferror:function |bad |good}}
|
if tostring(mw.getCurrentFrame():preprocess('function')):find('<strong class="error"') then
'bad'
else
'good'
end
|
{{#ifexpr:1 2=3 |true|false}}
|
if 1 2 == 3 then
'true'
else
'false'
end
|
[Expensive]{{#ifexist:namespace:title |exists |doesn't exist}}
|
[Expensive]
if mw.title.new('title', 'namespace').exists == true then
"exists"
else
"doesn't exist"
end
|
{{#rel2abs:path |basepath}}
|
|
{{#switch:{{{1}}} |foo=Foo |Bar}}
|
local cases = {
default = "Bar",
foo = "Foo",
}
local pframe = mw.getCurrentFrame():getParent()
local arg = pframe.args[1]
cases[arg] or cases["default"]
|
{{#time:format |timestamp}}
|
mw.getContentLanguage():formatDate('format', 'timestamp')
|
{{#timel:format |timestamp}}
|
mw.getContentLanguage():formatDate('format', 'timestamp', 1)
|
{{#titleparts:pagename |number of segments to return |first segment to return}}
|
Math
editUnlike in wikicode, Lua does not use functions like #ifexpr
and #expr
. Add the Lua operators and functions straight into your module. See mw:Help:Calculation for details on how #expr
and mw.ext.ParserFunctions.expr()
evaluates expressions.
Wikicode | Lua |
---|---|
() | () |
Wikicode | Lua |
---|---|
1234.5 | 1234.5 |
2e3 | 2e3 |
pi | math.pi |
e | math.exp(1) |
2 2 | 2 2 |
2-1 | 2-1 |
Wikicode | Lua |
---|---|
not | not |
ceil1.2 | math.ceil(1.2) |
trunc | |
floor1.2 | math.floor(1.2) |
abs-2 | math.abs(-2) |
exp43 | math.exp(43) |
ln2 | math.log(2) |
cos0.1 | math.cos(0.1) |
tan0.1 | math.tan(0.1) |
acos0.1 | math.acos(0.1) |
asin0.1 | math.asin(0.1) |
atan0.1 | math.atan(0.1) |
Wikicode | Lua |
---|---|
2^3 | 2^3 |
2*3 | 2*3 |
2/3 2div3 |
2/3 |
30mod7 | 30%7 |
2 | 2 |
-2 | -2 |
Wikicode | Data type | Lua | Data type |
---|---|---|---|
3.0=3 | Integer (0 or 1) | 3.0==3 | Boolean (true or false) |
3!=4 3<>4 |
Integer | 3~=4 | Boolean |
4>3 | Integer | 4>3 | Boolean |
4>=3 | Integer | 4>=3 | Boolean |
3<=4 | Integer | 3<=4 | Boolean |
3<=4 | Integer | 3<=4 | Boolean |
and | Integer | and | Boolean |
or | Integer | or | Boolean |
Magic words
editDate and time
editWikicode | Lua |
---|---|
{{CURRENTYEAR}}
|
mw.getContentLanguage():formatDate("Y")
os.date("!%Y")
|
{{CURRENTMONTH}}
{{CURRENTMONTH2}}
|
mw.getContentLanguage():formatDate("m")
os.date("!%m")
|
{{CURRENTMONTH1}}
|
mw.getContentLanguage():formatDate("n")
("%d"):format(os.date("!%m"))
|
{{CURRENTMONTHNAME}}
|
mw.getContentLanguage():formatDate("F")
os.date("!%B")
|
{{CURRENTMONTHNAMEGEN}}
|
mw.getContentLanguage():formatDate("xg")
os.date("!%B")
|
{{CURRENTMONTHABBREV}}
|
mw.getContentLanguage():formatDate("M")
os.date("!%b")
|
{{CURRENTDAY}}
|
mw.getContentLanguage():formatDate("j")
("%d"):format(os.date("!%d"))
|
{{CURRENTDAY2}}
|
mw.getContentLanguage():formatDate("d")
os.date("!%d")
|
{{CURRENTDOW}}
|
mw.getContentLanguage():formatDate("w")
os.date("!%w")
|
{{CURRENTDAYNAME}}
|
mw.getContentLanguage():formatDate("l")
os.date("!%A")
|
{{CURRENTTIME}}
|
mw.getContentLanguage():formatDate("H:i")
os.date("!%R")
|
{{CURRENTHOUR}}
|
mw.getContentLanguage():formatDate("H")
os.date("!%H")
|
{{CURRENTWEEK}}
|
("%d"):format(mw.getContentLanguage():formatDate("W"))
("%d"):format(os.date("!%V"))
|
{{CURRENTTIMESTAMP}}
|
mw.getContentLanguage():formatDate("YmdHis")
os.date("!%Y%m%d%H%M%S")
|
{{LOCALYEAR}}
|
mw.getContentLanguage():formatDate("Y", nil, true)
os.date("%Y")
|
{{LOCALMONTH}}
{{LOCALMONTH2}}
|
mw.getContentLanguage():formatDate("m", nil, true)
os.date("%m")
|
{{LOCALMONTH1}}
|
mw.getContentLanguage():formatDate("n", nil, true)
("%d"):format(os.date("%m"))
|
{{LOCALMONTHNAME}}
|
mw.getContentLanguage():formatDate("F", nil, true)
os.date("%B")
|
{{LOCALMONTHNAMEGEN}}
|
mw.getContentLanguage():formatDate("xg", nil, true)
os.date("%B")
|
{{LOCALMONTHABBREV}}
|
mw.getContentLanguage():formatDate("M", nil, true)
os.date("%b")
|
{{LOCALDAY}}
|
mw.getContentLanguage():formatDate("j", nil, true)
("%d"):format(os.date("%d"))
|
{{LOCALDAY2}}
|
mw.getContentLanguage():formatDate("d", nil, true)
os.date("%d")
|
{{LOCALDOW}}
|
mw.getContentLanguage():formatDate("w", nil, true)
os.date("%w")
|
{{LOCALDAYNAME}}
|
mw.getContentLanguage():formatDate("l", nil, true)
os.date("%A")
|
{{LOCALTIME}}
|
mw.getContentLanguage():formatDate("H:i", nil, true)
os.date("%R")
|
{{LOCALHOUR}}
|
mw.getContentLanguage():formatDate("H", nil, true)
os.date("%H")
|
{{LOCALWEEK}}
|
("%d"):format(mw.getContentLanguage():formatDate("W", nil, true))
("%d"):format(os.date("%V"))
|
{{LOCALTIMESTAMP}}
|
mw.getContentLanguage():formatDate("YmdHis", nil, true)
os.date("%Y%m%d%H%M%S")
|
Technical metadata
editWikicode | Lua |
---|---|
{{SITENAME}}
|
mw.site.siteName
|
{{SERVER}}
|
mw.site.server
|
{{SERVERNAME}}
|
|
{{DIRMARK}}
|
mw.language.getContentLanguage():getDirMark()
|
{{SCRIPTPATH}}
|
mw.site.scriptPath
|
{{STYLEPATH}}
|
mw.site.stylePath
|
{{CURRENTVERSION}}
|
mw.site.currentVersion
|
{{CONTENTLANGUAGE}}
|
mw.getContentLanguage():getCode()
|
{{PAGEID}}
|
mw.title.getCurrentTitle().id
|
{{PAGESIZE:pagename}}
{{PAGESIZE:pagename|R}}
|
mw.getContentLanguage():formatNum(mw.title.new(pagename):getContent():len())
mw.title.new(pagename):getContent():len()
|
{{PROTECTIONLEVEL:edit}}
{{PROTECTIONLEVEL:action|pagename}}
|
table.concat(mw.title.getCurrentTitle().protectionLevels["edit"])
table.concat(mw.title.new(pagename).protectionLevels[action])
|
[Expensive]{{CASCADINGSOURCES}}
{{CASCADINGSOURCES:pagename}}
|
[Expensive]table.concat(mw.title.getCurrentTitle().cascadingProtection.sources, "|")
table.concat(mw.title.new(pagename).cascadingProtection.sources, "|")
|
{{REVISIONID}}
|
|
{{REVISIONDAY}}
|
|
{{REVISIONDAY2}}
|
|
{{REVISIONMONTH}}
|
|
{{REVISIONMONTH1}}
|
|
{{REVISIONYEAR}}
|
|
{{REVISIONTIMESTAMP}}
|
|
{{REVISIONUSER}}
|
|
{{DISPLAYTITLE:title}}
|
|
{{DEFAULTSORT:sortkey}}
|
Statistics
editWikicode | Lua |
---|---|
{{NUMBEROFPAGES}}
|
mw.site.stats.pages
|
{{NUMBEROFARTICLES}}
|
mw.site.stats.articles
|
{{NUMBEROFFILES}}
|
mw.site.stats.files
|
{{NUMBEROFEDITS}}
|
mw.site.stats.edits
|
{{NUMBEROFVIEWS}}
|
mw.site.stats.views
|
{{NUMBEROFUSERS}}
|
mw.site.stats.users
|
{{NUMBEROFADMINS}}
|
mw.site.stats.admins
|
{{NUMBEROFACTIVEUSERS}}
|
mw.site.stats.activeUsers
|
[Expensive]{{PAGESINCATEGORY:categoryname}}
|
[Expensive]mw.site.stats.pagesInCategory('categoryname')
|
{{NUMBERINGROUP:groupname}}
|
mw.site.stats.usersInGroup('groupname')
|
Page names
editWikicode | Lua |
---|---|
{{FULLPAGENAME}}
{{FULLPAGENAMEE}}
|
mw.title.getCurrentTitle().prefixedText
mw.uri.encode(mw.title.getCurrentTitle().prefixedText, "WIKI")
|
{{PAGENAME}}
{{PAGENAMEE}}
|
mw.title.getCurrentTitle().text
mw.uri.encode(mw.title.getCurrentTitle().text, "WIKI")
|
{{BASEPAGENAME}}
{{BASEPAGENAMEE}}
|
mw.title.getCurrentTitle().baseText
mw.uri.encode(mw.title.getCurrentTitle().baseText, "WIKI")
|
{{ROOTPAGENAME}}
{{ROOTPAGENAMEE}}
|
mw.title.getCurrentTitle().rootText
mw.uri.encode(mw.title.getCurrentTitle().rootText, "WIKI")
|
{{SUBPAGENAME}}
{{SUBPAGENAMEE}}
|
mw.title.getCurrentTitle().subpageText
mw.uri.encode(mw.title.getCurrentTitle().subpageText, "WIKI")
|
{{SUBJECTPAGENAME}}
{{ARTICLEPAGENAME}}
{{SUBJECTPAGENAMEE}}
{{ARTICLEPAGENAMEE}}
|
[Expensive]mw.title.getCurrentTitle().subjectPageTitle
or a non-expensive alternative: mw.title.getCurrentTitle().subjectNsText .. ':' .. mw.title.getCurrentTitle().text
mw.uri.encode(mw.title.getCurrentTitle().subjectPageTitle, "WIKI")
or a non-expensive alternative: mw.uri.encode(mw.title.getCurrentTitle().subjectNsText .. ':' .. mw.title.getCurrentTitle().text, "WIKI")
|
{{TALKPAGENAME}}
{{TALKPAGENAMEE}}
|
[Expensive]mw.title.getCurrentTitle().talkPageTitle
mw.uri.encode(mw.title.getCurrentTitle().talkPageTitle, "WIKI")
|
Namespaces
editWikicode | Lua |
---|---|
{{NAMESPACE}}
{{NAMESPACEE}}
|
mw.title.getCurrentTitle().nsText
mw.uri.encode(mw.title.getCurrentTitle().nsText, "WIKI")
|
{{NAMESPACENUMBER}}
|
mw.title.getCurrentTitle().namespace
|
{{SUBJECTSPACE}}
{{ARTICLESPACE}}
{{SUBJECTSPACEE}}
{{ARTICLESPACEE}}
|
mw.title.getCurrentTitle().subjectNsText
mw.uri.encode(mw.title.getCurrentTitle().subjectNsText, "WIKI")
|
{{TALKSPACE}}
{{TALKSPACEE}}
|
mw.site.namespaces[title.namespace].talk.canonicalName
mw.uri.encode(mw.site.namespaces[title.namespace].talk.canonicalName, "WIKI")
|
URL data
editWikicode | Lua |
---|---|
{{localurl:page|query}}
|
mw.uri.localUrl('page', 'query')
|
{{fullurl:page|query}}
|
mw.uri.fullUrl('page', 'query')
|
{{canonicalurl:page|query}}
|
mw.uri.canonicalUrl('page', 'query')
|
{{filepath:file name}}
|
|
{{urlencode:string|QUERY}}
|
mw.uri.encode('string', QUERY)
|
{{anchorencode:string}}
|
mw.uri.anchorEncode('string')
|
Namespaces
editWikicode | Lua |
---|---|
{{ns:0}}
|
mw.site.namespaces[0].name
|
{{ns:Project}}
|
mw.site.namespaces.Project.name
|
Formatting
editWikicode | Lua |
---|---|
{{formatnum:number}}
|
mw.getContentLanguage():formatNum(number)
|
{{#formatdate:date}}
{{#dateformat:date|format}}
|
|
{{lc:string}}
|
mw.ustring.lower('string')
|
{{lcfirst:string}}
|
mw.getContentLanguage():lcfirst('string')
|
{{uc:string}}
|
mw.ustring.upper('string')
|
{{ucfirst:string}}
|
mw.getContentLanguage():ucfirst('string')
|
{{padleft:xyz|stringlength}}
|
|
{{padright:xyz|stringlength}}
|
Localisation
editWikicode | Lua |
---|---|
{{plural:2|is|are}}
|
mw.getContentLanguage():plural(2, 'is', 'are')
|
{{grammar:N|noun}}
|
mw.getContentLanguage():grammar('N', 'noun')
|
{{gender:username|male|female|neutral}}
|
mw.getContentLanguage():gender('username', { 'male', 'female', 'neutral' })
|
{{int:message}}
{{int:editsectionhint|MediaWiki}}
|
mw.message.new('message'):plain()
mw.message.new('editsectionhint', 'MediaWiki'):plain()
|
Miscellaneous
editWikicode | Lua |
---|---|
{{#language:code|inlanguage}}
|
mw.language.fetchLanguageName('code', 'inLanguage')
|
{{#special:special page name}}
|
|
{{#speciale:special page name}}
|
|
{{#tag:tagname |some text |attribute1=value1 |attribute2=value2}}
|
mw.getCurrentFrame():callParserFunction('#tag', { 'tagname', 'some text', attribute1 = 'value1', attribute2 = 'value2' })
mw.getCurrentFrame():extensionTag('tagname', 'some text', { attribute1 = 'value1', attribute2 = 'value2' })
|