파서 함수를 루아에서는 어떻게 구현하는지에 대한 설명문서입니다.
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 |
|
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}} |
|
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