Wiki How: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 edit
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 edit
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 edit
Date and time edit
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 edit
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 edit
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 edit
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 edit
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 edit
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 edit
Wikicode | Lua |
---|---|
{{ns:0}} | mw.site.namespaces[0].name |
{{ns:Project}} | mw.site.namespaces.Project.name |
Formatting edit
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 edit
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 edit
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' }) |
đ„ Top keywords: Akademia e Shkencave e RPS te ShqiperiseAlexandria Ocasio-CortezBilderberg GroupCristiano RonaldoDong XiaowanMinecraftOperation GladioPrimal cutRiot FestStrictly Come Dancing (series 7)Main PageSpecial:SearchWikipedia:Featured picturesList of European Cup and UEFA Champions League finalsCarlo AncelottiUEFA Champions League2024 Indian general electionJude BellinghamBorussia DortmundToni KroosReal Madrid CF2019 Indian general election2024 ICC Men's T20 World CupCleopatraRobert PicktonDonald TrumpDeaths in 20242024 South African general electionEdin TerziÄ (footballer)UFC 302Karim AdeyemiResults of the 2019 Indian general electionFuriosa: A Mad Max SagaYouTubeEminemDani Carvajal2024 UEFA Champions League finalMarco ReusVinĂcius JĂșniorCivil War (film)The First OmenGodzilla Minus OneICC Men's T20 World CupEmre CanKepler's SupernovaEric (miniseries)Jennifer LopezLenny KravitzNeatsville, Kentucky