The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Documentation for this module may be created at Module:Endangered Languages Project/doc

--[[
	Module:Endangered Languages Project
--]]

local p = {}

local elpf = "http://www.endangeredlanguages.com/lang/" -- or get P1630

local make_display = function(elpc, elpn, idx)
	local pfargs = { "ref", "[" .. elpf .. elpc .. " Endangered Languages Project data for " .. elpn .. "].", name="ELP" .. (idx or "") }
	local ref = mw.getCurrentFrame():callParserFunction{ name = "#tag", args = pfargs }
	return "[" .. elpf .. elpc .. " " .. elpn ..	"]" .. ref
end

local tidy_param = function(param)
	if param == "" then param = nil end
	return param
end

p.make_entry = function(frame)
	local elpname = tidy_param(frame.args.elpname)
	local elpcode = tidy_param(frame.args.elpcode)
	local qid = tidy_param((frame.args.qid or ""):upper()) or mw.wikibase.getEntityIdForCurrentPage()

	local out = {}
	if elpcode and elpname then
		out[#out+1] = make_display(elpcode, elpname)
	else
		if qid then
			local props = mw.wikibase.getBestStatements(qid, "P2192")
			if props[1] then
				for i, v in ipairs(props) do
					local elpc = elpcode or v.mainsnak.datavalue and v.mainsnak.datavalue.value
					local elpn = elpname or v.qualifiers["P1810"][1].datavalue and v.qualifiers["P1810"][1].datavalue.value
					if elpc and elpn then
						out[#out+1] = make_display(elpc, elpn, i)
					end
				end
			elseif elpcode or elpname then
				return (elpcode or "") .. (elpname or "") .. "[[Category:Language articles with missing ELP parameters]]"
			end
		else
			if elpcode or elpname then
				return (elpcode or "") .. (elpname or "") .. "[[Category:Language articles with missing ELP parameters]]"
			end
		end
	end

	local ret = ""
	if #out > 1 then
		ret = frame:expandTemplate{title = "ubl", args = out}
	else
		ret = out[1]
	end

	return ret
end

return p