Aller au contenu

Module:Fabricant de tables

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 17 août 2015 à 10:32 et modifiée en dernier par Zolo (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[créer] [purger]
local simpleTable = {}

function simpleTable:new()
	local obj = {}
	obj.rows = {}
	setmetatable(obj, simpleTable)
	self.__index = self
	return obj
end

function simpletTable:sortRows() -- à améliorer
	table.sort(
		self.rows,
		function(a, b) if (a.sortkey or b.sortkey) then return a.sortkey < b.sortkey end end
	) 
end

function simpleTable:addRow(vals, positionkey)
	table.insert(self.rows, vals, positionkey) -- insérée sans tri, peut-être devrait-on la mettre directement à sa place ?
end

function simpleTable:addHeaders(vals)
	self.headers = vals
end

function simpleTable:addClass(class)
	self.class = class
end

function simpleTable:addTitle(title)
	self.title = title
end

function simpleTable:addSource(src)
	self.source = src
end

function simpleTable:show()
	local frame = mw.getCurrentFrame()
	local tab =  mw.html.create('table'):addClass(self.class or 'wikitable sortable')
	if self.headers then
		local h = mw.html.create('tr')
		for i, j in pairs(self.headers) do
			h:tag('th'):wikitext(j):done()
		end
		tab:node(h):done()
	end
	self.rows = sortrows(self.rows)
	for i, rowvals in pairs(self.rows) do
		local newrow = mw.html.create('tr')
		for j, val in pairs(rowvals) do
			newrow:tag('td'):wikitext(val):done()
		end
		tab:node(newrow):done()
	end
	tab:done()
	return '<table><tr><th>' .. (self.title or '') .. '</th></tr><tr><td>' .. tostring(tab) .. '<small>' .. (self.source or '') .. '</small></td></tr></table>'
end
return simpleTable