La documentació d'ús d'aquest mòdul es pot crear a Mòdul:diccionaris/ús

local p = {}
local encode = require("Module:urlencode").encode

-- ca-dicc
local function dalg_link(id)
	return "[http://www.algueres.net/busca.aspx?busca=" .. id .. ' <span title="Diccionari d\'Alguerés">DAlg</span>]'
end

local function dcvb_link(id)
	return "[https://dcvb.iec.cat/results.asp?word=" .. id .. '&re=true <span title="Diccionari català-valencià-balear, Alcover-Moll">DCVB</span>]'
end

local function decat_link(id)
	if string.match(id, "^%d+$") then
		return "[https://decat.iec.cat/veuredoc.asp?id=" .. id .. ' <span title="Diccionari etimològic i complementari de la llengua catalana">DECat</span>]'
	else
		return "[https://decat.iec.cat/llista_termes.asp?limit=1&terme=" .. id .. '&button=Cercar <span title="Diccionari etimològic i complementari de la llengua catalana">DECat</span>]'
	end
end

local function dem_link(id)
	return "[https://www.demcat.cat/ca/diccionaris-portal/183/search/" .. id .. '?type=basic&condition=match <span title="Diccionari enciclopèdic de medicina">DEM</span>]'
end

local function diec_link(id)
	return "[https://dlc.iec.cat/Results?DecEntradaText=" .. id .. '&AccentSen=True <span title="Diccionari de l\'Institut d\'Estudis Catalans">DIEC</span>]'
end

local function diec1_link(id)
	return "[https://bdlex.iec.cat/scripts/Qorth1.asp?diccFixat=@DIEC1&orthorig=" .. id .. ' <span title="Diccionari de l\'Institut d\'Estudis Catalans 1995">DIEC1</span>]'
end

local function dnv_link(id)
	return "[http://www.avl.gva.es/lexicval/xhtml/dnv.xhtml?paraula=" .. id .. ' <span title="Diccionari normatiu valencià">DNV</span>]'
end

local function dsff_link(id)
	return "[https://dsff.uab.cat/cerca?mode=Cont%C3%A9&frase=" .. id .. ' <span title="Diccionari de sinònims de frases fetes">DSFF</span>]'
end

local function eeif_link(id)
	return "[http://www.eeif.cat/veus/" .. id .. '/ <span title="Enciclopèdia d\'Eivissa i Formetera">EEiF</span>]'
end

local function esadir_link(id)
	return "[http://esadir.cat/Cerca?cerca=" .. id .. '&criteri=General <span title="Portal lingüístic de la Corporació Catalana de Mitjans Audiovisuals">ésAdir</span>]'
end

local function gdlc_link(id)
	return "[https://www.diccionari.cat/cerca/gran-diccionari-de-la-llengua-catalana?search_api_fulltext_cust=" .. id .. ' <span title="Gran Diccionari de la llengua catalana">GDLC</span>]'
end

local function gec_link(id)
	return '[https://www.enciclopedia.cat/cerca/gec?search_api_fulltext=' .. id .. '&field_faceta_cerca_1=938 <span title="Gran Enciclopèdia Catalana">GEC</span>]'
end

local function oncat_link(id)
	if string.match(id, "^%d+$") then
		return "[https://oncat.iec.cat/veuredoc.asp?id=" .. id .. ' <span title="Onomasticon Cataloniae">OnCat</span>]'
	else
		return "[https://oncat.iec.cat/llista_termes.asp?limit=1&terme=" .. id .. '&button=Cercar <span title="Onomasticon Cataloniae">OnCat</span>]'
	end
end

local function optimot_link(id)
	return "[https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?action=Principal&method=cerca_generica&tipusCerca=cerca.queSignifica&input_cercar=" .. id .. " <span title=\"Optimot, consultes lingüístiques\">Optimot</span>]"
end

local function ptv_link(id)
	return "[http://www.avl.gva.es/lexicval/ptv?paraula=" .. id .. ' <span title="Portal Terminològic Valencià">PTV</span>]'
end

local function termcat_link(id)
	return "[http://www.termcat.cat/ca/cercaterm/" .. id .. '?type=advanced&language=ca&condition=match&fields=denominacio <span title="Termcat, centre de terminologia">Termcat</span>]'
end

-- csc-dicc
local function sematos_link(id)
	return "[http://www.sematos.eu/lsc-r-" .. id .. "-ca.html Sematos]"
end

local function wikisign_link(id)
	return "[http://lsc.wikisign.org/wiki/" .. id .. ' Wikisign]'
end

-- en-dicc
local function cambridge_link(id)
	return "[https://dictionary.cambridge.org/dictionary/english/" .. id .. ' <span title="Cambridge English Dictionary">Cambridge</span>]'
end

local function collins_link(id)
	return "[https://www.collinsdictionary.com/dictionary/english/" .. id .. ' <span title="Collins English Dictionary">Collins</span>]'
end

local function dict_link(id)
	return "[https://www.dictionary.com/browse/" .. id .. ' <span title="Dictionary.com">Dict</span>]'
end

local function merriam_link(id)
	return "[https://www.merriam-webster.com/dictionary/" .. id .. ' <span title="Merriam-Webster Dictionary">Merriam</span>]'
end

local function urban_link(id)
	return "[https://www.urbandictionary.com/define.php?term=" .. id .. ' <span title="Urban Dictionary">Urban</span>]'
end

-- roa-oca-dicc
local function cival_link(id)
	return "[http://cival.avl.gva.es/cival/buscador.jsp?paraula=" .. id .. ' <span title="Corpus Informatitzat del Valencià">CIVAL</span>]'
end

local function dtca_link(id)
	return "[http://www.ub.edu/diccionari-dtca/?txt=" .. id .. ' <span title="Diccionari de Textos Catalans Antics">DTCA</span>]'
end

local function faraudo_link(id)
	return "[http://www.iec.cat/faraudo/results.asp?search=" .. id .. '&optCriteria=0&optSearchType=1 <span title="Vocabulari de la llengua catalana medieval, Lluís Faraudo">Faraudo</span>]'
end

-- funcions xx_diccionaris

local function process(frame, args, dicos)
	local pagename = mw.title.getCurrentTitle().subpageText
	local params = {}
	local valid_dict = {}
	for _, dic in ipairs(dicos) do
		valid_dict[dic[1]] = true
	end
	for name, val in pairs(args) do
		if type(name) == "number" then
			if valid_dict[val] and not params[val] then
				params[val] = pagename
			elseif valid_dict[val] and params[val] then
				error("El paràmetre \"" .. val .. "\" està duplicat.")
			else
				error("El paràmetre \"" .. val .. "\" no és usat per aquesta plantilla.")
			end
		else
			if valid_dict[name] and not params[name] then
				params[name] = val
			elseif valid_dict[name] and params[name] then
				error("El paràmetre \"" .. name .. "\" està duplicat.")
			else
				error("El paràmetre \"" .. name .. "\" no és usat per aquesta plantilla.")
			end
		end
	end
	
	local links = {}
	for _, dic in ipairs(dicos) do
		if params[dic[1]] then
			if dic[3] == 'hyphens' then
				table.insert(links, dic[2](encode({["args"] = {params[dic[1]], "hyphens"}})))
			elseif dic[3] == 'latin1' then
				table.insert(links, dic[2](encode({["args"] = {params[dic[1]], "ISO 8859-1"}})))
			else
				table.insert(links, dic[2](frame:callParserFunction('urlencode', params[dic[1]])))
			end
		end
	end
				
	return table.concat(links, ", ")
end

function p.ca_diccionaris(frame)
	local args = frame:getParent().args
	local dicos = {
		{'diec', diec_link, ''},
		{'diec1', diec1_link, ''},
		{'dnv', dnv_link, ''},
		{'gdlc', gdlc_link, ''},
		{'dcvb', dcvb_link, 'latin1'},
		{'decat', decat_link, 'latin1'},
		{'oncat', oncat_link, 'latin1'},
		{'termcat', termcat_link, ''},
		{'ptv', ptv_link, ''},
		{'gec', gec_link, ''},
		{'dem', dem_link, ''},
		{'dsff', dsff_link, ''},
		{'optimot', optimot_link, 'latin1'},
		{'esadir', esadir_link, ''},
		{'eeif', eeif_link, ''},
		{'dalg', dalg_link, ''},
	}
	
	return "''Obres de referència'': " .. process(frame, args, dicos)
end

function p.csc_diccionaris(frame)
	local args = frame:getParent().args
	local dicos = {
		{'wikisign', wikisign_link, 'hyphens'},
		{'sematos', sematos_link, 'hyphens'},
	}
	
	return "''Altres llocs'': " .. process(frame, args, dicos)
end

function p.en_diccionaris(frame)
	local args = frame:getParent().args
	local dicos = {
		{'merriam', merriam_link, ''},
		{'collins', collins_link, ''},
		{'cambridge', cambridge_link, ''},
		{'dict', dict_link, ''},
		{'urban', urban_link, ''},
	}
	
	return "''Obres de referència'': " .. process(frame, args, dicos)
end

function p.roaoca_diccionaris(frame)
	local args = frame:getParent().args
	local dicos = {
		{'dcvb', dcvb_link, 'latin1'},
		{'faraudo', faraudo_link, 'latin1'},
		{'dtca', dtca_link, ''},
		{'gec', gec_link, ''},
		{'cival', cival_link, ''},
	}
	
	return "''Obres de referència'': " .. process(frame, args, dicos)
end

return p