EunuchWiki:Comparable Lua functions to wikitext
From EunuchWiki
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
Wikitext | 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
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.
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
Date and time
Wikicode | 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
Wikicode | 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
Wikicode | 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
Wikicode | 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
Wikicode | 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
Wikicode | 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
Wikicode | Lua |
---|---|
{{ns:0}} |
mw.site.namespaces[0].name |
{{ns:Project}} |
mw.site.namespaces.Project.name |
Formatting
Wikicode | 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
Wikicode | 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
Wikicode | 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' }) |