-- This module implements {{side box}}.localyesno=require('Module:Yesno')localp={}functionp.main(frame)localorigArgs=frame:getParent().argslocalargs={}fork,vinpairs(origArgs)dov=v:match('%s*(.-)%s*$')ifv~=''thenargs[k]=vendendreturnp._main(args)endfunctionp._main(args)localdata=p.makeData(args)returnp.renderSidebox(data)endfunctionp.makeData(args)localdata={}-- Main table classesdata.classes={}ifyesno(args.metadata)~=falsethentable.insert(data.classes,'metadata')endifargs.positionandargs.position:lower()=='left'thentable.insert(data.classes,'mbox-small-left')elsetable.insert(data.classes,'mbox-small')endtable.insert(data.classes,args.class)-- Imageifargs.imageandargs.image~='none'thendata.image=args.imageend-- Copy over data that doesn't need adjustinglocalargsToCopy={-- Styles'style','textstyle',-- Above row'above','abovestyle',-- Body row'text','imageright',-- Below row'below',}fori,keyinipairs(argsToCopy)dodata[key]=args[key]endreturndataendfunctionp.renderSidebox(data)-- Renders the sidebox HTML.-- Table rootlocalroot=mw.html.create('table')fori,classinipairs(data.classesor{})doroot:addClass(class)endroot:css{border='1px solid #aaa',['background-color']='#f9f9f9'}ifdata.stylethenroot:cssText(data.style)end-- The "above" rowifdata.abovethenlocalaboveCell=root:newline():tag('tr'):tag('td')aboveCell:attr('colspan',data.imagerightand3or2):addClass('mbox-text')ifdata.textstylethenaboveCell:cssText(data.textstyle)endifdata.abovestylethenaboveCell:cssText(data.abovestyle)endaboveCell:newline():wikitext(data.above)end-- The body rowlocalbodyRow=root:newline():tag('tr'):newline()ifdata.imagethenbodyRow:tag('td'):addClass('mbox-image'):wikitext(data.image)elsebodyRow:tag('td'):css('width','1px')endlocaltextCell=bodyRow:newline():tag('td')textCell:addClass('mbox-text plainlist')ifdata.textstylethentextCell:cssText(data.textstyle)endtextCell:wikitext(data.text)ifdata.imagerightthenbodyRow:newline():tag('td'):addClass('mbox-imageright'):wikitext(data.imageright)end-- The below rowifdata.belowthenlocalbelowCell=root:newline():tag('tr'):tag('td')belowCell:attr('colspan',data.imagerightand3or2):addClass('mbox-text')ifdata.textstylethenbelowCell:cssText(data.textstyle)endbelowCell:wikitext(data.below)endreturntostring(root)endreturnp