파서 함수를 루아에서는 어떻게 구현하는지에 대한 설명문서입니다.
파서 함수
| 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 |
|
| {{#switch: {{{1}}} | foo = Foo | Bar }} |
local cases = {
default = "Bar",
foo = "Foo",
}
local pframe = frame: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 |
|
Math
Unlike in wikicode, lua does not use functions like ifexpr and expr. Add the lua operators and functions straight into your module.
Grouping
Numbers
| Wikicode |
Lua
|
| 1234.5 |
1234.5
|
| 2e3 |
2e3
|
| pi |
math.pi
|
| e |
|
| 2+2 |
2+2
|
| 2-1 |
2-1
|
Unary
| 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)
|
Binary
| Wikicode |
Lua
|
| 2^3 |
2^3
|
| 2*3 |
2*3
|
2/3 2div3 |
2/3
|
| 30mod7 |
30%7
|
| +2 |
2
|
| -2 |
-2
|
Logic
| 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}} |
|
| {{CURRENTMONTH}} |
|
| {{CURRENTMONTHNAME}} |
mw.getContentLanguage():formatDate( 'F' )
|
| {{CURRENTMONTHNAMEGEN}} |
mw.getContentLanguage():formatDate( 'xg' )
|
| {{CURRENTMONTHABBREV}} |
mw.getContentLanguage():formatDate( 'M' )
|
| {{CURRENTDAY}} |
|
| {{CURRENTDAY2}} |
|
| {{CURRENTDOW}} |
|
| {{CURRENTDAYNAME}} |
mw.getContentLanguage():formatDate( 'l' )
|
| {{CURRENTTIME}} |
|
| {{CURRENTHOUR}} |
|
| {{CURRENTWEEK}} |
mw.getContentLanguage():formatDate( 'W' )
|
| {{CURRENTTIMESTAMP}} |
|
Technical metadata
| Wikicode |
Lua
|
| {{SITENAME}} |
|
| {{SERVER}} |
|
| {{SERVERNAME}} |
|
| {{DIRMARK}} |
mw.language.getContentLanguage():getDirMark()
|
| {{SCRIPTPATH}} |
|
| {{STYLEPATH}} |
|
| {{CURRENTVERSION}} |
|
| {{CONTENTLANGUAGE}} |
mw.getContentLanguage():getCode()
|
| {{PAGEID}} |
mw.title.getCurrentTitle().id
|
| {{PAGESIZE:page name}} |
|
| {{PROTECTIONLEVEL:edit}} |
[Expensive]local protection = mw.title.getCurrentTitle().protectionLevels["edit"]
table.concat(protection)
|
| {{REVISIONID}} |
|
| {{REVISIONDAY}} |
|
| {{REVISIONDAY}} |
|
| {{REVISIONMONTH}} |
|
| {{REVISIONMONTH1}} |
|
| {{REVISIONYEAR}} |
|
| {{REVISIONTIMESTAMP}} |
|
| {{REVISIONUSER}} |
|
| {{DISPLAYTITLE:title}} |
|
| {{DEFAULTSORT:정렬 키}} |
frame:preprocess{text = "{{DEFAULTSORT:"..'정렬 키'.."}}"}
|
Statistics
| Wikicode |
Lua
|
| {{NUMBEROFPAGES}} |
|
| {{NUMBEROFARTICLES}} |
|
| {{NUMBEROFFILES}} |
|
| {{NUMBEROFEDITS}} |
|
| {{NUMBEROFVIEWS}} |
|
| {{NUMBEROFUSERS}} |
|
| {{NUMBEROFADMINS}} |
|
| {{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}} |
mw.title.getCurrentTitle().prefixedText
|
| {{PAGENAME}} |
mw.title.getCurrentTitle().text
|
| {{BASEPAGENAME}} |
mw.title.getCurrentTitle().baseText
|
| {{SUBPAGENAME}} |
mw.title.getCurrentTitle().subpageText
|
| {{SUBJECTPAGENAME}} |
[Expensive]mw.title.getCurrentTitle().subjectPageTitle
or an non expensive alternative:
mw.title.getCurrentTitle().subjectNsText .. ":" .. mw.title.getCurrentTitle().text
|
| {{TALKPAGENAME}} |
[Expensive]mw.title.getCurrentTitle().talkPageTitle
|
Namespaces
| Wikicode |
Lua
|
| {{NAMESPACE}} |
mw.title.getCurrentTitle().nsText
|
| {{NAMESPACENUMBER}} |
mw.title.getCurrentTitle().namespace
|
| {{SUBJECTSPACE}} |
mw.title.getCurrentTitle().subjectNsText
|
| {{TALKSPACE}} |
mw.title.getCurrentTitle().talkPageTitle
|
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 )
|
| #dateformat |
|
| {{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}} |
mw.message.new( 'message' ):plain()
|
| {{int:editsectionhint|MediaWiki}} |
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
}} |
frame:extensionTag( 'tagname', 'some text', {
attribute1 = 'value1', attribute2 = 'value2'
} )
|
틀:Wikipedia technical help