Wikipedia:Comparable Lua functions to wikitext

From Wikipedia, the free encyclopedia

This page provides a comparative reference of Lua functions and equivalent wikitext parser functions and magic words. It may be particularly helpful to editors transitioning from wikitext to Lua scripting within the Scribunto extension on MediaWiki.

It is somewhat outdated for newer wikitext parser function capabilities.

Parser functions

More information Wikitext, Lua ...
WikitextLua
{{#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}}
Close

Math

Unlike 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.

More information Wikicode, Lua ...
Grouping
WikicodeLua
()()
Close
More information Wikicode, Lua ...
Numbers
WikicodeLua
1234.51234.5
2e32e3
pimath.pi
emath.exp(1)
2+22+2
2-12-1
Close
More information Wikicode, Lua ...
Unary
WikicodeLua
notnot
ceil1.2math.ceil(1.2)
trunc
floor1.2math.floor(1.2)
abs-2math.abs(-2)
exp43math.exp(43)
ln2math.log(2)
cos0.1math.cos(0.1)
tan0.1math.tan(0.1)
acos0.1math.acos(0.1)
asin0.1math.asin(0.1)
atan0.1math.atan(0.1)
Close
More information Wikicode, Lua ...
Binary
WikicodeLua
2^32^3
2*32*3
2/3
2div3
2/3
30mod730%7
+22
-2-2
Close
More information Wikicode, Data type ...
Logic
WikicodeData typeLuaData type
3.0=3Integer (0 or 1)3.0==3Boolean (true or false)
3!=4
3<>4
Integer3~=4Boolean
4>3Integer4>3Boolean
4>=3Integer4>=3Boolean
3<=4Integer3<=4Boolean
3<=4Integer3<=4Boolean
andIntegerandBoolean
orIntegerorBoolean
Close

Magic words

Date and time

More information Wikicode, Lua ...
WikicodeLua
{{CURRENTYEAR}}
mw.getContentLanguage():formatDate("Y")
or
os.date("!%Y")
{{CURRENTMONTH}}
{{CURRENTMONTH2}}
mw.getContentLanguage():formatDate("m")
or
os.date("!%m")
{{CURRENTMONTH1}}
mw.getContentLanguage():formatDate("n")
or
("%d"):format(os.date("!%m"))
{{CURRENTMONTHNAME}}
mw.getContentLanguage():formatDate("F")
or (if the wiki's language is set to English):
os.date("!%B")
{{CURRENTMONTHNAMEGEN}}
mw.getContentLanguage():formatDate("xg")
or (if the wiki's language is set to English):
os.date("!%B")
{{CURRENTMONTHABBREV}}
mw.getContentLanguage():formatDate("M")
or (if the wiki's language is set to English):
os.date("!%b")
{{CURRENTDAY}}
mw.getContentLanguage():formatDate("j")
or
("%d"):format(os.date("!%d"))
{{CURRENTDAY2}}
mw.getContentLanguage():formatDate("d")
or
os.date("!%d")
{{CURRENTDOW}}
mw.getContentLanguage():formatDate("w")
or
os.date("!%w")
{{CURRENTDAYNAME}}
mw.getContentLanguage():formatDate("l")
or (if the wiki's language is set to English):
os.date("!%A")
{{CURRENTTIME}}
mw.getContentLanguage():formatDate("H:i")
or
os.date("!%R")
{{CURRENTHOUR}}
mw.getContentLanguage():formatDate("H")
or
os.date("!%H")
{{CURRENTWEEK}}
("%d"):format(mw.getContentLanguage():formatDate("W"))
or
("%d"):format(os.date("!%V"))
{{CURRENTTIMESTAMP}}
mw.getContentLanguage():formatDate("YmdHis")
or
os.date("!%Y%m%d%H%M%S")
{{LOCALYEAR}}
mw.getContentLanguage():formatDate("Y", nil, true)
or
os.date("%Y")
{{LOCALMONTH}}
{{LOCALMONTH2}}
mw.getContentLanguage():formatDate("m", nil, true)
or
os.date("%m")
{{LOCALMONTH1}}
mw.getContentLanguage():formatDate("n", nil, true)
or
("%d"):format(os.date("%m"))
{{LOCALMONTHNAME}}
mw.getContentLanguage():formatDate("F", nil, true)
or (if the wiki's language is set to English):
os.date("%B")
{{LOCALMONTHNAMEGEN}}
mw.getContentLanguage():formatDate("xg", nil, true)
or (if the wiki's language is set to English):
os.date("%B")
{{LOCALMONTHABBREV}}
mw.getContentLanguage():formatDate("M", nil, true)
or (if the wiki's language is set to English):
os.date("%b")
{{LOCALDAY}}
mw.getContentLanguage():formatDate("j", nil, true)
or
("%d"):format(os.date("%d"))
{{LOCALDAY2}}
mw.getContentLanguage():formatDate("d", nil, true)
or
os.date("%d")
{{LOCALDOW}}
mw.getContentLanguage():formatDate("w", nil, true)
or
os.date("%w")
{{LOCALDAYNAME}}
mw.getContentLanguage():formatDate("l", nil, true)
or (if the wiki's language is set to English):
os.date("%A")
{{LOCALTIME}}
mw.getContentLanguage():formatDate("H:i", nil, true)
or
os.date("%R")
{{LOCALHOUR}}
mw.getContentLanguage():formatDate("H", nil, true)
or
os.date("%H")
{{LOCALWEEK}}
("%d"):format(mw.getContentLanguage():formatDate("W", nil, true))
or
("%d"):format(os.date("%V"))
{{LOCALTIMESTAMP}}
mw.getContentLanguage():formatDate("YmdHis", nil, true)
or
os.date("%Y%m%d%H%M%S")
Close

Technical metadata

More information Wikicode, Lua ...
WikicodeLua
{{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}}
[Expensive]
{{PROTECTIONLEVEL:action|pagename}}
table.concat(mw.title.getCurrentTitle().protectionLevels["edit"])
[Expensive]
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}}
Close

Statistics

More information Wikicode, Lua ...
WikicodeLua
{{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')
Close

Page names

More information Wikicode, Lua ...
WikicodeLua
{{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
[Expensive]
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")
Close

Namespaces

More information Wikicode, Lua ...
WikicodeLua
{{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")
Close

URL data

More information Wikicode, Lua ...
WikicodeLua
{{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')
Close

Namespaces

More information Wikicode, Lua ...
WikicodeLua
{{ns:0}}
mw.site.namespaces[0].name
{{ns:Project}}
mw.site.namespaces.Project.name
Close

Formatting

More information Wikicode, Lua ...
WikicodeLua
{{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}}
Close

Localisation

More information Wikicode, Lua ...
WikicodeLua
{{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()
Close

Miscellaneous

More information Wikicode, Lua ...
WikicodeLua
 {{#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' })
Close

Related Articles

Wikiwand AI