Module:Endangered Languages Project: Difference between revisions
>The Earwig (removed <code> formatting, since they seem to be language names instead of codes in any usual sense (the proper code is an integer in the URL, but we don't need to display that to the reader)) |
m (1 revision imported) |
Latest revision as of 20:22, 25 February 2021
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