Jump to content
Wikimedia Meta-Wiki

Module:Gallery

From Meta, a Wikimedia project coordination wiki
Module documentation

Implements {{Gallery}}

The above documentation is transcluded from Module:Gallery/doc. (edit | history)
Editors can experiment in this module’s sandbox (create | mirror) and testcases (create) pages.
Please add categories to the /doc subpage. Subpages of this module.

 -- This module implements {{gallery}}

 localp={}

 localtemplatestyles='Template:Gallery/styles.css'
 localyesno=require('Module:Yesno')

 localfunctiontrim(s)
 returnmw.ustring.gsub(mw.ustring.gsub(s,'%s',' '),'^%s*(.-)%s*$','%1')
 end

 localtracking,preview

 localfunctioncheckarg(k,v)
 ifkandtype(k)=='string'then
 ifk=='align'ork=='state'ork=='style'ork=='caption'ork=='title'or
 k=='width'ork=='height'ork=='lines'ork=='whitebg'ork=='class'or
 k=='mode'ork=='footer'ork=='perrow'ork=='noborder'or
 k:match('^alt%d+$')ork:match('^%d+$')then
 -- valid
 elseifk=='captionstyle'then
 ifnotv:match('^text%-align%s*:%s*center[;%s]*$')then
 table.insert(tracking,'[[Category:Pages using gallery with the captionstyle parameter]]')
 end
 else
 -- invalid
 localvlen=mw.ustring.len(k)
 k=mw.ustring.sub(k,1,(vlen<25)andvlenor25)
 k=mw.ustring.gsub(k,'[^%w\-_ ]','?')
 table.insert(tracking,'[[Category:Pages using gallery with unknown parameters|'..k..']]')
 table.insert(preview,'"'..k..'"')
 end
 end
 end

 functionp.gallery(frame)
 -- If called via #invoke, use the args passed into the invoking template.
 -- Otherwise, for testing purposes, assume args are being passed directly in.
 localorigArgs=(type(frame.getParent)=='function')andframe:getParent().argsorframe

 -- ParserFunctions considers the empty string to be false, so to preserve the previous 
 -- behavior of {{gallery}}, change any empty arguments to nil, so Lua will consider
 -- them false too.
 localargs={}
 tracking,preview={},{}
 fork,vinpairs(origArgs)do
 ifv~=''then
 args[k]=v
 checkarg(k,v)
 end
 end

 if(args.modeor'')=='packed'and(args.alignor'')==''then
 args.align='center'
 end

 localtbl=mw.html.create('div')
 tbl:addClass('mod-gallery')

 ifargs.statethen
 tbl
 :addClass('mod-gallery-collapsible')
 :addClass('collapsible')
 :addClass(args.state)
 end

 ifargs.stylethen
 tbl:cssText(args.style)
 else
 tbl:addClass('mod-gallery-default')
 end

 ifargs.alignthen
 tbl:addClass('mod-gallery-'..args.align:lower())
 end

 ifargs.classthen
 tbl:addClass(args.class)
 end

 ifargs.titleorargs.captionthen
 tbl:tag('div')
 :addClass('title')
 :tag('div')
 :wikitext('<dl><dd>'..(args.titleorargs.caption)..'</dd></dl>')
 end

 localgargs={}
 gargs['class']='nochecker'..(args.noborderand''or' bordered-images')
 gargs['widths']=tonumber(args.width)or180
 gargs['heights']=tonumber(args.height)or180
 gargs['style']=args.captionstyle
 gargs['perrow']=args.perrow
 gargs['mode']=args.mode
 ifyesno(args.whitebgor'yes')then
 gargs['class']=gargs['class']..' whitebg'
 end

 localgallery={}

 localimageCount=math.ceil(#args/2)

 fori=1,imageCountdo
 localimg=trim(args[i*2-1]or'')
 localcaption=trim(args[i*2]or'')
 localalt=trim(args['alt'..i]or'')
 ifimg~=''then
 table.insert(gallery,img..(alt~=''and('|alt='..alt)or'')..'|'..caption)
 end
 end

 tbl:tag('div')
 :addClass('main')
 :tag('div')
 :wikitext(
 frame:extensionTag{name='gallery',content='\n'..table.concat(gallery,'\n'),args=gargs}
 )

 ifargs.footerthen
 tbl:tag('div')
 :addClass('footer')
 :tag('div')
 :wikitext('<dl><dd>'..args.footer..'</dd></dl>')
 end

 localtrackstr=(#tracking>0)andtable.concat(tracking,'')or''
 if#preview>0andframe:preprocess("{{REVISIONID}}")==""then
 trackstr=tostring(mw.html.create('div')
 :addClass('hatnote')
 :css('color','red')
 :tag('strong'):wikitext('Warning:'):done()
 :wikitext('Unknown parameters: '..table.concat(preview,'; ')))
 end

 returnframe:extensionTag{name='templatestyles',args={src=templatestyles}}..tostring(tbl)..trackstr
 end

 returnp

AltStyle によって変換されたページ (->オリジナル) /