Ir al contenido

Módulo:Tree chart

De Wikipedia, la enciclopedia libre
Icono de documentación de módulo Documentación del módulo[ver] [editar] [historial] [purgar]

A continuación se muestra la documentación transcluida desde la subpágina /doc. [salta a la caja de código]


Uso

Implementa la Plantilla:Tree chart; la documentación completa sobre la sintaxis del gráfico existe en Plantilla:Tree chart/doc

Este módulo utiliza la biblioteca mw.html para crear filas de celdas de tabla cuyos bordes dibujan líneas para mostrar las relaciones entre los elementos. Cuando un parámetro sin nombre coincide con una clave en el Módulo:Tree chart/data, el módulo creará un bloque con estilos tal como se define en la tabla. Cada clave de la tabla tiene una subtabla con 0, 1 o 2 claves propias: t para la fila "superior" y b para la "fila inferior". Cualquier parámetro sin nombre cuyo valor no exista en la tabla se usará para crear elementos en el gráfico, y se buscarán parámetros con nombre adicionales para ese valor.

Errores

Con la migración a Lua, se han eliminado los siguientes errores:

  • "Template:Chart/cellb" - causado por algún problema con {{!xt}} siendo usado en vez de {{xt}}.
  • "Template:Chart/celltTemplate:Chart/cellb" - causado por algún problema con {{!xt}} siendo usado en vez de {{xt}}, o {{!xt}} en vez de {{xt}}.
  • "Template:Chart/celly tTemplate:Chart/celly b" - causado por algún problema con {{!xt}} siendo usado en vez de {{xt}}.

Esta documentación está transcluida desde Módulo:Tree chart/doc.
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. Subpáginas de este módulo.

require('strict')

local p = {}

local cells = mw.loadData('Module:Tree chart/data')

function p._main(cell_args)
	local ret = mw.html.create()
	local top = ret:tag('tr')
						:css{ height = '1px',
								['text-align'] = 'center' }
	local bottom = ret:tag('tr')
						:css{ height = '1px',
								['text-align'] = 'center' }
	for _, v in ipairs(cell_args) do
		if type(v) == 'string' then
			top:wikitext(cells[v].t)
			bottom:wikitext(cells[v].b)
		else
			top:tag('td')
				:attr{ colspan = v.colspan or cell_args.colspan or 6,
						rowspan = v.rowspan or cell_args.rowspan or 2 }
				:css{ padding = '0.2em',
						border = (v.border or cell_args.border or '2') .. 'px solid black' }
				:cssText(v.boxstyle or cell_args.boxstyle)
				:wikitext(v.text)
		end
	end
	return tostring(ret)
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Tree chart', trim = false, removeBlanks = false})
	local cell_args = {
		colspan = args.colspan,
		rowspan = args.rowspan,
		border = args.border,
		boxstyle = args.boxstyle
	}
	for _, val in ipairs(args) do
		local trimmedVal = val:match('^%s*(.-)%s*$')
		if trimmedVal == '' then
			trimmedVal = '$'
		end
		if cells[trimmedVal] then
			table.insert(cell_args, trimmedVal)
		else
			-- Unnamed params behave weirdly
			-- white space at the front counts for param_{{{1}}}, but not whitespace at the end, so remove it
			local rightTrimmedVal = val:gsub('%s+$','')
			table.insert(cell_args, {
				text = args[trimmedVal] or ('{{{'..trimmedVal..'}}}'),
				colspan = args['colspan_'..rightTrimmedVal],
				rowspan = args['rowspan_'..rightTrimmedVal],
				border = args['border_'..rightTrimmedVal],
				boxstyle = args['boxstyle_'..rightTrimmedVal]
			})
		end
	end
	
	return p._main(cell_args)
end

return p