Módulo:Data

Documentación del módulo


Uso

Este módulo permite cargar distintos tipos de datos específicos para cada obra, dependiendo del uso. Por el momento solo se utiliza en la plantilla {{abbr}}.

La plantilla, como ahora, toma hasta 2 parámetros sin nombre.

1
la forma abreviada
2
la abreviatura.

La diferencia, es que se puede precargar una lista de las abreviaturas que se encuentran en una obra, principalmente diccionarios.

Para poder reconocerlas, tanto el nombre del índice como el de la página donde se hará la transclusión deben estar en la tabla de la función getData, y apuntar a una subpágina válida. Ejemplos de subpáginas pueden ver acá.

Variables

Pueden asignarse ciertas variables que modifiquen el funcionamiento de las plantillas. Deben ingresarse de la misma manera que las abreviaturas, como acá

  • |CASE_INSENSIBLE=: si su valor es igual a true las abreviaturas no distinguen entre mayúscula y minúscula: Anim. es lo mismo que anim..
Módulos precargados
Esta documentación está transcluida desde Módulo:Data/doc.
Los editores pueden experimentar en la zona de pruebas
Por favor, añade las categorías a la subpágina de documentación.
(subpáginas - enlaces)

local p = {} 
local str = require('Módulo:String')
function getData (name) -- ['Nombre de la página (base)'] = 'subpágina de este módulo con los datos a cargar' -- 
	return mw.loadData('Module:Data/Data')[name]
end

function p.abbrev( frame )
    local args = {}
	local title = mw.title.getCurrentTitle()
	local baseTitle = title.rootText
	local abbrevs = {}

	--plantilla
	for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla
		args[k] = v  
	end
	
	local tag = mw.html.create('abbr'):addClass('ws-abbr')
	
	tag:wikitext(args[1])
	
	-- Modo simple, con dos parámetros
	if args[2] then
		tag:attr('title', (args[2] or  ''))
		return tostring(tag)
	end
	
	-- Modo inteligente, con un parámetro
	local datapage = getData(baseTitle)
	if datapage then
		abbrevs = mw.loadData('Module:Data/'..datapage)	--carga la tabla con los datos de las abreviaturas

		--cargar variables
		CASE_INSENSIBLE = abbrevs['CASE_INSENSIBLE'] --variable de sensibilidad mayúscula-minúscula
		if CASE_INSENSIBLE then args[1] = mw.ustring.lower(args[1])	end
	
		tag:attr('title', (args[2] or abbrevs[args[1]] or  ''))
	end

	return tostring(tag)
end

function p.bib( frame )
	local args = {}
	local title = mw.title.getCurrentTitle()
	local baseTitle = title.rootText
	local abbrevs = {}

	--plantilla
	for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla
		args[k] = v  
	end
	
	local tag = mw.html.create('span'):addClass('ws-citation')
	local text = args[1]
	-- Modo simple, con dos parámetros
	if args[2] then
		tag:wikitext('[['..args[2]..'|'..text..']]')
		return tostring(tag)
	end
	
	-- Modo inteligente, con un parámetro
	local datapage = getData(baseTitle)
	if datapage then
		local bibs = mw.loadData('Module:Data/'..datapage)	--carga la tabla con los datos de las abreviaturas

		--cargar variables
		CASE_INSENSIBLE = bibs['CASE_INSENSIBLE'] --variable de sensibilidad mayúscula-minúscula
		if CASE_INSENSIBLE then args[1] = mw.ustring.lower(args[1])	end
		local key = str.delink(args[1])
		args[2] = bibs[key]
	end
	
	if args[2] then
		tag:wikitext('[['..args[2]..'|'..text..']]')
		return tostring(tag)
	end
	tag:wikitext(text)
	return tostring(tag)
end
return p