Module:Settlement Survival

local getArgs = require('Module:Arguments').getArgs

local p = {}

local args = {} local root local buildingData = mw.loadData( 'Module:Settlement Survival/buildingData' )

local function addRow( rowArgs ) -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. if rowArgs.header then root :tag( 'tr' ) :addClass( rowArgs.rowclass ) :tag( 'th' ) :attr( 'colspan', 2 ) :css( 'text-align', 'center' ) :cssText( rowArgs.headerstyle ) :wikitext( rowArgs.header ) elseif rowArgs.data then local row = root:tag( 'tr' ):addClass( rowArgs.rowclass )

if rowArgs.label then row :tag( 'th' ) :cssText( rowArgs.labelstyle ) :wikitext( rowArgs.label ) :done end

local dataCell = row:tag( 'td' ) if not rowArgs.label then dataCell :attr( 'colspan', 2 ) :cssText( rowArgs.rowstyles or 'text-align: center;' ) end dataCell :wikitext( rowArgs.data ) end end

local function renderTitle( entry ) if buildingData[entry]["Name"] then root :tag( 'tr' ) :tag( 'th' ) :attr( 'colspan', 2 ) :addClass( 'infobox_heading' ) :wikitext( buildingData[entry]["Name"] ) end end

local function renderImage( entry ) if buildingData[entry]["Icon"] then local data = mw.html.create:wikitext( '' ) addRow( { data = tostring( data ) } ) end end

local function renderRows( entry ) addRow( {label = 'ID', data = buildingData[entry]["ID"] } ) addRow( {label = 'Max Workers', data = buildingData[entry]["WorkerRange"]["Upper"] } ) end

local function _building( entry ) root = mw.html.create( 'table' )

root :addClass( 'infobox' ) :addClass( 'bordered' )

renderTitle( entry ) renderImage( entry ) renderRows( entry )

return tostring( root ) .. buildingData[entry]["Des"] end

function p.building( frame ) args = getArgs( frame )

return _building( args[1] ) end

return p